Skip to content

Godot: sistema de turnos con fases commit/reveal (integración Soroban) #35

Description

@leocagli

Objetivo

Implementar el sistema de turnos con las fases Commit → Reveal → Resolve integradas con el flujo ZK del contrato Soroban existente.

Alcance

  • Autoload TurnManager con máquina de estados de fases
  • Fases: COMMIT (el jugador envía acción cifrada), REVEAL (revela clave), RESOLVE (aplica resultado on-chain)
  • Integración con funciones del contrato contracts/src/lib.rs: init_game, commit_action, reveal_action, finalise_turn
  • Botón "Finalizar turno" en HUD que dispara la fase correcta
  • Ejecución de turno de bots (aleatoria / IA simple en primer sprint)
  • Señales emitidas al EventBus en cada cambio de fase

Skill de referencia

/godot-turn-system

Tareas

  • Crear autoloads/TurnManager.gd con enum Phase y var current_phase
  • Métodos begin_commit(), submit_commit(hash), begin_reveal(), submit_reveal(key), resolve()
  • Conectar submit_commit / submit_reveal con JavaScriptBridge (ver #godot-web-bridge)
  • Lógica de turno de bot: recopilar acciones aleatorias y llamar a commit_action vía bridge
  • Botón "Fin de turno" en HUD que llama TurnManager.begin_commit()
  • Emitir EventBus.turn_phase_changed(phase) en cada transición

Aceptación

Una partida completa de 3 turnos finaliza sin errores, las transacciones Soroban se invocan en orden correcto y el estado on-chain refleja las acciones del jugador.

🎁 Evidencia = reward mayor

  • Si tu PR incluye capturas de pantalla mostrando esto andando end to end, entra a reward de GrantFox en esta issue.
  • Si además sumás un video demo corto, califica para reward mayor.
  • No es obligatorio, pero pesa mucho en la evaluación.

Qué conviene mostrar en esta issue:

  • Video corto de una partida de 3 turnos completa donde se ve el HUD pasando por COMMIT, REVEAL y RESOLVE cada vez que apretás "Fin de turno".
  • Captura del indicador de fase en pantalla junto a la consola de Godot con los EventBus.turn_phase_changed emitidos en orden.
  • Captura del estado on-chain o del explorador de Stellar mostrando init_game, commit_action, reveal_action y finalise_turn invocados en la secuencia correcta.

Pegá las capturas directo en la descripción del PR, arrastrándolas al cuadro de texto de GitHub.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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 4web3-zkStellar / Soroban / ZK

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions