Phát triển trò chơi chỉ trong C. Có thể không? [đóng cửa]


18

Tôi là một sinh viên đại học năm thứ nhất ở Ấn Độ và muốn làm một trò chơi nhỏ như một dự án học kỳ này.

Tôi khá giỏi về C và đang học nó rất nhanh nhưng tôi muốn hỏi liệu phát triển game hoàn toàn bằng C (không có C ++ hay C #) Tôi thích sử dụng những thứ này nhưng đối với các dự án đại học, chúng tôi có những yêu cầu khắt khe chỉ sử dụng C.

Những gì tôi đang tìm kiếm là một trò chơi lái xe xem hàng đầu đơn giản. Nó sẽ không có bất cứ điều gì lạ mắt và thậm chí những thứ trực quan sẽ được cung cấp bởi các nhân vật đơn giản. Ví dụ: ô tô do người dùng điều khiển có thể được biểu thị bằng và các cạnh của đường theo hàng loạt. Bạn nghĩ sao?



8
SDL được viết bằng C. OpenGL là C. Bạn cần thêm gì nữa?
Vịt Cộng sản

2
Ngoài ra, Quake hoàn thành tất cả trong C.
Vịt Cộng sản

Tự mình làm và sử dụng các thư viện Allegro;) alleg.sourceforge.net
o0 '.

1
RollerCoaster Tycoon đã được thực hiện gần như trong lắp ráp thuần túy, vậy tại sao không?
Ramon Zarazua B.

Câu trả lời:


23

Viết trò chơi bằng C là có thể. Ví dụ, Quake II được viết hoàn toàn bằng C, vì vậy việc viết các trò chơi khác bằng C sẽ không có vấn đề gì cả. Nó có thể là lựa chọn tốt hơn nếu bạn thành thạo và thoải mái hơn trong C so với C ++.


2
@Ishan Sharma: Trên thực tế, rất nhiều phát triển trò chơi (engine) vẫn không có trong C, hoặc ít nhất là rất C: ish C ++. Không có gì nói rằng trò chơi C ++ của bạn sẽ tốt hơn (hoặc thậm chí được viết tốt hơn) chỉ vì đó là C ++.
khoảng trống

6
@void: Điều đó chỉ đúng nếu lập trình viên đang nghi vấn không biết cách sử dụng C ++ hiệu quả. Các chương trình C ++ được viết trong đó người viết nắm bắt cơ bản về định hướng đối tượng sẽ an toàn và đáng tin cậy hơn nhiều so với các chương trình C tương đương.
DeadMG

8
@DeadMG [cần dẫn nguồn]
Bob

6
@Bob Bolog: Dễ thôi. So sánh std::stringvới char*. std::stringluôn dọn sạch bộ nhớ của chính nó trong mọi tình huống, phân bổ số lượng phù hợp mọi lúc. char*, bạn có thể quên miễn phí, hoặc nhân đôi miễn phí hoặc không phân bổ đủ bộ nhớ. Rất tiếc. Logic cơ bản nói rằng các chương trình C ++ tốt hơn và an toàn hơn so với các chương trình C.
DeadMG

12
@DeadMG Một lập trình viên giỏi có thể viết mã tốt, an toàn bằng bất kỳ ngôn ngữ nào. Ngược lại, một lập trình viên tồi có thể viết mã khủng khiếp, không an toàn bằng bất kỳ ngôn ngữ nào. Một thợ mộc nghèo đổ lỗi cho các công cụ của mình.
Bob Somalia

11

Tôi làm việc trên một cơ sở mã AAA MMORPG hoàn toàn là C, nên có.


5
Tôi đoán điều đó đặt bạn tại Cryptic. Bạn có sử dụng ngôn ngữ kịch bản nào không?
Dan Olson

3
Chúng tôi có một ngôn ngữ biểu hiện nội bộ được các nhà thiết kế sử dụng cho tất cả mọi thứ về cơ bản và chúng tôi sử dụng hỗn hợp Python và Lua cho một số nội dung (xử lý ngoại tuyến, giảm bản đồ trên DBS của trò chơi để thống kê), nhưng không có Ngôn ngữ lập trình thực trong trò chơi.
coderanger

6

Vâng, nó hoàn toàn có thể. Nhiều API cấp hệ điều hành như POSIX và Windows, DirectX và OpenGL đều có giao diện tương thích C.


6

Fabien Sanglard đã viết một bài viết về công cụ 3d của mình trên C. Trên reddit, bài viết này đã tạo ra một cuộc tranh luận thú vị.

