Skip to main content

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

TypeDurationDescription
Ranked SprintHours to daysCompete for highest win count or ELO in a short window
Bracket TournamentHoursSingle or double elimination bracket
Swiss TournamentHours to daysSwiss-system pairing for balanced matchups
Community EventVariableSponsored by community/streamer with custom rules
ChallengeOngoingBeat 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

  1. Define event types — what kinds of competitions does your game support?
  2. Configure entry and prizes — token addresses, amounts, distribution tiers
  3. Implement matching — bracket generation, Swiss pairing, or simple ranked play
  4. Track results — server records match outcomes during the event
  5. Submit on-chain — when event ends, submit final standings for prize claims
  6. Optional: enable sponsorship — allow external parties to fund prize pools via smart contract deposit