modificada la logica de juego e interfaz para acomodarse a su objetivo real. llevado a un punto de al menos 3 jugadores simultaneos

This commit is contained in:
2025-07-03 18:08:29 -06:00
parent f739c6b3c7
commit 656cf7988e
19 changed files with 7190 additions and 231 deletions

138
gameRules.md Normal file
View File

@@ -0,0 +1,138 @@
# 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
```typescript
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}` for `requesting: {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