C ++ có còn được ưa thích trong phát triển game không? [đóng cửa]


17

Tôi là một lập trình viên trò chơi 2D. Một số ngôn ngữ lập trình mà tôi giỏi là C, Java, C #. Tôi cũng biết Actioncript 2.0,3.0 và một số javascript. Tôi thích học lập trình trò chơi 3D. Cho đến nay từ nghiên cứu tôi đã tích lũy bằng cách googling và đọc các diễn đàn và bài viết phát triển trò chơi khác nhau. Tôi đã nhận thấy rằng hầu hết các lập trình viên có xu hướng thích C ++. Ngoài ra, trong một khóa học giảng dạy lập trình trò chơi trực tuyến, tôi nhận thấy họ thích dạy C ++ và Visual C ++ như khóa học bắt đầu. Lý do tôi hỏi câu hỏi này vì tôi muốn biết sự khác biệt "sức mạnh" của C ++, C # và Java đối với lập trình trò chơi 3d.

Cũng bao gồm các liên kết đến các bài viết lập trình trò chơi 3d tốt cho lập trình viên trò chơi 2d.

PS: IMHO, tôi cũng thấy C ++ là khó hiểu.


Tôi cũng nhận được điều đó rất nhiều. Vì vậy, đã hỏi một câu hỏi trong cộng đồng như những kỹ năng mà một lập trình viên trò chơi chuyên nghiệp nên có. Có một số câu trả lời hay tập trung vào C ++ như ngôn ngữ tốt hơn để phát triển trò chơi. kiểm tra .. gamedev.stackexchange.com/questions/5552/iêu
GamDroid

@GamDroid: Tôi không quan tâm đến việc biết điều gì tạo nên một lập trình viên game 2d chuyên nghiệp. Tôi muốn biết về Visual C ++ và tại sao nó lại được nói đến như vậy.
Vishnu

2
Btw: Trực quan C ++? Không chỉ đơn giản là C ++?
tốc

Trình chỉnh sửa Visual C ++ rất tuyệt, nhưng ngôn ngữ Visual C ++ (nghĩa là: C ++ với API GUI Win32 và những thứ tương tự, cả với MS Visual C ++ hoặc Borland C ++ Builder) khá khó hiểu và không nên được sử dụng cho các trò chơi (nó cũng vậy cồng kềnh và sử dụng GDI chậm hơn so với sử dụng say, SDL, để điều khiển cửa sổ)
tốc độ

1
@Vish, xin lỗi sau đó, vui lòng chỉnh sửa nó để chính xác hơn ghi nhớ các ý kiến ​​cho đến nay. Nếu bạn có nghĩa là lập trình Win32 khó hiểu, thì hãy nói điều đó.
Tetrad

Câu trả lời:


30

Có, C ++ là ngôn ngữ được sử dụng thường xuyên nhất (mặc dù một số người vẫn sử dụng C).

Có rất nhiều lý do cho việc này. Động lực tuyệt vời là một - đơn giản là ngôn ngữ đã được sử dụng trong nhiều năm, rất nhiều công nghệ đã tồn tại và mọi người cảm thấy thoải mái với nó, vì vậy việc thay đổi sẽ không xảy ra chỉ sau một đêm.

Sau đó là vấn đề kiểm soát. Các nhà phát triển trò chơi đang kiểm soát những kẻ lập dị và chúng tôi muốn biết mọi thứ đang diễn ra trong mã của chúng tôi. C ++ cung cấp cho chúng tôi quyền kiểm soát đó, C # và Java (để chọn hai lựa chọn thay thế mà bạn đề cập) sẽ kiểm soát. Theo nhiều cách có thể là một điều tốt, nhưng các lập trình viên trò chơi không thích nó :)

Cuối cùng, có một vấn đề thực tế đơn giản là SDK cho các nền tảng khác nhau rất tập trung vào C ++. Sử dụng một ngôn ngữ khác chắc chắn liên quan đến việc viết các trình bao bọc, biên dịch chéo cho VM và có thể (trong trường hợp phát triển giao diện điều khiển) không được phép bởi người giữ nền tảng (họ thực sự không thích những người thực hiện biên dịch JIT).


2
Trong ngành công nghiệp phát triển chính thống, vâng.
JasonD

2
Về ngôn ngữ, C ++, chủ yếu - nó sẽ không đi đâu cả sớm. Tôi khuyên bạn cũng không nên làm quen với các ngôn ngữ kịch bản - Lua, Python, v.v.
JasonD

8
Visual C ++ không phải là ngôn ngữ, nó là IDE.
SurvivalMachine

2
Vâng, mặc dù nó có lẽ là IDE được sử dụng nhiều nhất, vì vậy, đáng để biết rằng cùng lúc với việc học C ++.
JasonD

