Skip to main content

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.

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.

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 formatssingles_1v1 (one Pokemon each), singles_3v3 (three Pokemon, one active at a time), and singles_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 with pokedo 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

FormatTeam sizeDescription
singles_1v11Single Pokemon duel
singles_3v33Pick 3, one active at a time
singles_6v66Full team, one active at a time
The default format when challenging is 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.

Build docs developers (and LLMs) love