C # có tương lai trong phát triển trò chơi không?


18

Gần đây tôi đã biết rằng MMO Minecraft được cung cấp bởi Java từ một cuộc phỏng vấn gần đây trên CVG.co.uk về sự hợp tác có thể có giữa hai đồng nghiệp cũ và hiện đang cạnh tranh. Trong cuộc phỏng vấn, anh nói thẳng thừng rằng người sáng lập Minecraft là một lập trình viên Java và anh là một lập trình viên C hoặc C ++ nên chúng không tương thích với nhau. Vì vậy, hợp tác trong các dự án trong tương lai sẽ khó khăn.

Điều này khiến tôi suy nghĩ, nếu Java có thể làm điều đó? Tương lai có gì cho MS rất phổ biến ngôn ngữ C # và nền tảng .Net khi có liên quan đến phát triển trò chơi hoặc trò chơi chính thống?



3
Đó là tất cả về các màn trình diễn bạn cần, Minecraft là ngôn ngữ được quản lý, nhưng đối với các trò chơi đồ họa cao cấp, C hoặc C ++ hoặc các ngôn ngữ bản địa khác được ưa thích hơn

19
Minecraft không thực sự là một MMO.
DeadMG

3
@ Guillaume86: Mã bị xáo trộn hiện có thể vượt trội hơn mã gốc và Jits đang trở nên tốt hơn mọi lúc. Ngoài ra, ngôn ngữ được quản lý tạo ra các chương trình mạnh mẽ hơn nhiều. Vì vậy, cuối cùng C ++ mất đi lợi thế về hiệu suất và khó hơn đáng kể để viết các chương trình mạnh mẽ (có nghĩa là thời gian phát triển dài hơn và chi phí nhiều hơn)
Martin

4
Một JIT có thể đánh bại mã gốc được viết kém, không được tối ưu hóa chặt chẽ và điều chỉnh các vòng lặp bên trong. Cấp ngay cả với C #, bạn có tùy chọn viết các phân đoạn nhạy cảm đó trong C / C ++ nếu bạn thực sự muốn.
coderanger

Câu trả lời:


22

Bạn nên kiểm tra XNA . Một nền tảng để xây dựng trò chơi cho Windows, Xbox 360 và Windows Mobile 7. Tất cả trong C # và .NET.


11

Tôi đã làm việc trong lĩnh vực phát triển game chuyên nghiệp được hơn 5 năm. Hầu hết thời gian này, tôi đã sử dụng C # gần như độc quyền.

C # và .NET stack nói chung thực sự tuyệt vời cho công nghệ phía máy chủ. Tôi đã làm việc với không dưới 4 trò chơi MMO với máy chủ được viết bằng C #. Ngoài ra, với việc Unity3D trở nên phổ biến, nhiều trình duyệt VÀ trò chơi di động yêu cầu C #. Đừng quên khuôn khổ XNA: nó không phải là công cụ được lựa chọn cho các tựa game console AAA, nhưng có rất nhiều trò chơi tuyệt vời được thực hiện cùng với nó, và nhiều trò chơi khác hiện đang được tạo ra.

Nhìn chung, C # chắc chắn có một tương lai trong phát triển trò chơi.


đó là một câu hỏi cũ, nhưng có một điều làm phiền tôi. "Công nghệ phía máy chủ" - chính xác ý bạn là gì? WindowsService chạy trên một số Windows Server bằng .NET Framework? Tôi luôn nghĩ rằng các máy chủ được tạo trong c ++ và chạy trên hệ điều hành unix. Tôi chỉ tò mò
Marshall

Đúng, chính xác đó. Có rất nhiều máy chủ đang chạy trên Windows ngoài đó - bao gồm cả những máy chủ chạy chính trang này, AFAIK.
Nevermind

Cảm ơn cho việc trở lại với tôi. Chỉ cần làm rõ - "chạy trên Windows" dưới dạng các dịch vụ hoặc chương trình Windows không đầu như WinForms (có cấu hình tích hợp hoặc một cái gì đó tương tự)?
Marshall

