¿Qué características pertenecen al motor y cuáles a un juego?

19

En este momento, me encuentro implementando y probando nuevas características para mi motor de juego 2D, codificándolas directamente en el motor. Simultáneamente, tengo un juego de escaparate con soporte de secuencias de comandos, que debería llamar a las funciones de los motores. Adjunto, por ejemplo, un movimiento de mosaico fijo a la clase Entidad en el motor, en lugar de escribir esto específicamente para el juego. Esto definitivamente está rompiendo la idea de un motor general utilizado para más de un juego.

¿Hay alguna práctica recomendada para seguir enfocándonos en la implementación correcta en las partes correctas (es decir, motor versus juego)?

Christian Ivicevic
fuente

Respuestas:

25

Bueno, hay un par de formas de pensar sobre esto. Una es enumerar las características específicas que debe tener el motor (lo que ha preguntado aquí). Sin embargo, la otra forma es comenzar a hacer juegos sin preocuparse demasiado por el "motor", y luego las características que encuentre se están reutilizando entre múltiples juegos (en particular, características utilizadas en cada juego) que debe migrar desde la fuente de un juego específico a una base de código compartida llamada "motor".

Porque al final, por qué quieres una característica dada en el motor en lugar de en el juego es que se comparte entre varios juegos. Por lo general, serán cosas como dibujar comandos, controladores de entrada y código de red. Un motor de juego en 2D tendrá muchas características de gráficos en 2D, como cargar imágenes, una jerarquía de visualización con orden z, manejo de hojas de sprites, interpolación, etc. Muchos juegos necesitan simulación física, aunque por otro lado, muchos no. Mientras tanto, más cosas "ocultas" utilizadas en casi todos los juegos incluyen temporizadores, mensajes de eventos e incluso funciones matemáticas específicas para el desarrollo del juego (por ejemplo, distanceToTarget ()


Larga historia corta:

A) El motor debe tener características compartidas por la mayoría de los juegos.

B) Aprendes qué características se comparten al hacer un montón de juegos.

jhocking
fuente
77
+1 -just start making games without worrying too much about the "engine"
JCM
1
Bueno, just start making games without worrying too much about the "engine"definitivamente es una buena sugerencia.
Christian Ivicevic
3
Estoy de acuerdo con los dos comentarios anteriores, pero el comentario "solo hacer juegos sin preocuparse por el motor" se ha sacado de contexto y no tiene sentido sin el resto: "y luego las características que encuentras se están reutilizando entre varios juegos (en particular , características utilizadas en cada juego), debe migrar desde la fuente de un juego específico a una base de código compartida llamada "motor". En resumen, cree tantos juegos como sea posible para que sepa qué debe pasar debajo de un motor y qué no debe t.
2
Esta es una gran idea porque también le impide implementar características del motor que realmente no necesita en sus juegos.
Zachary Yates
2
+1 por mantener el espíritu de la Regla de los tres .
Joshua Drake