Player boundary
Authorization ties a player to the match. A player cannot act for another participant.
Move unseen. Fire together.
Everyone moves in the dark. Everyone fires together.
A little strategy. A lot of “please miss.”
8 seconds unseen.
Your aim is locked.
All shots. Together.
Smaller arena. More panic.
Actual matches. Actual panic.
SOL buy-ins are optional. Bragging happens anyway.
A simple model: charge when a match starts and when someone wins.
USD-equivalent, paid in SOL.
Paid to the developer treasury.
MagicBlock for private rounds. Solana for escrow and payouts.
Escrow stays on Solana. Hidden moves stay in private execution. The authorized server can read them.
Help build a game your friends demand a rematch in.
Try a supervised Devnet match.
Investment terms to be defined.
Last Light splits money, game execution, and player views across separate parts.
Solana stores the match records and funds. MagicBlock handles private game execution.
| Account | Stores | Location / role |
|---|---|---|
| Match settings | Match rules and authorized system roles. | Solana. Shared match configuration. |
| Match state | Participants, current play, and match outcome. | Solana → private execution → cleaned result on Solana. |
| Escrow | Match pot and fees. Tracks whether settlement is complete. | Solana throughout the match. |
| Private access rules | Controls who can read private match state. | Private execution surface. |
Each match separates its players, private play, and funds from other matches.
Wallets confirm entry and participation.
Only authorized actions affect this match.
The pot belongs to this match.
Authorization ties a player to the match. A player cannot act for another participant.
Settlement connects the recorded outcome to the correct match pot and recipients.
Access rules control private reads. Player views hide rivals during the dark phase.
A finished round and a completed payout are separate events.
The host starts only after players have joined and authorized movement.
Wallets deposit buy-ins on Solana.
Authorize play. Host pays start fee.
Move game execution to MagicBlock.
Activate private play. Begin the match.
Wallet signs. Buy-ins enter Escrow. Match state records each player.
Player wallet authorizes a temporary play session.
Host confirms the start. Entry checks complete and the start fee enters escrow.
Match execution moves to MagicBlock. Access rules protect private play before the match begins.
Delegation selects a validator and prevents normal base-layer writes to the delegated state.
| Stage | Solana role | MagicBlock role |
|---|---|---|
| Before delegation | Base game execution | Private execution has not started. |
| While delegated | Delegated execution | Private game execution is active. |
| After commit + undelegate | Base game execution | Execution returns to the base account. |
Synchronize account state to Solana. A commit can leave the account delegated.
Synchronize state and return game execution to Solana.
MagicBlock provides protected execution and controlled access to private match state.
Executes authorized moves.
All positions + aims.
Can see all players.
The game program runs inside a TEE-backed validator. Confidentiality depends on that hardware and runtime.
Private access rules restrict reads to the authorized reader.
Private access must be ready before hidden play starts.
The reader sees full state. Server logic removes opponents’ position and aim from dark-phase views.
The player does not need a main-wallet approval for each movement instruction.
Signs session registration.
Signs authorized game actions.
Checks player authority and match rules.
Stores the accepted movement.
| Action | Authorization | Execution route |
|---|---|---|
| Create / join / authorize / start / delegate | Player wallet or host wallet | Solana. |
| Initialize private permission | Authorized server reader | MagicBlock private execution. |
| Begin match / refresh session | Host wallet / player wallet | MagicBlock private execution. |
| Move / progress round / finish private play | Browser session signer | MagicBlock private execution. |
| Commit + undelegate / settle | Wallet used by host UI | Return result first; settle on Solana. |
Players choose movement and aim. Game execution determines the shared result.
Estimates the remaining phase time.
Shows when the next phase is due.
Chain slot decides if the stage can change.
Early advance fails.
Game execution checks each move against the arena and match rules.
Players share one round outcome. The result does not depend on browser animation order.
Game execution controls phase changes. A browser countdown alone cannot change the result.
Survivors continue in a smaller circle. One survivor ends the match. Zero survivors produces a draw.
The room server is a relay and private reader for chain matches.
YOU: position + aim MINT: position + aim GOLD: position + aimIllustrated information categories.
YOU: your position + aim MINT: alive status GOLD: alive statusNames and alive status can remain visible.
The server authenticates before reading private match state.
The server reads current match state and sends filtered updates to each player.
Only the viewer’s movement and aim are shown. Other players retain identity and alive status.
Server includes actor and shot data. Browser animates the resulting view.
A finished match is a game outcome. It does not mean the funds have already moved.
Winner or draw recorded.
Positions and aims cleared.
Return outcome to Solana.
Check readiness, then pay.
Private play data is cleared before the result returns to Solana.
A completed outcome returns through MagicBlock to Solana after privacy cleanup.
The returned result must be available on Solana before settlement can complete.
Settlement checks the outcome, correct match pot, and recipients before payout.
Program checks, rather than the browser label, define the payout.
| Outcome | Players | Developer treasury |
|---|---|---|
| Winner | Winner receives 95% of the pot. | 5% of the pot plus host start fee. |
| Draw | Each player gets its buy-in back. | Host start fee only. No winning-pot rake. |
| Canceled lobby / pending setup | Buy-ins refunded. Any paid start fee returns to host. | No match revenue from this cancellation. |
The price input is checked before calculating the USD-equivalent host fee.
Host fee is $0.10-equivalent in SOL. Buy-ins remain fixed SOL. Network and account costs are separate.
This is a system overview. Live validation must cover private play through final payout.
Check authorized and unauthorized reads. The authorized server remains a trust boundary.
Observe the result on Solana before confirming that funds moved.
Test interruptions during play and settlement. Confirm the player can understand the remaining state.
Measure live behavior. A system diagram does not establish latency or reliability.