What You Need
challenge.json— metadata file describing the challenge. See Challenges for the schema.- Operator implementation — a module exporting a
createChallengefactory function that returns a ChallengeOperator.
Reference Implementation
The reference implementation providesBaseChallenge<TGameState>, an abstract base class that handles player joins, message routing, scoring, and game lifecycle. You provide the game-specific logic.
engine/challenge-design/README.md—BaseChallengeAPI reference (lifecycle hooks, messaging helpers, scoring)challenges/README.md— guide to designing challenges with examples (PSI, Ultimatum, etc.)scoring/README.md— built-in scoring strategies and how to write new ones
Quick Steps
- Create your challenge folder with
challenge.jsonandindex.ts - Export a
createChallenge(challengeId, options?, context?)factory - Register it with the arena (in the reference implementation: add an entry to
server/config.json)