Ngôn ngữ chỉ là công cụ ... Vì vậy, hãy sử dụng chúng một cách khôn ngoan. Để tạo ra một trò chơi hay, có thể dễ dàng hơn khi sử dụng XNA hoặc Unity3D. Nắm vững C là một bước đầu tốt, nhưng bạn phải học C ++, D, python, lua ... C ++ là một langage rất khó. Vì vậy, sử dụng nó một cách cẩn thận.


3

C là tuyệt vời để phát triển trò chơi.

Tôi đang làm việc trên một nền tảng 3D và tôi chưa bao giờ gặp vấn đề gì với ngôn ngữ này. Vấn đề duy nhất là phát hiện va chạm và đổ bóng, tôi chỉ không biết gì về chúng, chúng vẫn sẽ xảy ra trong bất kỳ ngôn ngữ nào khác.

Trên thực tế, tôi thấy nó dễ dàng hơn nhiều so với các ngôn ngữ như C # và Java. Tôi luôn lặp đi lặp lại trên các thực thể bằng cách sử dụng các con trỏ ( một ví dụ từ mã của tôi ) và freadtiết kiệm rất nhiều thời gian để thực hiện trình tải bản đồ.

Nếu bạn muốn định hướng đối tượng và mô đun hóa, bạn có thể tạo cấu trúc của các con trỏ hàm.


1

Không nghi ngờ gì. Rất nhiều thư viện hữu ích trong phát triển trò chơi (như SDL, PhysFS, v.v.) có API C, giúp ích rất nhiều.

Bạn có thể muốn xem xét việc nhúng một ngôn ngữ kịch bản như lua nếu bạn muốn thực hiện bất kỳ chương trình cấp cao, có thể mở rộng nào. Nhiều người bắt đầu thấy sự hấp dẫn trong việc lập trình khung C sử dụng lua cho những thứ như AI, sự kiện, v.v ...

Chúc may mắn.


1

Câu trả lời đơn giản cho câu hỏi này là: Bạn có thể làm trò chơi dựa trên văn bản đơn giản như thế này trong mọi ngôn ngữ lập trình. Ngay cả trình biên dịch pascal, basic hoặc x86:]

(và không cần bất cứ điều gì khác)


0

Vâng, điều đó là có thể, nhưng nó có thể không phải là hành động đáng mong đợi nhất. Một số người nhận ra rằng cả C và C ++ đều không lý tưởng cho một số nhiệm vụ và logic trò chơi cấp cao thường rơi vào danh mục đó.

Nếu bạn khăng khăng với C thay vì C ++ (điều này không có ý nghĩa gì với tôi, nhưng với mỗi người họ), bạn có thể tốt nhất nên sử dụng Lua kết hợp với C.

Đối với các dự án đại học của bạn yêu cầu C, đây sẽ không phải là một lựa chọn, nhưng đối với các dự án thời gian rảnh rỗi, đó sẽ là một cách tốt để học.


Lua rất giỏi trong thời gian phát triển, nhưng trước khi phát hành, mọi thứ nên được chuyển sang ngôn ngữ bản địa để có hiệu suất cao hơn.
Triang3l

@ Triang3l Tôi không đồng ý chút nào. Những gì bạn mô tả là tối ưu hóa sớm. Sử dụng ngôn ngữ bản địa KHÔNG đảm bảo rằng mã của bạn nhanh hơn. Cách chính xác để làm điều này là lập hồ sơ mã của bạn, tìm các tắc nghẽn và cải thiện mã đó. Có rất nhiều ví dụ trong đó các nhà phát triển đã cố gắng viết mã C của riêng họ để thay thế mã Java và mã C trở nên chậm hơn đáng kể hoặc khi các nhà phát triển cố gắng thay thế mã C bằng mã hội chậm hơn đáng kể. Đừng đánh giá thấp các nhà phát triển ngôn ngữ cấp cao và môi trường thời gian chạy cho nó.
1657170

0

Tất nhiên bạn có thể. Nhiều trò chơi đã được lập trình bằng C (DOOM hiện lên trong tâm trí). SDL là một thư viện lập trình trò chơi được viết bằng C.

Tất nhiên, có thể khó hơn một chút so với sử dụng C ++ cho một dự án lớn, nhưng điều đó là có thể.


0

Tôi nghĩ rằng có thể làm cho một trò chơi c hoàn chỉnh. Tôi đã tạo một trò chơi (tương tự như 'tác động không gian' của điện thoại di động nokia 1110) trong dự án học kỳ 2 của tôi bằng trình biên dịch turbo c. Tôi nghĩ bạn có thể thử theo cách này (khi là sinh viên đại học năm thứ nhất) mà không cần biết bất kỳ người nào khá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.