Skip to content

Backend-Überblick

Komponenten

Komponente Status Einstieg Daten
Nakama Runtime in Entwicklung src/server/nakama/modules/src/main.ts Sessions, Replay-Chunks/Validierung, Results, Manual Leaderboards, Mailbox und Accounts
Registry produktiver Prototyp src/server/registry/main.py Redis-Keys hubserver:*
Dashboard Prototyp src/server/dashboard/main.py liest Registry, WebSocket-Polling
Launcher API produktiver Service src/server/api/main.py Release-Registry JSON + Release-Files
Redis produktiv Compose redis:7-alpine Hub-Registry
PostgreSQL produktiv Compose postgres:12.2-alpine Nakama

Datenfluss

Game3D authentifiziert über Nakama, ruft Run-/Replay-RPCs auf und nutzt Realtime für Chat. Registry ist separat: Headless-Server POSTen Register/Heartbeat/Unregister; Clients lesen /servers. Dashboard zeigt diese Registry-Daten. Launcher/Updater sprechen ausschließlich mit der Launcher-API.

Authentifizierung und Sicherheit

Nakama-Client unterstützt Device/Guest und Email in Integrations/Nakama/NakamaAuthService.cs. RPCs verlangen mit Ausnahme rpc_ping eine ctx.userId. Run-/Replay-Storage ist owner-readable (permissionRead=1) und server-write-only (permissionWrite=0). Console-/Socket-Keys und PostgreSQL-Passwort kommen aus src/server/.env; Launcher-Publishing nutzt Bearer-Token.

Grenzen

Es gibt keine RPCs für PlayerProgression, persistierte Loadouts, Mastery, Weapon-XP oder Unlock-Migration. Replay-Validierung und Manual Leaderboards sind aktiv, führen aber keine vollständige RunDefinition-/World-Re-Simulation aus. SQL-Migrationen liegen unter src/server/nakama/migrations; Node-Tests decken Replay, Scoring, Leaderboards und Mailbox ab. Registry/Dashboard besitzen keine automatisierten Tests, und das Dashboard hat keine Authentifizierung.

Lokal prüfen

Set-Location src/server/nakama/modules
npm ci
npm run build
Set-Location ../..
docker compose --env-file .env -f docker-compose.yaml up --build -d
docker compose --env-file .env -f docker-compose.yaml ps

Weiter: Nakama/RPC, Registry/Dashboard, How-to RPC, Troubleshooting.