¿Se prefiere C ++ "todavía" en el desarrollo de juegos? [cerrado]

17

Soy un programador de juegos 2D. Algunos lenguajes de programación en los que soy bueno son C, Java, C #. También conozco Actionscript 2.0,3.0 y algunos javascript. Estoy interesado en aprender programación de juegos en 3D. Hasta ahora de la investigación que he acumulado buscando en Google y leyendo diferentes foros y artículos sobre desarrollo de juegos. Me di cuenta de que la mayoría de los programadores tienden a preferir C ++. También en un curso de enseñanza de programación de juegos en línea , noté que prefieren enseñar C ++ y Visual C ++ como el curso inicial. La razón por la que hago esta pregunta, ya que me gustaría saber la diferencia de "fuerza" de C ++, C # y Java para la programación de juegos en 3D.

También incluya enlaces a buenos artículos de programación de juegos en 3D para el programador de juegos ya en 2D.

PD: En mi humilde opinión, también encuentro que C ++ es críptico.

Vishnu
fuente
También lo entiendo mucho. Entonces hice una pregunta en la comunidad sobre qué habilidades debería tener un programador profesional de juegos. Obtuve algunas buenas respuestas centradas en C ++ como un mejor lenguaje para desarrollar juegos. check .. gamedev.stackexchange.com/questions/5552/…
GamDroid
@GamDroid: No estoy interesado en saber qué hace que un programador de juegos 2D profesional. Estoy interesado en saber acerca de Visual C ++ y por qué se habla así.
Vishnu
2
Por cierto: Visual C ++? ¿No solo C ++ simple?
Speeder
El editor de Visual C ++ es genial, pero el lenguaje Visual C ++ (es decir: C ++ con Win32 GUI API y cosas por el estilo, ambos con MS Visual C ++ o Borland C ++ Builder) es bastante confuso y no debe usarse para juegos (también lo es hinchado, y usar GDI es más lento que usar say, SDL, para controlar la ventana)
deslizador
1
@Vish, disculpas entonces, siéntete libre de editarlo para ser más preciso teniendo en cuenta los comentarios hasta ahora. Si quiere decir que la programación de Win32 es confusa, dígalo.
Tetrad

Respuestas:

30

Sí, C ++ es el lenguaje que se usa con más frecuencia (aunque algunas personas todavía usan C).

Hay numerosas razones para esto. El impulso absoluto es uno: es simplemente el lenguaje que se ha utilizado durante años, ya existe mucha tecnología y la gente se siente cómoda con él, por lo que el cambio no va a suceder de la noche a la mañana.

Luego está el tema del control. Los desarrolladores de juegos son fanáticos del control, y nos gusta saber todo lo que sucede en nuestro código. C ++ nos da ese control, C # y Java (para elegir las dos alternativas que mencionas) quitan el control. En muchos sentidos, eso podría ser algo bueno, pero a los programadores de juegos no les gusta :)

Finalmente, está el simple problema práctico de que los SDK para varias plataformas están muy centrados en C ++. El uso de otro idioma inevitablemente implica escribir contenedores, compilar de forma cruzada a máquinas virtuales, y posiblemente (en el caso de algún desarrollo de consola) no está permitido por el titular de la plataforma (para empezar, realmente no les gusta que las personas compilen JIT).

JasonD
fuente
2
En la industria de desarrollo convencional, sí.
JasonD
2
En términos de lenguajes, C ++, principalmente, no irá a ninguna parte en el corto plazo. Yo sugeriría que tampoco estaría de más que estar familiarizado con lenguajes de scripting - Lua, Python, etc
JASOND
8
Visual C ++ no es un lenguaje, es un IDE.
SurvivalMachine
2
Sí, aunque es probablemente el IDE más utilizado, por lo que vale la pena saberlo al mismo tiempo que aprender C ++.
JasonD
1
@SurvivalMachine Bueno técnicamente es un dialecto (hay muchas extensiones de MSVC ++ que no existen en el estándar)
bobobobo
4

Todavía se prefiere C ++, como se puede ver en casi cualquier publicación sobre el tema del desarrollo de juegos. Personalmente, actualmente estoy usando C para sumergirme en el desarrollo del juego por la sencilla razón de que el código C ++ que escribo abusa de las características de plantilla, usa ampliamente RAII, asignación de memoria dinámica y otras cosas que simplemente no debes hacer en el código del juego por lo que he visto hasta aquí.

Seguir con C me obliga a ser minimalista y pensar en lo que estoy haciendo. A veces puede ser más difícil cuando tienes que volver a implementar algo que el STL te da de forma gratuita, pero por el lado positivo, creo que escribo un código más limpio y tengo un mejor tiempo para depurarlo.

Armin Ronacher
fuente
3
RAII es perfectamente aceptable (y debería ser alentado) en el código del juego.
stonemetal
1
@stonemetal: RAII fomenta la asignación de recursos demorada y por lo tanto impredecible. Si eso debe fomentarse o no depende del tamaño de su juego y sus plataformas de destino (y el recurso en cuestión); en promedio no lo alentaría. Además, RAII en C ++ se usa más comúnmente con la asignación del montón, porque el OO de C ++ hace que la asignación de la pila sea demasiado difícil.
3
¿De qué manera la RAII fomenta la asignación tardía de recursos? Cuando uso GLFW hago una clase llamada GLFWRAII que llama a la función init de GLFW en el constructor y llama a la rutina de limpieza de GLFW en el destructor. Lo asigno en la pila al comienzo de main, de ninguna manera retrasa nada ni hace nada impredecible. Otros usos podrían ser asignar al comienzo de un nivel y limpiar al final de un nivel. El uso deficiente de una técnica no la convierte en una técnica pobre. Nada sobre RAII sugiere una asignación de recursos impredecible aparte del mal uso.
stonemetal
Solo debes evitar usar esas funciones. Uso C ++ y nunca uso plantillas en mi código ni tengo objetos que arrojen excepciones en sus constructores. En C todavía puede usar la asignación dinámica (y debe hacerlo para un juego en 3D). Además, debe codificar de una manera que también a otra persona le resulte fácil de entender: un gran proyecto en código C puro puede ser un infierno, incluso si lo comprende. Si aprende a pensar en lo que está haciendo, incluso si el idioma no lo obliga a hacerlo, también podrá escribir código limpio en muchos otros idiomas.
Pablo Ariel
1

Personalmente no soy fanático de C ++, y prefiero Java. Sin embargo, la mayoría de las personas en la industria lo usan y es el lenguaje más fácil de convertir a otras plataformas sin envoltorios y máquinas virtuales.

Sin embargo, a veces otros idiomas funcionan bastante bien para el desarrollo de juegos. Yo uso Java con LWJGL y es increíble. Entonces, si desea comenzar con la programación 3D y OpenGL sin tener que aprender C ++, pruebe LWJGL con Java, porque es muy liviano y creo que en realidad es un código C ++ que se ejecuta a través de JNI.

Quizás a la larga desee cambiar a C ++, pero puede comenzar y practicar con C # o Java. Debido a que la mayoría de los códigos de juegos provienen de la experiencia con el idioma, debes probar y practicar OpenGL con un idioma con el que te sientas cómodo. Además, mientras practica gráficos, también debe probar GLSL con OpenGL, tiene una sintaxis muy similar a la de C

Romejanic
fuente