Architecture overview¶
How the pieces fit together: from a player finishing a map in-game to a number on the website.
The integration spine¶
flowchart LR
subgraph game[In-game]
TM[Trackmania 2020 servers]
K[kontrol controllers]
TM <--> K
end
subgraph platform[Kacky platform]
API[Backend]
DB[(Database)]
API <--> DB
end
subgraph clients[What people use]
WEB[Website]
ADMIN[Admin panel]
BOT[Discord bot]
end
K -- "messages" --> API
API -- "web + live updates" --> WEB
API -- "web" --> ADMIN
API -- "notifications" --> BOT
- kontrol: the controllers that run next to the Trackmania 2020 servers, drive them, and report what happens. See The game servers.
- The message bus: kontrol and the backend talk over a queue, so neither has to be online at the same moment. See How the game talks to the platform.
- The backend: the one service that owns all the data and the rules. See The backend and the data.
- What people use: the website (stats, rankings, live status), the admin panel (running events and servers), and the Discord bot.
Why it's split up like this¶
The game servers and the backend have separate lives: servers restart and drop offline; the backend deploys on its own schedule. A queue between them means neither has to wait on the other: kontrol reports what happened, the backend catches up when it's ready. And putting every rule in one backend means there's a single source of truth, so the website, the admin panel, and the bot never disagree.
Who owns what¶
| Question | Where the answer comes from |
|---|---|
| Best times, ranks, world records | Online records only, never raw finishes. See Records vs Finishes. |
| How much a map's been played | Finish counts. |
| Is a server alive? | Its regular check-in: miss enough of them and it's marked offline. |
Going deeper¶
The pages under Architecture break each piece down: the game servers and where they run, how the game talks to the platform, and the backend and the data.