¿Qué tecnologías se utilizan para el desarrollo de juegos hoy en día? [cerrado]

14

Cada vez que hago una pregunta sobre el desarrollo de juegos en un foro en línea, siempre recibo sugerencias como aprender algoritmos de dibujo lineal, manipulación de imágenes a nivel de bits y descompresión de video, etc.

Sin embargo, mirando juegos como God of War 3, me resulta difícil creer que estos juegos puedan desarrollarse utilizando técnicas de tan bajo nivel.

La genialidad de tales juegos desafía cualquier metodología de programación comprensible (para mí).

Además, el hardware de juego es realmente un monstruo hoy en día. Por lo tanto, es lógico que los desarrolladores trabajen en un nivel más alto de abstracción.

¿Cuál es la última metodología de desarrollo en la industria del juego? ¿Cómo es que un equipo de 30-35 desarrolladores (de los cuales la mayoría es peluquero de gestión y marketing) es capaz de hacer juegos tan alucinantes?

Si la pregunta parece demasiado general, ¿podría explicar la arquitectura de God of War 3? ¿O cómo harías para producir un clon? Eso creo que debería ser objetivamente responsable.

Monika Michael
fuente
2
¿A alguien le importaría explicar el voto negativo?
Monika Michael
2
Los votos negativos se deben a que la pregunta no es "constructiva". Para citar, "esta pregunta no se ajusta bien a nuestro formato de preguntas y respuestas. Esperamos que las respuestas estén respaldadas por hechos, referencias o experiencia específica, pero es probable que esta pregunta solicite debate, argumentos, encuestas o discusión extendida" . Es decir, la pregunta no puede responderse con precisión. Todavía creo que su pregunta tiene mérito, pero necesita ser reformulada.
9000
2
@ 9000 ¿Y cómo califica esta pregunta como no constructiva?
1
@delnan: probablemente los downvoters no estaban contentos con frases como "¿Cuál es la última metodología de desarrollo en la industria del juego?" . Para mí, "cómo harías para producir un clon" es mucho mejor.
9000
44
¿No tendría esto más sentido en gamedev.stackexchange.com ?
Dan está jugando con Firelight el

Respuestas:

12

Exención de responsabilidad: soy no un desarrollador de juegos de vídeo. Pero tengo un interés "aficionado" en ello.


La mayoría de los juegos AAA que ves están hechos con motores. No están escritos desde cero. Piense en un motor como un marco. Tiene .NET Framework, Java SDK, Cocoa toolkit.

Todo para facilitar su trabajo de crear software y abstraer el código del fregadero de la cocina. Es necesario, pero escribirlo cada vez es muy improductivo.

El uso de estos motores de desarrollador puede construir su juego y no tener que preocuparse por parte del código subyacente. ( No se equivoque, el desarrollo de juegos es una de las ramas más difíciles de la ingeniería de software ) .

Por ejemplo, Unreal Engine 4 tiene un kit de desarrollo y estudio asesino:

http://www.youtube.com/watch?v=MOvfn1p92_8

ingrese la descripción de la imagen aquí

Hay muchos motores diferentes por ahí. Algunos pagaron, algunos gratis, algunos más hasta el metal, otros ofrecen una mayor abstracción.

Por ejemplo:

  • OGRO
  • Motor irreal
  • Unidad
  • Fuente
  • y muchos más...
sergserg
fuente
5

En referencia al comentario de gbjbaanb, algunas de las cosas que hacen que la programación del juego sea divertida es la vida útil limitada de la base del código y la falta de precisiones precisas. Por ejemplo, si está diseñando un juego FPS, y su algoritmo de movimiento a veces coloca a su personaje en unos pocos píxeles, no es gran cosa y es probable que nadie lo note. Si está diseñando una pieza de software empresarial y ocasionalmente su función de suma le ahorra unos pocos dólares, es un error mucho más grave. Entonces, al diseñar juegos, algunos aspectos pueden ser mucho menos precisos (y solo tienen que pasar pruebas humanas, en lugar de un conjunto de pruebas automatizadas que verifica que las respuestas sean correctas).

Mi experiencia ha sido que la programación de juegos, especialmente para juegos en tiempo real, es una experiencia muy diferente de ... casi cualquier otro desarrollo de software que haya realizado, tal vez excepto el trabajo de GUI. ¡Es algo que debes probar!

Ivan
fuente
4

La respuesta es "motores". Muchos juegos están construidos sobre varios gráficos y motores de juego que son básicamente grandes bibliotecas o marcos.

En el mundo de OSS, eche un vistazo a Ogre, por ejemplo, para juegos comerciales que tiene cosas como Source.

Hay otros factores en juego, como que gran parte del código es desechable y no pasaría bien en un entorno empresarial, pero eso se debe a que la vida útil limitada de un juego y las escalas de tiempo de desarrollo acelerado significan que el código está (casi) diseñado solo para trabajar, no para ser mantenido.

