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

14

Cuando hago una pregunta sobre el desarrollo de juegos en un foro en línea, siempre recibo sugerencias como el aprendizaje de algoritmos de dibujo de líneas, la manipulación de imágenes a nivel de bits y la descompresión de videos, etc.

Sin embargo, considerando juegos como God of War 3, me cuesta creer que estos juegos puedan desarrollarse utilizando técnicas de bajo nivel.

La genialidad de estos 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 a un mayor nivel de abstracción.

¿Cuál es la última metodología de desarrollo en la industria del juego? ¿Cómo es posible que un equipo de 30-35 desarrolladores (de los cuales la mayor parte de la gestión y la mercadotecnia de marketing) puedan 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.

    
pregunta Monika Michael 06.09.2012 - 18:42

6 respuestas

12

Descargo de responsabilidad: no soy un desarrollador de videojuegos. Pero tengo un interés "aficionado" en él.

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

Todo para hacer su trabajo de crear un software más fácil y abstraer el código del fregadero de la cocina. Es necesario, pero escribirlo cada vez es muy improductivo.

El desarrollador de estos motores puede construir su juego y no tener que preocuparse por el 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 estudio y un kit de desarrollo extraordinario:

enlace

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

Por ejemplo:

  • OGRE
  • Unreal Engine
  • Unidad
  • Fuente
  • y muchos más ...
respondido por el sergserg 06.09.2012 - 20:15
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 de código y la falta de precisiones requeridas. Por ejemplo, si estás diseñando un juego FPS, y tu algoritmo de movimiento a veces coloca a tu personaje de juego a unos pocos píxeles, no es gran cosa y es probable que nadie se dé cuenta. Si está diseñando una pieza de software empresarial y ocasionalmente su función de suma le ahorra unos pocos dólares, ese es un error mucho más serio. Por lo tanto, cuando se diseñan juegos, algunos aspectos pueden ser mucho menos precisos (y solo tienen que pasar las pruebas en humanos, en lugar de un conjunto de pruebas automatizado que verifica que las respuestas sean precisamente 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 hecho, tal vez excepto por el trabajo con GUI. ¡Es algo que tienes que probar!

    
respondido por el Ivan 06.09.2012 - 19:58
4

La respuesta es "motores". Una gran cantidad de juegos se construyen sobre diversos motores de juego y gráficos que son básicamente grandes bibliotecas o marcos.

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

Hay otros factores en juego, como gran parte del código es desechable y no se aprobaría en un entorno empresarial, pero eso se debe a la vida útil limitada de un juego y a los plazos de desarrollo acelerados, significa que el código es ( casi) diseñado solo para trabajar, no para ser mantenido.

    
respondido por el gbjbaanb 06.09.2012 - 18:52
4

Unity3D es realmente bueno. Aquí hay algunos puntos que me gustan al respecto:

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

enlace

  • Aunque necesita una licencia pagada 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 implementaciones para las plataformas móviles). Es una excelente manera de obtener una vista previa de la cosa antes de decidir comprarla o no:

enlace

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

enlace (desplácese un poco hacia abajo)

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

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

enlace

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

  • Por último, pero no menos importante, es bastante 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:

enlace

Este es un bonito proyecto de Unity que estoy esperando actualmente:

Wasteland 2 de Brian Fargo

Tienen una bonita entrada de blog sobre por qué eligieron Unity , así como otra discusión sobre cómo trabajar con él va a lo largo .

    
respondido por el Shivan Dragon 06.09.2012 - 23:47
3

El software de identificación es uno de los proveedores que generalmente publica juegos de vanguardia. Unos años más tarde, suelen lanzarlos como código abierto. En enlace 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 deben 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 ellos: hay diferentes motores (quake3 o los de otras respuestas) disponibles, pero bueno, entonces no estás creando un nuevo juego revolucionario ;-)

    
respondido por el johannes 06.09.2012 - 20:33
1

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

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

    
respondido por el zxcdw 06.09.2012 - 21:10