Objetivo
Implementar los singletons globales que mantienen el estado del juego accesible desde cualquier escena y sincronizado con la capa Web3.
Alcance
GameState.gd: estado completo (mapa, unidades, ciudades, jugador activo, turno actual)
TurnManager.gd: fases de turno (ver #godot-turn-system)
EconomyManager.gd: acumulación de recursos por turno
WebBridge.gd: puente JS (ver #godot-web-bridge)
EventBus.gd: bus de señales (ver #godot-signals)
- Serialización/deserialización del estado a
Dictionary para enviar al contrato
Skill de referencia
/godot-autoload-architecture
Tareas
Aceptación
Cualquier escena puede acceder a GameState.units sin importaciones adicionales y el estado se reconstruye correctamente desde los datos on-chain tras un turno.
Objetivo
Implementar los singletons globales que mantienen el estado del juego accesible desde cualquier escena y sincronizado con la capa Web3.
Alcance
GameState.gd: estado completo (mapa, unidades, ciudades, jugador activo, turno actual)TurnManager.gd: fases de turno (ver #godot-turn-system)EconomyManager.gd: acumulación de recursos por turnoWebBridge.gd: puente JS (ver #godot-web-bridge)EventBus.gd: bus de señales (ver #godot-signals)Dictionarypara enviar al contratoSkill de referencia
/godot-autoload-architectureTareas
project.godoten orden de dependenciaGameState.gd: vars tipadas paraunits: Array[UnitData],cities: Array[CityData],map_seed: intGameState.serialize() -> DictionaryyGameState.deserialize(data: Dictionary)GameState.sync_from_chain(on_chain_state: Dictionary)llamado tras cadaresolve()EconomyManager.calculate_yields()recorre ciudades y actualizaGameState.resourcesserialize → deserializeproduce estado idénticoAceptación
Cualquier escena puede acceder a
GameState.unitssin importaciones adicionales y el estado se reconstruye correctamente desde los datos on-chain tras un turno.