Dịch vụ không đầu thường là một ý tưởng tốt hơn, nhưng không có gì ngăn cản bạn chỉ chạy một ứng dụng bảng điều khiển. Hoặc thậm chí là một GUI, ngoại trừ không có ai trên máy chủ sử dụng GUI nói trên.
Nevermind

10

Như đã đề cập, Mono mang C # đến nhiều nền tảng. Trong cùng khu vực đó, bạn sẽ tìm thấy Tao , một thư viện đa nền tảng cho Mono và .NET cho phép truy cập vào Cg, DevIL, FreeGLUT, GLFW, GLU, ODE, OpenAl, OpenGL, ChemistryFS, SDL và WGL. Rõ ràng là nó không mạnh bằng các tính năng như XNA (cung cấp các thành phần động cơ cơ bản trực tiếp cho nhà phát triển); Nhưng, nó rất mạnh mẽ.

Vì vậy, đa nền tảng vượt ra ngoài hệ điều hành và phần cứng do Microsoft kiểm soát là hoàn toàn có thể. Chỉ là, không nhiều game indie nổi tiếng đã tận dụng khả năng này.

Như đã được đề cập, XNA cùng với C # cho phép các nhà phát triển độc lập xuất bản lên 360, PC và Windows Phone 7.

Nhìn chung, C # vẫn còn sống và phát triển trò chơi như một ngôn ngữ động cơ / trò chơi.

Là một ngôn ngữ công cụ, nó được sử dụng ở mọi nơi. Tôi đã xây dựng các công cụ cho EA, THQ và giờ là Arkadi đều sử dụng C #.


5

C # không chỉ có tương lai trong phát triển trò chơi, nó còn có một món quà - Hãy xem Magicka , một trò chơi được phát hành gần đây (và bán rất chạy) được phát triển bằng XNA. Ngoài ra hãy xem các mục Dream.Build.Play chiến thắng . C # là một cách hữu hiệu để tạo trò chơi (mặc dù hiện tại tôi không tin rằng đó là lựa chọn đúng đắn cho tất cả các trò chơi).

Khi thời gian trôi qua, chúng ta sẽ thấy nó trở nên phổ biến hơn trong ngành công nghiệp trò chơi máy tính, tuy nhiên tôi không mong đợi một sự thay đổi đột ngột sang C # bất cứ lúc nào.


4

Java luôn là một ngôn ngữ rất linh hoạt và luôn có khả năng mọi người viết mã các trò chơi trong đó, từ các trò chơi dựa trên web đơn giản (Java applet / GWT với plugin canvas) đến các con thú 3D đầy đủ (thanh toán JMonkey ). Vì vậy, tôi sẽ không nói thực tế Java có thể làm điều đó là một kẻ giết người C #, bởi vì hầu hết mọi người đều biết Java có thể làm điều đó rồi.

C # vẫn sẽ phổ biến mặc dù nó chắc chắn có mối quan hệ với Windows, Windows mobile và Xbox tốt hơn nhiều so với Java (điều thực sự là tất cả các nhà phát triển trò chơi thực sự quan tâm đến việc nhắm mục tiêu nên lợi thế đa nền tảng mà Java đã bị mất.) cũng có XNA đã thực sự phát triển về mặt phát triển trò chơi.

Vì vậy, có, Java là một nền tảng hoàn toàn tốt để phát triển trò chơi nếu bất kỳ ai muốn đi theo con đường đó, nhưng chắc chắn không có kẻ giết người C # hay .NET.


4

Hãy xem Unity 3D; Kịch bản C # (và JavaScript và Boo) trong công cụ 3D hiệu suất cao.

Thêm XNA vào hỗn hợp và bạn đang xem xét một vài nền tảng tuyệt vời để sử dụng C # để phát triển trò chơi.


