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.
🎁 Evidencia = reward mayor
- Acá no hay mucho visual que mostrar, así que la evidencia es la salida: tests, logs o respuestas, pegados como bloque de código. Con eso entrás a reward de GrantFox.
- Si además grabás un video corto de los tests corriendo o del flujo reproducido, califica para reward mayor.
- No es obligatorio, pero pesa mucho en la evaluación.
Qué conviene mostrar en esta issue:
- Salida del test de ida y vuelta serialize a deserialize pegada como bloque de código, mostrando que el estado reconstruido queda idéntico al original.
- Log de sync_from_chain después de un resolve(), mostrando el Dictionary on-chain que entra y GameState.units y cities ya actualizados.
- Captura de la sección de autoloads de project.godot con GameState, TurnManager, EconomyManager, WebBridge y EventBus en el orden de dependencia.
Pegá las capturas directo en la descripción del PR, arrastrándolas al cuadro de texto de GitHub.
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.🎁 Evidencia = reward mayor
Qué conviene mostrar en esta issue:
Pegá las capturas directo en la descripción del PR, arrastrándolas al cuadro de texto de GitHub.