gbjbaanb
fuente
Por supuesto, estos motores son abstracciones de construcción de código C / C ++ regulares (aunque altamente optimizadas) además de API de nivel inferior (por ejemplo, DX u OpenGL para gráficos).
Pero es una buena idea tener experiencia creando un juego muy simple usando C o C ++ solo para que el autor tenga una idea de cómo es el desarrollo del juego.
KyelJmD
4

Unity3D es realmente agradable. Aquí hay algunos puntos que me gustan:

  • le permite crear juegos de una manera independiente de la plataforma, y ​​luego crea automáticamente implementaciones para Windows, Mac OS X, Android, IOS. Esto es cierto para la versión actual (3.x). Aparentemente, la versión 4 también le permitirá implementar en Linux:

http://en.wikipedia.org/wiki/Unity_(game_engine)#Major_features

  • Aunque necesita una licencia paga para usarla realmente (comercialmente), puede descargar una versión gratuita en la que puede usar la mayoría de las funciones (es decir, no puede hacer implementables para las plataformas móviles). Es una excelente manera de obtener una vista previa de la cosa antes de que decidas comprarla o no:

http://unity3d.com/unity/licenses

  • Funciona con la mayoría del software de modelado 3D (prefiero 3d Studio Max, pero también es compatible con otros):

http://unity3d.com/unity/editor/importing (desplácese hacia abajo un poco)

  • La codificación (scripting) se puede hacer en C #, que es un buen lenguaje, con una buena API y comprobaciones de tiempo de compilación. Viene con un buen entorno de desarrollo (IDE y todo). Si quieres algo diferente, también es compatible con Javascript.

  • Tiene muy buen soporte físico (colisiones, gravedad, fuerzas, etc.):

http://docs.unity3d.com/Documentation/Manual/Physics.html

  • Tiene una tienda de activos que le permite comprar varios modelos, scripts, animaciones, etc., y dependiendo de su habilidad (y billetera) puede obtenerlos / modificarlos para obtener rápidamente recursos decentes para su juego.

  • Por último, pero no menos importante, es decentemente rápido. Echa un vistazo a las demostraciones móviles, en mi humilde opinión, se mueven bastante bien y tienen gráficos muy decentes:

http://unity3d.com/gallery/made-with-unity/game-list

Aquí hay un buen proyecto de Unity que estoy esperando actualmente:

Wasteland 2 de Brian Fargo

Tienen una buena entrada en el blog sobre por qué eligieron Unity , y otros que discuten cómo funciona .

Shivan Dragon
fuente
3

ID Software es uno de los proveedores que generalmente publica juegos de última generación. Unos años más tarde, a menudo los lanzan como código abierto. En http://fabiensanglard.net/quake3/index.php puede encontrar un análisis del código fuente de Quake3. Esta es una descripción bastante detallada y, aunque Quake3 es bastante antiguo, los conceptos aún deberían ser relevantes para los juegos modernos.

Y sí, si quieres construir un motor de juego moderno, rápido, competitivo y moderno, tendrás que conocer todas esas piezas de bajo nivel. Si no quieres preocuparte por eso: hay diferentes motores (motor quake3 o los de otras respuestas) disponibles pero bueno, entonces no estás creando un nuevo juego revolucionario ;-)

johannes
fuente
Desde el aspecto de ese análisis, Quake 3 es anterior a algunas técnicas vitales de "bajo nivel" del desarrollo de juegos de hoy. Para empezar, sombreadores (suministrados por OpenGL).
Quake 3 fue lanzado en 1999. Sí, eso fue hace mucho tiempo. Pero muestra cómo trabajan las personas que intentan llegar al límite de lo que era posible en ese momento. La mayoría de los otros motores disponibles se inclinan más hacia la reutilización, el código "limpio", etc., en lugar del máximo rendimiento. (Esto no significa que otros motores sean malos y lentos, pero creo que vale la pena verlo si quieres aprender sobre la arquitectura e implementación del motor de juegos 3D)
johannes
Otro artículo relacionado sobre matemática binaria de bajo nivel en juegos 3D, usando Quake como ejemplo: blog.quenta.org/2012/09/0x5f3759df.html
johannes
1

Como muchas respuestas mencionan, los motores de juego y las bibliotecas juegan un papel importante. Sin embargo, tenga en cuenta que esto se aplica a los juegos comerciales medianos más que a los pequeños juegos "indie".

Por ejemplo, en las plataformas móviles, la mayoría de los juegos se escriben usando solo un conjunto de bibliotecas relativamente primitivas en lugar de depender de los motores de juegos en toda regla y los marcos. Existen, pero en su mayor parte se trata de reutilizar su propio código de proyectos anteriores.

zxcdw
fuente