Unity cũng có một trình phát web để bạn có thể chơi trên trình duyệt. Plugin không có sự thâm nhập thị trường lớn như flash hay java, nhưng điều đó là có thể.
Michael Coleman

yay cho sự thống nhất !!
Daniel Pendergast

1

Có, C # có tương lai, với khung XNA. Hầu hết thích C ++ vì tốc độ, nhưng C # là không chậm nữa ...


2
Nó không chậm chút nào. Nó hiếm khi tệ hơn khoảng 70% tốc độ C ++ và đôi khi có thể nhanh hơn!
Noldorin

4
Các hoạt động ràng buộc của CPU trong C # khá nhanh, nó thực hiện một số kiểm tra bổ sung giúp cải thiện đáng kể sự an toàn của mã với chi phí của một số lần truy cập hiệu năng nhỏ nhưng điều đó tệ hơn nhiều so với C ++ trong quản lý và tiêu thụ bộ nhớ. Đó là một trò chơi dễ dàng hơn và ít bị rò rỉ hơn trong C # nhưng các cú đánh hiệu suất của GC có thể là một con chó tuyệt đối.
justin.m.chase

Cẩn thận khi nhắm mục tiêu Xbox360 mặc dù. Thời gian chạy XNA ở đó thiếu khả năng cho một số tối ưu hóa chính và ngăn bạn chuyển các phần nhạy cảm hiệu suất sang mã không được quản lý.
drxzcl


1

Trong trường hợp này, những gì anh ta đã làm với Java là tạo một applet để bạn có thể đăng nhập vào trang web và chơi với một plugin rất phổ biến, hoàn toàn minh bạch đối với hệ điều hành nào đang được sử dụng. Tôi tưởng tượng suy nghĩ của anh ấy là Java khá minh bạch khi được sử dụng theo cách này và nó sẽ giúp cho việc phát triển / thử nghiệm lặp lại nhanh chóng mà anh ấy làm cho người hâm mộ dễ dàng thực hiện. Tôi không tin rằng bạn chỉ có thể làm điều này với XNA bởi vì thông thường người thử nghiệm phải cài đặt mọi thứ cũng như trò chơi và một số kiến ​​thức chung về cách biên dịch và chạy nó.

Vì vậy, tôi sẽ nói rằng không có sự thay đổi mô hình từ điều này, nó chỉ phù hợp với những gì anh ta cần vào thời điểm đó và rõ ràng đã làm việc tốt.


1

Chắc chắn, rất nhiều ngôn ngữ lập trình có một tương lai trong phát triển trò chơi. Một vấn đề nan giải thường được sử dụng trong báo chí điện toán là chỉ có một công cụ loại X và mọi người đều muốn điều này xảy ra.

Không gì có thể hơn sự thật.

C # và Java đã được sử dụng trong các trò chơi trong một thời gian dài. C và C ++ thậm chí còn lâu hơn, và vẫn còn. Lua được sử dụng làm ngôn ngữ kịch bản cho một số trò chơi cực kỳ phổ biến, với công cụ được viết bằng C / C ++.

Vì vậy, rõ ràng, không có ngôn ngữ lập trình nào thổi bay các ngôn ngữ lập trình khác ra khỏi nước như Ngôn ngữ lập trình trò chơi. Trên thực tế, chúng ta thấy xu hướng các trò chơi hàng đầu bao gồm ngôn ngữ lập trình được biên dịch hiệu năng cao để phát triển (các) công cụ. Và sau đó là ngôn ngữ lập trình động cấp cao hơn để tạo kịch bản cho giao diện người dùng và công cụ.

Chìa khóa tại thời điểm này là hiệu suất. Nếu bất kỳ ngôn ngữ / thư viện lập trình nào được sử dụng gây ra sự tạm dừng không thể đoán trước / không kiểm soát được trong ứng dụng thì trong một trò chơi hành động, điều đó sẽ thất bại trên mặt của nó. Trong một trò chơi phiêu lưu dựa trên văn bản, điều đó có thể ổn.

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.