Reference
Gaffer On Games
Классические материалы по сетевой модели real-time игр и синхронизации состояния.
Real-time Gaming - это система с жёсткими ограничениями по latency, где важны не только масштабирование и отказоустойчивость, но и справедливость геймплея. Архитектура обычно опирается на authoritative server, event stream и региональное размещение матчей.
Требования
Функциональные
- Матчмейкинг игроков по рейтингу, региону и latency budget.
- Авторитетный игровой сервер с real-time state updates.
- Синхронизация позиций/событий (movement, shots, collisions, abilities).
- Поддержка reconnect и восстановления сессии после коротких обрывов.
- Лидерборды, статистика матчей и post-game события.
Нефункциональные
Latency: p95 < 80ms
Input-to-action задержка должна быть предсказуемой и низкой.
Tick Rate: 20-60 TPS
Стабильный simulation loop для честного gameplay.
Availability: 99.99%
Матч не должен падать из-за сбоя одного node/zone.
Fairness: anti-cheat + anti-abuse
Сервер валидирует действия, клиент не источник истины.
High-Level Architecture
Architecture + Scenario Explorer
Authoritative multiplayer topology with interactive scenario pathsAccess and Control Plane
Real-Time State and Data Plane
Главный принцип: tick loop должен быть изолирован от медленных внешних операций. Любая тяжелая логика уходит в async pipeline вне критического пути.
Надёжность и anti-patterns
Production-паттерны
- Region-aware placement: игроки матчатся внутри latency-бюджета.
- Sticky session для UDP/WebSocket потока в рамках матча.
- Hot standby game servers и быстрое переподнятие матча при node failure.
- Snapshot + delta updates для снижения bandwidth и быстрого resync.
- Backpressure/queue limits на ingress, чтобы защищать simulation loop.
Опасные решения
- P2P authoritative gameplay для competitive режимов (высокий риск читов).
- Глобальный matchmaking без региональной сегментации по latency.
- Синхронные внешние вызовы (DB/HTTP) внутри tick loop.
- Отсутствие reconnect window и механизмов state resync.
- Слишком подробный full-state broadcast вместо компактных diff-пакетов.
Что хранить персистентно
- Player profile и progress.
- Match history и ключевые telemetry counters.
- MMR/ranking snapshots и leaderboard агрегаты.
- Inventory/economy события (если есть монетизация).
- Audit trail для moderation и anti-cheat расследований.
Связанные главы
На интервью критично проговорить trade-off между сетевой плавностью (client-side prediction) и честностью (server authority + reconciliation + anti-cheat).
Если latency budget превышен, лучше деградировать matchmaking (регион/ранг), чем ломать игровой опыт.
