Skip to content

Godot: autoloads (GameState, TurnManager, EconomyManager) #38

Description

@leocagli

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

  • Registrar todos los autoloads en project.godot en orden de dependencia
  • GameState.gd: vars tipadas para units: Array[UnitData], cities: Array[CityData], map_seed: int
  • Método GameState.serialize() -> Dictionary y GameState.deserialize(data: Dictionary)
  • GameState.sync_from_chain(on_chain_state: Dictionary) llamado tras cada resolve()
  • EconomyManager.calculate_yields() recorre ciudades y actualiza GameState.resources
  • Tests mínimos: verificar que serialize → deserialize produce estado idéntico

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    GrantFox OSSPart of the GrantFox OSS campaignMaybe RewardedMay be eligible for GrantFox rewardThird CampaignCampaign: Third CampaigngodotPort a Godot 4

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions