PokeDo’s multiplayer features run through a self-hosted FastAPI server backed by PostgreSQL. All single-player features — tasks, Pokemon catching, wellbeing tracking, and the TUI — work fully offline with a local SQLite database. You only need the server when you want to fight other trainers or appear on the global leaderboard.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/tldrwtf/pokedo/llms.txt
Use this file to discover all available pages before exploring further.
What multiplayer includes
- Async turn-based battles — both players submit actions independently; the server resolves each turn once both sides have acted. You don’t need to be online at the same time.
- Three battle formats —
singles_1v1(one Pokemon each),singles_3v3(three Pokemon, one active at a time), andsingles_6v6(full team, one active at a time). - ELO rating system — starting rating 1000, K-factor 32. Winning against higher-rated opponents earns more points. Ranks run from Youngster to Pokemon Master.
- Global leaderboard — sortable by ELO rating, wins, or losses. View any player’s profile from the CLI.
How async battles work
When you challenge another trainer, the server creates a battle record and returns a battle ID. Your opponent accepts the challenge and both players submit their teams. From that point, each player submits their action (attack, switch, or forfeit) independently. The server holds each action until both sides have submitted for the current turn, then resolves the turn at once — applying damage, status effects, faints, and auto-switches — and stores the result. You can check the battle status at any time withpokedo battle status <battle-id>.
Because turns are resolved server-side, neither client can influence the outcome: damage rolls, critical hits, and status effect chances are all calculated authoritatively by the server’s BattleEngine. Teams are snapshotted when submitted, so changes to your local roster after challenging don’t affect an in-flight battle.
Battle formats
| Format | Team size | Description |
|---|---|---|
singles_1v1 | 1 | Single Pokemon duel |
singles_3v3 | 3 | Pick 3, one active at a time |
singles_6v6 | 6 | Full team, one active at a time |
singles_3v3. Pass --format singles_1v1 or --format singles_6v6 to the challenge command to change it.
Where to go next
Server setup
Run the PokeDo server with Docker Compose or uvicorn, configure environment variables, and register your first account.
Battles
Full battle flow from challenge to forfeit, move mechanics, status effects, and damage formula.
Leaderboard
ELO ranking system, rank thresholds, and leaderboard CLI commands.