it-swarm-vi.com

Lập trình trò chơi: C # hay C ++?

Tôi đã quyết định những gì tôi thực sự muốn là làm lập trình trò chơi. Vì vậy, câu hỏi là, khi 18 tuổi muốn học lập trình tự học, ngôn ngữ lập trình phù hợp nhất giữa C # và C++ là gì? (Tôi nên nói rằng tôi không quan tâm đến Unix vì tôi tin rằng windows sẽ vẫn là HĐH được sử dụng nhiều nhất)

Tôi biết những điều cơ bản về C++, nhưng không có gì về C #. Tôi biết rằng C++ có nhiều hướng dẫn, dll và những thứ tương tự như vậy, trong khi C # thì không, nhưng nó dễ học hơn và sử dụng cho một người để phát triển chương trình, nhưng tôi đã đọc ngay cả khi chương trình bị xáo trộn thật dễ dàng để có được nguồn gốc của nó.

Chà, tôi muốn tập trung vào cơ bản rất nhiều trước tiên, tôi phải nói rằng tôi có sở thích với C++ chỉ vì nó phù hợp với tôi hơn, nhưng tôi phải xem xét rằng tôi làm việc một mình. Vì vậy, ngay cả khi tôi thích nó, nó có thể không phải là điều tốt nhất để làm.

Tôi thực sự không chắc chắn nên chọn cái nào, tôi đã đọc rất nhiều chủ đề trên các trang web khác nhau và có vẻ như C # đang trở nên phổ biến hơn C++. Nhưng vâng, điều đó nói rằng, tôi cũng xác định tôi muốn làm lập trình trò chơi. Vì vậy, tôi cần biết một số điểm tốt hơn là chỉ "C # dễ dàng hơn vì xử lý bộ nhớ .net trong khi C++ thì không" bởi vì tôi không thể tìm thấy nó.

15
Chronix

Tôi học C++ bằng cách lập trình một trò chơi. Đó là một trải nghiệm rất thú vị. Tôi rất khuyến khích bạn làm như vậy!

Tuy nhiên bây giờ tôi là một lập trình viên C #, tôi biết rằng tôi sẽ làm việc hiệu quả hơn rất nhiều nếu C # có sẵn tại thời điểm đó.

C # là sự lựa chọn hoàn hảo để học phát triển trò chơi. Nó có mọi thứ bạn cần để bắt đầu từ khung đến sách và ngôn ngữ thật tuyệt vời.

Tôi đã thấy hàng tá sách được viết cụ thể trên Lập trình trò chơi C # và Microsoft đang nỗ lực cải thiện các khung của mình bao gồm DirectX [~ # ~] xna [~ # ~] .

