Núcleo de simulación y scheduler¶
El núcleo de simulación organiza tiempo, intenciones y orden de ejecución. No debería convertirse en una clase GameWorld que contiene por sí sola la lógica de combate, inventario, economía y relaciones sociales.
flowchart TB
I["Jugador, NPC o test"] --> Q["Intenciones"]
Q --> V["Validación"]
V --> T["Scheduler"]
T --> C["Sistemas de gameplay"]
C --> W[("Estado del mundo")]
W --> P["Presentación y consultas"]
Responsabilidades concretas¶
El kernel coordina el avance de ticks y cuándo se procesan acciones. Cada feature conserva sus reglas: Inventory decide si un contenedor admite un objeto; Combat calcula daños válidos; Quests mantiene progresos. El scheduler puede imponer fases y dependencias, pero no sustituye los contratos de cada sistema.
No todas las actualizaciones necesitan la misma frecuencia. Física, planificación táctica y economía pueden tener relojes distintos. Para procesar en paralelo, identificá qué datos lee y escribe cada sistema y cómo se resuelven conflictos.
Solución mínima frente a crecimiento¶
Para un juego pequeño, un método Update con una secuencia explícita puede ser suficiente. Extraé un scheduler cuando el orden, las frecuencias, las pruebas, el replay o la red exijan mayor control.
Una prueba valiosa: ejecutar un millar de ticks sin inicializar cámaras, audio ni interfaz. Si esa prueba no es posible, posiblemente el render se mezcló con las reglas.
Relacionado: Elegir un game loop, Autoridad: quién puede cambiar el mundo, Módulos de gameplay y contratos, Probar la simulación y medir antes de optimizar.