¿Qué tan difícil es construir un motor de juego?

Técnicamente , no es tan difícil.

Psicológicamente , muy duro.

Desarrollar un motor de juego es tan simple como perder peso. Necesita comer sano y correr 6 millas por día. La parte difícil de perder peso es la batalla psicológica contigo mismo.

No hay mucha diferencia con el desarrollo de un motor de juego. Técnicamente, necesita aprender OpenGL, C ++, Python, Patrones de diseño, Algoritmos y Álgebra lineal. Pero esa es la parte fácil. La verdadera batalla es la batalla interna con tu propia mente pidiéndote que renuncies.

He estado desarrollando un motor de juego durante aproximadamente dos años y cada día pienso en dejarlo. Es doloroso, psicológicamente, trabajar en algo durante tanto tiempo y ver pocos o ningún resultado. Te vuelve loco mirar los algoritmos día tras día y no tener idea de cómo implementarlos. Te destroza los nervios saber que después de semanas de depuración no puedes encontrar una respuesta.

Aunque quiero dejar de fumar, me encanta trabajar en el motor. Es un sentimiento satisfactorio y aterrador superar tus límites intelectuales y psicológicos. Intelectualmente, no serás el mismo. Tus habilidades de desarrollador se dispararán. Psicológicamente, te darás cuenta de que tu enemigo más duro es y siempre será tu propia mente.

Si decides desarrollar un motor de juego, prepárate para descubrir las siguientes verdades:

  • Será un proceso lento
  • Tendrás toneladas de lecturas que hacer
  • No habrá mucho que mostrar después de todo el trabajo duro
  • Puede ser un poco caro

Aparte de estos problemas, desarrollar un motor de juego es divertido. No tienes idea de lo bien que se siente dar vida a los píxeles, simular la física y verlos colisionar. Pruébalo, es una sensación increíble.

Escribir un motor de juego es un poco como escribir un sistema operativo.

En realidad no es tan difícil.
Requiere comprender muchas disciplinas diferentes.
El producto resultante podría no ser particularmente útil.

Un motor de juego necesita …

  • Resuelve el problema de renderizado. Con algún tipo de gráfico de escena y canalización de representación.
  • Resolver el problema de gestión de activos. Con un sistema que se ocupa de cargar elementos en la memoria. (Y deshacerse de ellos de nuevo)
  • Resuelva el problema de autoría del juego, permitiendo que se adjunten fragmentos de código a las entidades para realizar la simulación del juego.

Un individuo puede escribir código que resuelva todo esto. Y al hacerlo, obtendrás mucha información sobre la ingeniería de juegos. Pero para ser realmente útil, esa tecnología necesita bastante funcionalidad.

Por lo tanto, un motor de “peso mosca” simple podría requerir aproximadamente 6 meses-hombre de trabajo. Pero los grandes motores comerciales representan décadas de inversión o incluso siglos de inversión. Se extienden a herramientas personalizadas, a motores de audio, simulaciones físicas, efectos de partículas y subsistemas de red.

La conexión en red por sí sola es un problema enormemente complejo, que también exige cambios en la arquitectura central del motor del juego.

Los motores grandes son tan complejos que son compatibles con los equipos. No por individuos solteros.

El motor del juego es siempre la parte más complicada de cualquier juego, en cuanto a programación. La razón por la cual todos los motores que enumeró son populares es porque generalmente afeitan literalmente años al desarrollo de cualquier juego AAA. Cuestan mucho, pero tienen tantas ventajas en cuanto a tiempo, dinero, asistencia, etc., que son difíciles de ignorar. Hacer un motor realmente funcional y libre de errores desde cero es algo con lo que las compañías de juegos de hoy no quieren involucrarse. Sin embargo, es cierto que si puedes reutilizar esa tecnología para varios juegos, podría ser de tu interés hacer uno.

Si puedo hablar por nuestra empresa, somos un equipo independiente con un calendario y un presupuesto ajustados. Fuimos con Unity y ahora podemos concentrarnos por completo en hacer la mejor experiencia de usuario posible en lugar de depurar el motor durante meses.