[~ # ~] cập nhật [~ # ~] : bạn có thể quan tâm bởi điều này là tốt. Đây là một bài đăng blog gần đây từ Miguel de Icaza .

CẬP NHẬT 2013/02-22 Microsoft đang lên kế hoạch ngừng hỗ trợ XNA .

21
user2567

Hầu hết các công ty trò chơi sử dụng C++, có thể với python script hoặc các ngôn ngữ khác đang chạy trong nền. Moreso vì các ràng buộc cho OpenGL và DirectX đều nhắm vào C++ (altho Im khá chắc chắn rằng bạn có thể làm được nhiều như vậy Công cụ Direct3d trong C #) nhưng ya cho lập trình trò chơi, C++ là ngôn ngữ CHÍNH.

Tôi sẽ đưa ra một cảnh báo công bằng mặc dù (và đừng để điều này ngăn cản bạn) nhưng đồ họa 3D có thể trở nên cực kỳ phức tạp. Direct3D mới đã làm cho nó dễ dàng hơn một chút so với trước đây, nhưng nó vẫn là một phép toán tốt (có thể trở nên khá khó hiểu) và chỉ các thư viện có thể gây nhầm lẫn.

Trước tiên tôi sẽ bắt đầu với một cái gì đó rất đơn giản. đối với công cụ 2d SDL (Simple Directmedia Layer) rất dễ sử dụng (đối với một trò chơi như trò chơi từ trên xuống) một khi bạn vào 3D Tôi cá nhân nghĩ rằng OpenGL dễ học hơn (nhưng tất cả chỉ là ý kiến). MS có một số Hướng dẫn/Mẫu đẹp trong tài liệu DirectX SDK của họ, vì vậy, đáng để xem qua. Các hướng dẫn của Nehe mặc dù hơi lỗi thời vẫn là Nice.

nhưng ya để trả lời câu hỏi của bạn, tất cả đều được thực hiện trong C++.

12
user6791

Trước tiên, bạn sẽ muốn đặt một số ưu tiên. Bạn chỉ muốn làm một trò chơi trước sau đó tìm hiểu về các khía cạnh nâng cao hơn của lập trình sau này, hoặc ngược lại. Cả hai phương pháp đều có ưu và nhược điểm, nhưng theo tôi đều hợp pháp.

Nếu bạn muốn bắt đầu làm game thì tôi khuyên bạn nên học C #. Nếu bạn đã biết những điều cơ bản về C++ thì bạn sẽ không gặp khó khăn gì trong việc chọn C #. Làm cho C # công cụ của bạn có lợi thế. Thật dễ để học ngôn ngữ (so với C++) và là một "ngôn ngữ được quản lý", điều đó có nghĩa là nó tự động làm bộ nhớ cho bạn (điều mà rất nhiều người mới bắt đầu C++ và thậm chí cả những người mới bắt đầu không gặp rắc rối với ). Nó cũng cung cấp cho bạn quyền truy cập vào Khung XNA của Microsoft, nơi thậm chí còn làm nhiều hệ thống ống nước tẻ nhạt hơn cho bạn. Điều đó khiến bạn tập trung vào những thứ như chu trình và thiết kế trò chơi, mà không phải lo lắng (quá nhiều) về việc làm cho nó hoạt động. Đúng, tất cả hệ thống ống nước này đều có chi phí hoạt động, điều đó có nghĩa là bạn có thể sẽ không làm trò chơi 3D cấp ngành, nhưng bạn chỉ tham gia vào lập trình trò chơi, vì vậy tôi nghi ngờ bạn sẽ thực hiện Halo tiếp theo trong vài lần thử đầu tiên . :)

Đây là một bài đăng tử thi của anh chàng đã phát triển một trò chơi XNA thành công (Weapon of Choice). Anh ấy nói chi tiết về cách sử dụng C #/XNA đã giúp anh ấy tiết kiệm thời gian phát triển thay vì phải sử dụng C++. http://www.gamasutra.com/view/feature/3899/postmortem_mommys_best_games_.php

Điều đó đang được nói, bạn nên đầu tư một chút thời gian vào ít nhất là biết mọi thứ hoạt động như thế nào trong nền. Làm thế nào một lập trình viên C++ sẽ làm điều đó. Học cách tạo một trò chơi trong C++ có thể giúp bạn tham gia vào một nhóm phát triển trò chơi khác dễ dàng hơn (vì hầu hết trong số họ làm việc trong C++), nếu điều bạn muốn là có được chỗ đứng trong ngành công nghiệp game. Nhưng ngay cả khi bạn không bao giờ sử dụng C++, việc biết cách thức hoạt động bên trong chỉ có thể giúp bạn trở thành một lập trình viên tốt hơn, bất kể bạn sử dụng ngôn ngữ nào.

8
System Down

Lập trình trò chơi thô sẽ để lại cho bạn khá lạnh. Làm việc với các cuộc gọi đồ họa cấp thấp trong C # hoặc C++ là một cơn ác mộng nhỏ và bạn thực sự không muốn xây dựng lại bánh xe kết xuất các họa tiết 2D chứ đừng nói đến các mô hình 3D. Vì bạn chỉ có một mình và muốn học lập trình, nên cách tốt nhất của bạn là tìm một khuôn khổ có thể giúp bạn tiến lên một chút.

Vì bạn có chút quen thuộc với ngôn ngữ dựa trên C, đề xuất của tôi sẽ là đưa ra nity 3D một cái nhìn. Nó không chỉ trải qua một số nỗ lực nghiêm trọng trong việc áp dụng từ các cửa hàng phát triển trò chơi thương mại và có một số tùy chọn nền tảng thú vị (bao gồm cả thời gian chạy trên PC, Android, iPhone và web), mà còn có phiên bản miễn phí rất dễ sử dụng và nhiều hướng dẫn để chỉ cho bạn cách chuyển từ khái niệm sang thực hiện. Tốt nhất trong tất cả (IMO) một trong những ngôn ngữ kịch bản được hỗ trợ là C #.

3
Jacob Proffitt

Tôi đánh giá cao C++ để phát triển game. Có một vài trở ngại thêm, với những ưu và nhược điểm khác nhau, một trong những lý do tốt nhất là tính di động.

Với C #, bạn có thể phát triển thêm một chút trong những ngày này, và có một số công cụ tuyệt vời đáng kinh ngạc được lập trình sẵn trong đó. Cả hai đều là ngôn ngữ tốt để lập trình trò chơi, nếu bạn chỉ nhắm mục tiêu nền tảng Windows/Xbox thì bạn sẽ đặc biệt có lý do để nghiêng về C #.

Ngôn ngữ tôi nghĩ nhiều nhất bạn nên học sẽ là OpenCL hoặc CUDA, một số ngôn ngữ GPGPU. Cá nhân tôi thích OpenCL vì nó dường như tồn tại lâu hơn và phát triển hơn nữa, về cơ bản nó chỉ là phong cách C. Có OpenTK là trình bao bọc Nice cho C++ hoặc C #.

Tôi đã luôn tự hỏi Ruby lập trình trò chơi sẽ như thế nào với khả năng tăng tốc phần cứng ...

3
Garet Claborn

Tôi đã làm một trò chơi cho một lớp học hai năm trước (lúc đó tôi cũng 18 tuổi) và chúng tôi đã làm nó trong C #. Mặc dù tôi quan sát rằng các chương trình C # lớn thường hoạt động chậm hơn các chương trình C++ lớn, C # cũng đòi hỏi ít công sức hơn cho bạn. Quản lý bộ nhớ được thực hiện tự động và đối với phạm vi của trò chơi đầu tiên, nó đủ nhanh. (Trò chơi của chúng tôi là một RTS 2D nhiều người chơi giống như Starcraft.)

Tôi đã root cho C # vì nó sẽ dễ quản lý hơn. Tuy nhiên, nếu bạn muốn trở thành một nhà phát triển trò chơi chuyên nghiệp, chỉ cần nhớ rằng nó chỉ hoạt động trên nền tảng của Microsoft. (Tuy nhiên, C # có thể là bước đệm tốt cho C++ và nếu tôi phải học lại hai ngôn ngữ, tôi sẽ thử học C # trước.)

2
zneak

Tôi sẽ bỏ phiếu C++ - chủ yếu vì nó có thể là đa nền tảng (tất nhiên phụ thuộc vào cách bạn viết mã của mình) và vì tôi nghĩ nó mang lại cho bạn nhiều kiến ​​thức hơn về quản lý bộ nhớ - bởi vì bạn cần để Chăm sóc nó. Nhưng vì bạn không quan tâm đến linux/unix, nếu bạn muốn loại bỏ sự phức tạp của bộ nhớ trong lúc này, tại sao không tập trung vào C # ngay bây giờ và sau đó cũng học C++?

1
Mauren