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
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.
Objetivo
Implementar el sistema de turnos con las fases Commit → Reveal → Resolve integradas con el flujo ZK del contrato Soroban existente.
Alcance
TurnManagercon máquina de estados de fasesCOMMIT(el jugador envía acción cifrada),REVEAL(revela clave),RESOLVE(aplica resultado on-chain)contracts/src/lib.rs:init_game,commit_action,reveal_action,finalise_turnSkill de referencia
/godot-turn-systemTareas
autoloads/TurnManager.gdcon enumPhaseyvar current_phasebegin_commit(),submit_commit(hash),begin_reveal(),submit_reveal(key),resolve()submit_commit/submit_revealconJavaScriptBridge(ver #godot-web-bridge)commit_actionvía bridgeTurnManager.begin_commit()EventBus.turn_phase_changed(phase)en cada transiciónAceptació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
Qué conviene mostrar en esta issue:
Pegá las capturas directo en la descripción del PR, arrastrándolas al cuadro de texto de GitHub.