4.9 KiB
4.9 KiB
Snatch or Share - Game Logic
Game Overview
Snatch or Share is a multiplayer game that simulates governance evolution in decentralized exchanges, based on Elinor Ostrom's "Snatch Game".
Game State Structure
Main Game State
GameState {
round: number (1-5)
groups: Group[] // Groups of 3 players
currentPhase: 'waiting' | 'trading' | 'judging' | 'results'
}
Group {
id: string
players: Player[3]
currentJudge?: Player // Only in Round 5
activeTradeOffers: TradeOffer[] // Multiple simultaneous offers
}
Player {
id: string
name: string
producerRole: 'turkey' | 'coffee' | 'corn'
tokens: {
turkey: number
coffee: number
corn: number
}
points: number // Calculated: own_tokens * 1 + other_tokens * 2
shameTokens: number // For Round 4
isSuspended: boolean // For Round 5
role: 'trader' | 'judge' // Only relevant in Round 5
}
TradeOffer {
id: string
offererId: string
targetId: string
offering: { turkey: number, coffee: number, corn: number }
requesting: { turkey: number, coffee: number, corn: number }
status: 'pending' | 'accepted' | 'rejected' | 'snatched' | 'cancelled'
}
Game Initialization
Room Configuration
- Exactly 3 players required to start the game
- Maximum 3 players per room
Producer Role Assignment
- Each player is randomly assigned one unique producer role:
- Turkey Producer: Starts with 5 turkey tokens
- Coffee Producer: Starts with 5 coffee tokens
- Corn Producer: Starts with 5 corn tokens
- Roles cannot be repeated - exactly one producer of each type per game
Judge Role (Round 5)
- In Round 5, one player becomes Judge (rotates each round)
- Judge role is decorative - player keeps their original producer role
- Judge has additional responsibilities but maintains their trading capabilities
Round Flow (Focus: Round 1)
Round 1: State of Nature
- No time limits on turns
- Simultaneous trading: All players can make offers at the same time
- Offer limit: Each player can make maximum 2 offers to each opponent
- Offer format: "I give X tokens in exchange for Y tokens"
- Offer responses: Target player can Accept, Reject, or Snatch
Trading Mechanics
Making Offers
- Players can offer and request any amount of tokens (even more than they have)
- Offers are made simultaneously to multiple players
- Format:
offering: {turkey: X, coffee: Y, corn: Z}forrequesting: {turkey: A, coffee: B, corn: C} - All trade offers are public - visible to all players in the room, not just offerer and target
Resolving Offers
- Accept: Trade executed to the extent possible with available tokens
- Reject: Offer cancelled, no exchange
- Snatch: Receiver gets offered tokens (up to what offerer has) without giving anything in return
- Cancel: Offerer can cancel pending offers
Partial Fulfillment
- All trades execute with available tokens only
- Example: Offer "6 corn for 6 coffee" but only have 5 corn → Execute "5 corn for 5 coffee"
- Example: Accept offer for 8 tokens but only have 3 → Give 3 tokens, receive offered amount
- No negative consequences for partial fulfillment - it's part of the game
Rules by Round
Round 1-2: State of Nature / Anarchy
- No special rules
- All players are Traders
- No enforcement mechanisms
Round 3: Counterproductive Rule
- Mandatory Rule: "All trade offers must be accepted"
- Players still have freedom to snatch
- Reduces agency, invites exploitation
Round 4: Soft Norms (Shame Tokens)
- Each player can assign 1 shame token per round
- If player starts round with 2+ shame tokens:
- Loses 2 tokens before round begins
- Barred from offering trades (can only respond)
Round 5: Governance Rules (Ostrom Adapted)
- Group Roles: Two Traders and One Judge
- Judge Role: Rotates each round
- Applied Rules:
- Position Rule: Judge oversees fairness and conflict resolution
- Boundary Rule: Only group members can trade; Judge may suspend rule-breaker for 1 round
- Choice Rule: Trades are voluntary; Players can report snatching to Judge
- Enforcement Rule: If Judge confirms snatch → goods returned + snatcher forfeits 3 tokens to victim
- Aggregation Rule: Trade only completes with explicit mutual consent
Key Mechanics
Trading
- Exchange Amount: Always 5 tokens of player's own type
- Value System: own_tokens × 1 + other_tokens × 2
- Snatch: Take opponent's tokens without giving anything in return
Point Calculation Examples
- Holding 10 of own = 10 points
- Holding 5 of own + 5 of other = 15 points
- Holding 10 of own + 5 snatched = 20 points
Governance Evolution
- Round 1-2: No trust → no cooperation → suboptimal outcomes
- Round 4: Social deterrents emerge
- Round 5: Governance stabilizes expectations → trust emerges → optimal outcomes through fair trades