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 visual = reward extra
- Si tu PR incluye video demo o capturas de pantalla mostrando la funcionalidad pedida funcionando end-to-end, va a ser considerado para rewards de GrantFox en esta issue. No es obligatorio, pero suma mucho para la evaluación.
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 visual = reward extra