¿C # tiene futuro en el desarrollo de juegos?

18

Hace poco me enteré de que el MMO Minecraft funciona con Java a partir de una entrevista reciente en CVG.co.uk sobre una posible colaboración entre dos colegas antiguos y ahora competidores. En la entrevista, dijo sin rodeos que el fundador de Minecraft es un codificador de Java y que es un codificador de C o C ++, por lo que son incompatibles entre sí. Por lo tanto, colaborar en proyectos futuros será difícil.

Esto me hizo pensar, ¿si Java podría hacer eso? ¿Qué depara el futuro para el lenguaje C # muy popular de MS y la plataforma .Net en lo que respecta al desarrollo de juegos o juegos convencionales?

caos
fuente
3
Se trata de las actuaciones que necesita, Minecraft está bien en un lenguaje administrado, pero para juegos gráficos de alta gama, se prefieren C o C ++ u otros lenguajes nativos
19
Minecraft no es realmente un MMO.
DeadMG
3
@ Guillaume86: el código alterado actualmente puede superar al código nativo, y los Jits están mejorando todo el tiempo. Además, los lenguajes administrados producen programas mucho más robustos. Entonces, al final, C ++ pierde su ventaja de rendimiento y es significativamente más difícil escribir programas sólidos (lo que significa tiempos de desarrollo más largos y más costos)
Martin
44
Un JIT puede vencer el código nativo mal escrito, no loops internos optimizados y ajustados. Concedido incluso con C #, tiene la opción de escribir esos segmentos sensibles en C / C ++ si realmente lo desea.
coderanger 01 de

Respuestas:

22

Deberías revisar XNA . Una plataforma para crear juegos para Windows, Xbox 360 y Windows Mobile 7. Todo en C # y .NET.


fuente
11

He estado trabajando en el desarrollo profesional de juegos durante más de 5 años. La mayor parte de este tiempo, usé C # casi exclusivamente.

C # y .NET stack en general es realmente genial para la tecnología del lado del servidor. He trabajado en no menos de 4 juegos MMO con servidor escrito en C #. Además, con Unity3D ganando popularidad, muchos navegadores y juegos móviles requieren C #. No olvide el marco XNA: no es el motor de elección para los títulos de consola AAA, pero hay muchos juegos geniales hechos con él, y muchos más en preparación.

En general, C # definitivamente tiene un futuro en el desarrollo de juegos.

No importa
fuente
Es una vieja pregunta, pero una cosa me molesta. "tecnología del lado del servidor": ¿qué quiere decir exactamente con eso? ¿Un servicio de Windows que se ejecuta en algún servidor de Windows con .NET Framework? Siempre pensé que los servidores están hechos en c ++ y se ejecutan en unix os. Solo tenía curiosidad
Marshall
Sí, exactamente eso. Hay muchos servidores que se ejecutan en Windows, incluidos los que ejecutan este mismo sitio, AFAIK.
importa
gracias por volver a mí. Solo para aclarar: ¿"ejecutarse en Windows" como servicios de Windows sin cabeza o programas como WinForms (con configuración integrada o algo así)?
Marshall
El servicio sin cabeza suele ser una mejor idea, pero nada le impide ejecutar una aplicación de consola. O incluso una GUI, excepto que no hay nadie en el servidor para usar dicha GUI.
importa
10

Como se ha mencionado, Mono trae C # a múltiples plataformas. En esa misma área, encontrará Tao , una biblioteca multiplataforma para Mono y .NET que permite el acceso a Cg, DevIL, FreeGLUT, GLFW, GLU, ODE, OpenAl, OpenGL, PhysicsFS, SDL y WGL. Obviamente no es tan robusto cuando se trata de características como XNA (que proporciona componentes fundamentales del motor directamente al desarrollador); pero es bastante poderoso.

Entonces, la plataforma cruzada más allá del sistema operativo y el hardware controlados por Microsoft es definitivamente posible. Simplemente, no tantos juegos independientes populares han utilizado esta habilidad, todavía.

Como también se ha mencionado, XNA junto con C # permite a los desarrolladores independientes publicar en 360, PC y Windows Phone 7.

En general, C # está vivo y bien en el desarrollo de juegos como lenguaje de motor / juego.

Como lenguaje de herramientas, se usa en todas partes. He creado herramientas para EA, THQ y ahora Arkadium, todas con C #.

AA Grapsas
fuente
5

C # no solo tiene futuro en el desarrollo de juegos, sino que también tiene un regalo: echa un vistazo a Magicka , un juego lanzado recientemente (y que se vende bien) que se desarrolló con XNA. También eche un vistazo a las entradas ganadoras de Dream.Build.Play . C # es una forma viable de hacer juegos (aunque en este momento no creo que sea la opción correcta para todos los juegos).

