Saltar a contenido

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é:

  1. ¿Dónde reside el estado actual de cada entidad?
  2. ¿Quién puede solicitar un cambio: jugador, NPC, script o red?
  3. ¿Qué módulo valida la operación?
  4. ¿Qué otros módulos deben participar y mediante qué contratos?
  5. ¿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.


Mencionado desde