Sin embargo, admito que hacer un motor es probablemente uno de los mejores ejercicios de programación que puedes hacer. Es solo que puede ser una tarea desalentadora.

No es tan difícil hacer una simple, pero si quieres hacer algo como Unreal o Unity por ti mismo, prepárate para decepcionarte. Los juegos que mencionas usan motores extremadamente complejos que llevan años a equipos de muchos desarrolladores expertos y experimentados para escribir.

Si quieres entrar en el desarrollo del motor de juego, te sugiero comenzar con uno simple en 2D.

¿Que necesitas?

1) Abre una ventana

2) Obtenga la entrada del usuario desde el mouse, el teclado, los toques, los joysticks, etc.

3) Matemáticas básicas: vectores, matrices, etc.

4) Carga texturas y dibuja sprites

5) Cargar sonidos / música y reproducirlo

6) Dibujar texto

7) Cualquier otra cosa que quieras …

Para algunos de estos, puede encontrar una variedad de bibliotecas para hacer el trabajo difícil. Entonces solo necesita juntarlos y hacer una API coherente.

Es muy difícil hacer un buen motor de juego que pueda competir con la cosecha actual de motores de juego de alta calidad (y gratuitos). También es casi imposible hacerlo solo. Otro problema es que es muy poco probable que puedas desarrollar un motor de juego y un juego simultáneamente, he visto que muchos de estos proyectos fracasan.

Podrías hacer un motor de juego mínimo tú mismo, pero prepárate para matar el proyecto del motor del juego y usar un motor de juego existente cuando realmente quieras concentrarte en terminar un juego real.

Es difícil cuantificar la dificultad.

Es extremadamente dificil.

Los motores de los juegos de los que habla cuestan literalmente millones de dólares para desarrollarse a través del trabajo de muchas personas a lo largo de los años.

Muchos motores de juego son muy flexibles y pueden usarse para muchos géneros. Por ejemplo, mencionaste Cities: Skylines que se hizo con Unity. Puedes ver la gran variedad de juegos hechos con Unity aquí.

http://madewith.unity.com/

Cocinar las cosas puede ser un desafío, mientras que el conocimiento técnico (aunque es una lista desalentadora, he perdido la cuenta) no lo es; Aquí hay que decir que la creatividad y el ingenio técnico es lo que planteará seriamente un desafío al desarrollar un motor de juego, y no tanto la complejidad tecnológica.

Como anécdota, también podría decir aquí que muchos cursos de pregrado en desarrollo de juegos requieren el desarrollo de un motor de juego (básico) desde cero. Para aquellos que aprenden la tecnología, es casi un pecado capital perder este proyecto, que será mucho más enriquecedor que cualquier artículo o libro sobre cómo funcionan los motores de juego y por qué son útiles.

Si está desarrollando sistemas de bajo nivel (microprocesadores, ensamblador), no verá ningún resultado. Necesitas saber lo que te gusta. Creo que si te sientes incómodo, trata de usar diferentes herramientas. Tal vez use Unity3D, si solo desea crear un juego, y no le importa demasiado el código. Desde el otro lado, el código de Unity3D no se optimizará bien para esta tarea.

Desarrollé un motor 3D para J2ME sin OpenGL y otras API.

mi ejemplo de juego:

– No utilicé el punto flotante, porque algunos teléfonos como Nokia con Symbian 7 no son lentos, pero no es compatible. Usé punto fijo por valor entero.

– sin, la función cos acaba de precompilar como matriz para 360 grados.

Solo uso la función para dibujar una matriz entera en la pantalla. Crear matriz como

pantalla int estática [240 * 320];

Leí más sobre las técnicas de rasterización, cómo dibujar los triángulos y cómo se texturizan …

Estoy de acuerdo, crear motores de juego es una tarea interesante pero ingrata. El resultado puede verse en un futuro lejano, y puede hacer que la junta trabaje en él.

Equipo de desarrollo de iOS iOS Devforfun