A medida que pase el tiempo, lo veremos cada vez más popular en la industria de los juegos de computadora, sin embargo, no espero un cambio repentino a C # en ningún momento.

CiscoIPPhone
fuente
4

Java siempre ha sido un lenguaje muy versátil y siempre ha habido la posibilidad de que la gente codifique juegos en él, desde simples juegos basados ​​en la web (applets de Java / GWT con el complemento de lienzo) hasta bestias en 3D (ver JMonkey ). Así que no diría que el hecho de que Java pueda hacer ese tipo de cosas es un asesino de C #, porque la mayoría de la gente sabe que Java ya puede hacerlo.

Sin embargo, C # seguirá siendo popular, ya que inevitablemente se vincula con Windows, Windows Mobile y Xbox mucho mejor que Java (que, en realidad, todos los desarrolladores de juegos realmente se preocupan por la orientación, por lo que la ventaja multiplataforma que Java tiene se pierde principalmente). También obtuve XNA, que realmente ha despegado en términos de desarrollo de juegos.

Entonces, sí, Java es una plataforma perfectamente buena para el desarrollo de juegos si alguien desea seguir ese camino, pero ciertamente no es un asesino de C # o .NET.


fuente
4

Echa un vistazo a Unity 3D; C # (y JavaScript, y Boo) scripting en un motor 3D de alto rendimiento.

Agregue XNA a la mezcla y está viendo un par de excelentes plataformas para usar C # para el desarrollo de juegos.

chrish
fuente
Unity también tiene un reproductor web para que puedas jugar en el navegador. El complemento no tiene una gran penetración en el mercado como flash o java, pero es posible.
Michael Coleman
yay por la unidad !!
Daniel Pendergast
1

Sí, C # tiene futuro, con el marco XNA. La mayoría prefiere C ++ debido a la velocidad, pero C # no es que lento ya ...

GoofyHTS
fuente
2
No es lento en absoluto. Raramente es peor que aproximadamente el 70% de la velocidad de C ++, ¡e incluso puede ser más rápido a veces!
Noldorin
44
Las operaciones vinculadas a la CPU en C # son bastante rápidas, realiza algunas comprobaciones adicionales que mejoran enormemente la seguridad del código a costa de algunos golpes menores de rendimiento, pero donde es mucho peor que C ++ en el consumo y la gestión de la memoria. Es mucho más fácil y menos propenso a fugas en C #, pero los éxitos de rendimiento del GC pueden ser un perro absoluto.
justin
Sin embargo, tenga cuidado al apuntar a la Xbox360. El tiempo de ejecución de XNA carece de la capacidad para algunas de las principales optimizaciones y le impide cambiar partes sensibles al rendimiento a código no administrado.
drxzcl
1

Lo que hizo con Java en este caso fue crear un applet para que pudiera iniciar sesión en el sitio y jugar con un complemento muy común, completamente transparente para el sistema operativo que se estaba utilizando. Me imagino que su pensamiento era que Java era bastante transparente cuando se usaba de esta manera y facilitaría el rápido desarrollo iterativo / prueba que estaba haciendo que los fanáticos hicieran. No creo que puedas hacer esto con XNA porque generalmente el probador debe tener todo instalado, así como el juego y algunos conocimientos generales sobre cómo compilar y ejecutar esto.

Entonces, diría que no hay un cambio de paradigma a partir de esto, simplemente se ajustaba a lo que necesitaba en ese momento y obviamente funcionó bien.

Douglas Rae
fuente
1

Claro, muchos lenguajes de programación tienen futuro en el desarrollo de juegos. Es un falso dilema usado a menudo en la prensa informática que solo puede haber una herramienta de tipo X y que todo el mundo quiere que esto ocurra.

Nada podría estar más lejos de la verdad.

C # y Java se han utilizado en juegos durante mucho tiempo. C y C ++ tienen aún más tiempo, y aún lo son. Lua se utiliza como lenguaje de script para algunos juegos increíblemente populares, con el motor escrito en C / C ++.

Claramente, ningún lenguaje de programación está eliminando otros lenguajes de programación como The Game Programming Language. De hecho, vemos una tendencia a que los juegos líderes se compongan de un lenguaje de programación compilado de alto rendimiento para desarrollar los motores y luego un lenguaje de programación dinámico de nivel superior para escribir cómo se comporta la interfaz de usuario y otras cosas.

La clave en este momento es el rendimiento. Si alguno de los lenguajes / bibliotecas de programación utilizados causa pausas impredecibles / incontrolables en la aplicación, entonces, en un juego de acción, eso caerá de bruces. Sin embargo, en un juego de aventuras basado en texto, eso podría estar bien.

JohnnySoftware
fuente