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.
just start making games without worrying too much about the "engine"