ManaMesh FairPlay for Godot¶
MIT fair-play cryptography for Godot 4: commit–reveal (dice / hidden boards), public-key keychain, SRA mental poker, shuffle integrity, and Merkle selective-open helpers (Battleship-style grids and similar).
Architecture: Rust cryptography core + GDExtension · GDScript-first · no .NET required.
Early release (v0.1)
This is a technical preview. Desktop binaries and core tests are solid. HTML5 is available as a side-module build; mobile (Android/iOS) is not shipped yet. There is no external security audit — read the threat model before relying on claims.
What this is¶
| You get | You do not get |
|---|---|
| Commit–reveal for hidden values (Liar’s Dice–shaped) | A full multiplayer game |
| SRA mental-poker encrypt / peel on secp256k1 | Matchmaking, lobby, or required netcode |
| Shuffle commit–reveal integrity helpers | Zero-knowledge shuffle proofs (post-preview) |
| Merkle roots / proofs for board-style commit–open (e.g. Battleship) | A full rules engine or game title |
| Prebuilt GDExtension binaries in GitHub Releases | Mobile store binaries (not shipped yet) |
Quick taste (GDScript)¶
var api = ClassDB.instantiate("FairPlayApi")
var faces := PackedByteArray([1, 3, 3, 5, 6])
var c = api.commit_dice_hand(faces)
# Send only c.commitment_hex to peers. Keep faces + c.nonce_hex local until reveal.
assert(api.verify_commitment(c.commitment_hex, faces, c.nonce_hex))
Start here¶
- Getting started — install the addon and run smoke tests
- GDScript API —
FairPlayApi/FairPlayfacade reference - Commit–reveal — primary fairness pattern for dice / hidden values
- Bring-your-own netcode — what may go on the wire
- Threat model — honest limits of the guarantees
Scope¶
ManaMesh FairPlay is a fairness toolkit for multiplayer games: hidden dice, hidden board placement, cooperative deck deal, and related commit–reveal flows.
It is a library, not a full game, lobby/matchmaking stack, or boardgame.io port.