Events & Tournaments
One-off or recurring competitions outside the seasonal structure.
Purpose
Events provide competitive experiences that are independent of the season cycle. They can be:
- Tournaments — bracket or Swiss-format competitions with a defined start and end
- Weekend sprints — short, time-limited ranked periods
- Community events — sponsored by streamers, guilds, or community members
- Challenges — ongoing conditions (e.g., "win 10 in a row") with optional rewards
Event Types
| Type | Duration | Description |
|---|---|---|
| Ranked Sprint | Hours to days | Compete for highest win count or ELO in a short window |
| Bracket Tournament | Hours | Single or double elimination bracket |
| Swiss Tournament | Hours to days | Swiss-system pairing for balanced matchups |
| Community Event | Variable | Sponsored by community/streamer with custom rules |
| Challenge | Ongoing | Beat a specific condition for a reward |
Event Configuration
{
event_id: "weekend_blitz_001",
name: "Smoke Ring Blitz",
type: "ranked_sprint",
start: "2026-05-01T18:00:00Z",
end: "2026-05-03T18:00:00Z",
entry_fee: {
token_address: "0xGAMEPLAY_TOKEN...", // any ERC-20
amount: 50
},
scoring: "total_wins",
prizes: [
{ rank: 1, settlement_amount: 100, gameplay_amount: 5000 },
{ rank: 2, settlement_amount: 50, gameplay_amount: 2500 },
{ rank: 3, settlement_amount: 25, gameplay_amount: 1000 }
],
achievements: [
{ condition: "participate", achievement_type_id: 10 },
{ condition: "top_10", achievement_type_id: 11 },
{ condition: "winner", achievement_type_id: 12 }
],
// Optional: third-party sponsor
sponsor: {
name: "StreamerX",
funded: true,
fund_tx: "0xSPONSOR_DEPOSIT_TX..."
}
}
Event Lifecycle
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ SCHEDULED │────►│ OPEN │────►│ ACTIVE │────►│ FINALIZED │
│ │ │ │ │ │ │ │
│ config │ │ accepting │ │ matches │ │ results │
│ defined │ │ entries │ │ played │ │ submitted │
│ prizes │ │ fees │ │ standings │ │ prizes │
│ funded │ │ collected │ │ updated │ │ claimable │
└───────────┘ └───────────┘ └───────────┘ └───────────┘
Third-Party Funding
Events can be funded by external parties (streamers, guilds, sponsors):
Sponsor deposits AVAX/USDC into Prize Pool Contract
│
▼
Event registered with funded prize pool
│
▼
Players enter (entry fees added to pool if applicable)
│
▼
Competition plays out
│
▼
Server submits results
│
▼
Winners claim from contract (sponsor funds + entry fees)
Key property: The sponsor cannot withdraw the funds once deposited. The prize pool contract ensures funds go only to verified winners.
On-Chain Settlement
struct EventResult {
bytes32 eventId; // unique event identifier
address[] winners; // ordered by rank
uint256[] amounts; // settlement currency per winner
uint256[] gameplayAmounts; // gameplay currency per winner (optional)
uint256 timestamp; // finalization time
}
Integration Guide
- Define event types — what kinds of competitions does your game support?
- Configure entry and prizes — token addresses, amounts, distribution tiers
- Implement matching — bracket generation, Swiss pairing, or simple ranked play
- Track results — server records match outcomes during the event
- Submit on-chain — when event ends, submit final standings for prize claims
- Optional: enable sponsorship — allow external parties to fund prize pools via smart contract deposit