Agregar una mecánica sin acoplar todo el juego¶
Una mecánica suele interactuar con muchas otras: el hambre consume comida del inventario; las heridas afectan salud; las misiones observan derrotas; la IA evalúa todo eso. La dificultad no es evitar interacciones, sino controlar quién posee el estado y quién puede cambiarlo.
Antes de implementar¶
Definí las invariantes: qué valores son posibles, en qué condiciones se activa la mecánica y qué ocurre cuando falla. Después respondé:
- ¿Dónde reside el estado actual de cada entidad?
- ¿Quién puede solicitar un cambio: jugador, NPC, script o red?
- ¿Qué módulo valida la operación?
- ¿Qué otros módulos deben participar y mediante qué contratos?
- ¿Cómo se comprueba el resultado sin una pantalla?
Flujo de una acción¶
flowchart LR
A["Jugador / IA"] --> B["Usar comida"]
B --> C["Validación autoritativa"]
C --> D["Inventario: consumir"]
C --> E["Necesidades: recuperar"]
E --> F["UI: observar"]
No conviene que la UI cambie directamente la saciedad ni que Hunger borre elementos de una lista interna de Inventory. La acción debe resolverse respetando reglas de cada propietario. Una llamada directa puede ser adecuada si los participantes se conocen; un evento sirve mejor para comunicar un hecho a consumidores que no necesitan ser invocados explícitamente.
Implementación progresiva¶
Primero una operación clara, con resultados explícitos y pruebas. Si más adelante hay muchas variantes de comida, trasladá los valores a definiciones declarativas. Si acciones distintas comparten efectos, extraé operaciones reutilizables. Si miles de entidades se actualizan con reglas homogéneas, medí antes de considerar ECS.
Prueba de aceptación¶
Verificá entrada válida, fallos, límites, repetición, persistencia y ausencia de dependencia del render. En multiplayer, probá también que un cliente no pueda imponer resultados sin validación.
La implementación desarrollada de este ejemplo es Receta: incorporar hambre a los personajes. Consultá también Estado del mundo, definiciones e identidad, Módulos de gameplay y contratos, Autoridad: quién puede cambiar el mundo y Intenciones, acciones y eventos.