2009-05-30 33 views
5

Tôi thấy rất nhiều cuộc tranh luận về ngôn ngữ sử dụng để phát triển trò chơi 3D thời gian thực và sự đồng thuận chung là C hoặc C++ là ngôn ngữ duy nhất có thể mang lại hiệu suất phù hợp cho hệ thống cao cấp trò chơi 3D chuyên sâu. Tôi thấy rất nhiều người nói rằng C#, Java hoặc Python quá chậm, đặc biệt là do thu gom rác thải. Làm thế nào về mục tiêu C? Mục tiêu C có thu gom rác tự động không? Điều gì ngoài Bộ sưu tập rác tự động làm cho một ngôn ngữ 'quá chậm' hoặc không thích hợp cho các trò chơi 3D?Mục tiêu C là ngôn ngữ phù hợp cho trò chơi 3D?

Câu hỏi này có lẽ là một 'thử nghiệm suy nghĩ' vì tôi nghi ngờ mình sẽ phát triển một trò chơi quá nặng nề đến nỗi những câu hỏi này cần được giải quyết, nhưng là lập trình viên, tôi không thể giải thích được , vì vậy tôi vẫn muốn biết chỉ cho riêng của tôi jollies.

Trả lời

7

Mục tiêu-C 2.0 có bộ sưu tập rác sẵn có trên Mac OS X 10.5, nhưng tùy chọn - bạn vẫn có thể biên dịch các ứng dụng Mục tiêu-C mà không cần thu gom rác nếu bạn chọn. Trên các nền tảng khác (iPhone, Mac OS X trước 10.5 và bất kỳ thứ gì khác), không có bộ sưu tập rác và bạn phải quản lý bộ nhớ của mình theo cách thủ công.

Mục tiêu-C là nghiêm ngặt superset của C, vì vậy bạn có thể mã đồng bằng C trong Mục tiêu-C nếu bạn muốn. Do đó, không có lý do gì để không sử dụng Objective-C cho các trò chơi cũng không áp dụng cho việc sử dụng C. Bạn có thể sử dụng các tính năng phụ Objective-C cung cấp càng nhiều hoặc ít tùy thích.

-1

Mục tiêu-C không có bộ sưu tập rác tự động. Java có nhiều phương pháp thu gom rác và một số phương pháp được thiết kế tương thích với các trò chơi bằng cách tăng dần theo các khoảng thời gian đều đặn. Tôi sẽ ngạc nhiên nếu C# hay bất cứ thứ gì khác cũng có bộ sưu tập rác không có nhiều phương pháp để lựa chọn, một số trong đó tương thích với các trò chơi.

Điều duy nhất trên đỉnh đầu của tôi có thể khiến trò chơi không phù hợp với trò chơi 3D sẽ là nếu nó được diễn giải và đặc biệt chậm trong việc triển khai trò chơi. Đó không phải là đặc tính của bất cứ điều gì bạn liệt kê ở trên.

P.S. Để giải quyết câu hỏi ban đầu của bạn, tôi chắc chắn rằng bất kỳ ai có iPod Touch hoặc iPhone sẽ có thể cho bạn biết rằng Mục tiêu-C chắc chắn là trò chơi 3D :)

+3

Đó không phải là tôi, nhưng tôi khá chắc chắn các downvotes là vì Objective-C trên Mac OS X có, trên thực tế, có bộ sưu tập rác tự động. Nó là tùy chọn, nhưng nó ở đó. Chỉ là FYI, bởi vì tôi ghét những kẻ không thích mà không giáo dục. – Chuck

+2

Và Mac là nền tảng duy nhất cho Mục tiêu-C, phải. Uh, không. Nó không phải. Thiết bị tôi đang ngồi ngay trước mặt tôi có Objective-C và không có bộ sưu tập rác tự động. Thêm vào đó, anh ta hỏi liệu Objective-C có thu gom rác hay không vì anh ta lo ngại liệu nó có gây ra hiệu suất bùng nổ hay không và làm cho nó trở thành một lựa chọn không tốt cho một game 3D. Nó không. Không theo bất kỳ cách nào mà sẽ yêu cầu sử dụng nó. Chẳng ai ngoài tôi đọc những gì anh ta nói? –

+4

Máy Mac là nền tảng chính cho Mục tiêu-C. Làm cho một tuyên bố chăn về Objective-C đó là không đúng sự thật của Mac giống như làm cho một tuyên bố chăn về máy tính đó là không đúng sự thật của Windows. "Máy tính không có khả năng chạy các chương trình đồ họa." Vâng, chắc chắn, một số không - Tôi có một quyền trong phòng ở đây - nhưng tôi vẫn không nghĩ đó là một tuyên bố đúng. – Chuck

5

Sự chậm lại thực sự chỉ với Mục tiêu-C chính nó sẽ là cơ chế nhắn tin — và thậm chí sau đó, nó thường là các thành phần của khung công tác Cocoa sẽ làm chậm mọi thứ. Gửi tin nhắn của Objective-C không thực sự làm tổn thương hiệu suất mà nhiều hơn.

Dù sao, đối với hầu hết các trò chơi, phần lớn tắc nghẽn hiệu suất sẽ đến từ mã đồ họa: nếu bạn giao đồ họa cho OpenGL, nhanh chóng lố bịch, thì thực sự không có vấn đề gì khi sử dụng Objective-C cho trò chơi. Nơi duy nhất khác mà tôi có thể thấy Objective-C hoặc Cocoa cung cấp các nút cổ chai sẽ là mã vật lý chuyên sâu — và có lẽ nó nên được viết bằng bất kỳ C/C++ thuần túy nào. Tất cả mọi thứ khác, tuy nhiên, không nên quan trọng lắm.

Thành thật mà nói, tôi cược rằng phần lớn các trò chơi OS X ngày nay được viết trong Objective-C bằng cách sử dụng khung Cocoa, với mã hiệu suất được viết bằng C/C++ tinh khiết (và với mã đồ họa sử dụng OpenGL).

0

Tôi cũng quan tâm đến chủ đề này và tôi thấy điều này http://wiki.gnustep.org/index.php/3DKit

Nó trông khá chết nhưng bây giờ với kêu vang/llvm 2,9 nhiều goodies của Objective-C 2 có sẵn trên Linux và có thể là thú vị để có API 3D.

Các vấn đề liên quan