1
@SurvivalMachine Về mặt kỹ thuật, đó là một phương ngữ (có rất nhiều phần mở rộng MSVC ++ không tồn tại trong tiêu chuẩn)
bobobobo

4

C ++ vẫn được ưa thích như bạn có thể thấy trên hầu hết các ấn phẩm về chủ đề phát triển trò chơi. Cá nhân tôi hiện đang sử dụng C để tham gia phát triển trò chơi vì lý do đơn giản là mã C ++ tôi viết lạm dụng các tính năng tạo khuôn mẫu, sử dụng RAII rộng rãi, cấp phát bộ nhớ động và những thứ khác mà bạn không nên làm trong mã trò chơi từ những gì tôi đã thấy cho đến nay.

Bám sát C buộc tôi phải tối giản và suy nghĩ về những gì tôi đang làm. Có thể khó hơn vào những lúc bạn phải thực hiện lại một cái gì đó mà STL cung cấp cho bạn miễn phí, nhưng về mặt tôi cảm thấy tôi viết mã sạch hơn và có thời gian gỡ lỗi tốt hơn.


3
RAII hoàn toàn chấp nhận được (và nên được khuyến khích) trong mã trò chơi.
ném đá vào

1
@stonemetal: RAII khuyến khích phân bổ nguồn lực bị trì hoãn và do đó không thể đoán trước. Việc đó có nên được khuyến khích hay không phụ thuộc vào quy mô trò chơi và nền tảng mục tiêu của bạn (và tài nguyên được đề cập); trung bình tôi sẽ không khuyến khích nó. Hơn nữa, RAII trong C ++ được sử dụng phổ biến nhất với phân bổ heap, vì OO của C ++ làm cho việc phân bổ ngăn xếp quá khó khăn.

3
RAII khuyến khích phân bổ nguồn lực chậm trễ theo cách nào? Khi tôi sử dụng GLFW, tôi tạo một lớp có tên GLFWRAII gọi hàm init của GLFW trong hàm tạo và gọi thường trình dọn dẹp của GLFW trong hàm hủy. Tôi phân bổ nó trên stack ở đầu main, nó không làm chậm trễ bất cứ thứ gì cũng như không có gì khó lường. Các cách sử dụng khác có thể là phân bổ ở đầu cấp và dọn sạch ở cuối cấp. Sử dụng một kỹ thuật kém không làm cho nó trở thành một kỹ thuật kém. Không có gì về RAII đề xuất phân bổ tài nguyên không thể đoán trước ngoài việc sử dụng kém.
stonemetal

Bạn chỉ cần tránh sử dụng các tính năng đó. Tôi sử dụng C ++ và tôi không bao giờ sử dụng các mẫu trong mã của mình và cũng không có đối tượng ném ngoại lệ trong các hàm tạo của chúng. Trong C, bạn vẫn có thể sử dụng phân bổ động (và bạn phải cho trò chơi 3D). Bên cạnh đó, bạn nên viết mã theo cách mà người khác cũng thấy dễ hiểu - một dự án lớn trong mã C thuần túy có thể là một địa ngục, ngay cả khi bạn hiểu nó. Nếu bạn học cách suy nghĩ về những gì bạn đang làm ngay cả khi ngôn ngữ không ép buộc bạn, bạn cũng có thể viết mã sạch bằng nhiều ngôn ngữ khác.
Pablo Ariel

1

Cá nhân tôi không phải là người hâm mộ C ++ và tôi thích Java hơn. Tuy nhiên, hầu hết mọi người trong ngành đều sử dụng nó và đó là ngôn ngữ dễ dàng nhất để chuyển đổi sang các nền tảng khác mà không cần trình bao bọc và máy ảo.

Tuy nhiên, đôi khi các ngôn ngữ khác hoạt động khá tốt để phát triển trò chơi. Tôi sử dụng Java với LWJGL và nó thật tuyệt vời. Vì vậy, nếu bạn muốn bắt đầu với lập trình 3D và OpenGL mà không cần phải học C ++, hãy thử dùng LWJGL với Java, vì nó rất nhẹ và tôi nghĩ rằng đó thực sự là mã C ++ chạy qua JNI.

Có thể về lâu dài bạn có thể muốn chuyển sang C ++, nhưng bạn có thể bắt đầu và thực hành với C # hoặc Java. Bởi vì hầu hết mã trò chơi xuất phát từ trải nghiệm với ngôn ngữ, nhưng bạn nên thử và thực hành OpenGL với ngôn ngữ mà bạn cảm thấy thoải mái. Ngoài ra, trong khi bạn đang thực hành đồ họa, bạn cũng nên thử GLSL với OpenGL, nó có cú pháp rất giống C

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.