Технический обзор

Инфраструктура для игр в реальном времени

Rocketic Arena работает на специально спроектированном стеке для мультиплеера с задержкой менее 100 мс прямо в браузере. От игровых движков на WebAssembly до Docker-серверов и WebSocket-прокси — каждый уровень оптимизирован для соревновательной игры в реальном времени. На этой странице описана архитектура, выбор технологий и инженерные решения, лежащие в основе платформы.

Обзор архитектуры

Платформа состоит из шести основных слоёв, работающих вместе для обеспечения браузерного мультиплеера с минимальной задержкой и максимальной надёжностью.

Next.js SSR Фронтенд

React-приложение с серверным рендерингом на Next.js 14 App Router. Обработка маршрутизации, SEO-метаданных, i18n и доставка WebAssembly-модулей игры в браузеры игроков.

Fastify API + WebSocket

Высокопроизводительный сервер Fastify для REST-эндпоинтов аутентификации, лобби, статистики и лидерборда. WebSocket-соединения управляют состоянием лобби, чатом и координацией серверов.

PostgreSQL + Redis

PostgreSQL хранит аккаунты, историю матчей, статистику и достижения. Redis управляет эфемерным состоянием — онлайн-присутствием, данными лобби, токенами сессий и распределением слотов.

Docker-серверы

Каждый игровой сервер работает в изолированном Docker-контейнере с движком Yamagi Quake II или Quake III. Контейнеры создаются по запросу и очищаются после окончания матчей.

Traefik Reverse Proxy

Traefik обеспечивает TLS-терминацию, автоматическое обновление сертификатов, маршрутизацию доменов и балансировку нагрузки между фронтендом, API и игровыми серверами.

OpenTelemetry + SigNoz

Полный конвейер наблюдаемости: распределённые трейсы, метрики и логи собираются через OpenTelemetry SDK и визуализируются в дашбордах SigNoz для анализа задержек и отслеживания ошибок.

Технологический стек

Next.js 14

Серверный рендеринг, App Router, React Server Components и статическая генерация для SEO-страниц. TypeScript везде.

Fastify

Высокопроизводительный фреймворк Node.js API. Обработка 50 000+ запросов/сек с валидацией схем, хуками и плагинной архитектурой.

WebSocket

Постоянные двунаправленные соединения для синхронизации лобби, внутриигрового чата, ленты активности и обновлений лидерборда в реальном времени.

WebAssembly

Игровые движки, скомпилированные в WASM, работают в браузере на околонативной скорости. Без плагинов, без загрузок — просто кликните и играйте.

Docker

Оркестрация контейнеров для игровых серверов. Каждый матч получает изолированное окружение с лимитами ресурсов, автоматической очисткой и мониторингом.

PostgreSQL

Надёжная реляционная база данных для персистентных данных — аккаунты игроков, статистика, записи матчей, достижения и турнирные сетки.

Redis

In-memory хранилище для управления сессиями, состояния лобби, отслеживания онлайн-игроков и pub/sub-распределения событий между сервисами.

OpenTelemetry

Вендор-нейтральный фреймворк наблюдаемости. Собирает трейсы, метрики и логи со всех уровней сервисов для сквозной видимости производительности.

Коммуникация в реальном времени

Браузерный мультиплеер требует преодоления разрыва между WebSocket-соединениями в браузере и UDP-протоколами на сервере. Вот как данные проходят через систему.

1
Браузер подключается к игре через WebSocket (WSS) — шифрованное соединение, дружественное к файрволам, работающее в любой сети без специальных настроек.
2
WebSocket-прокси (q2proxy) преобразует WSS-фреймы в нативные UDP-пакеты, которые ожидает движок Quake, сохраняя порядок и тайминг пакетов.
3
Игровой сервер обрабатывает UDP-трафик на нативной скорости. Ввод игрока и обновления состояния игры проходят обратный путь в браузер на 60+ FPS.

Слоты игровых серверов

Игровые серверы — это динамически выделяемые Docker-контейнеры. При старте лобби или подключении к публичному серверу система автоматически находит или создаёт контейнер.

Динамическое распределение — контейнеры создаются по необходимости и освобождают ресурсы после окончания матчей. Нет простаивающих серверов.
Изоляция ресурсов — каждый игровой сервер имеет лимиты CPU и памяти. Проблема в одном контейнере не влияет на другие матчи.

Наблюдаемость и мониторинг

Каждый запрос, WebSocket-сообщение и событие жизненного цикла сервера трейсируется и измеряется. SigNoz предоставляет дашборды для операционного контроля.

Сквозные распределённые трейсы от клика в браузере до ответа игрового сервера. Выявление узких мест и скачков задержки на любом уровне.
Кастомные метрики: количество игроков, длительность матчей, загрузка серверов, здоровье WebSocket-соединений и время отклика API.

Мульти-домен и CDN

Платформа работает на нескольких доменах с Cloudflare CDN для статических ресурсов, обеспечивая быструю загрузку независимо от местоположения.

Cloudflare CDN кеширует статику, WASM-бинарники и файлы игровых данных на edge-серверах по всему миру для быстрой начальной загрузки.
Мульти-доменная архитектура (rocketic.io + arena.rocketic.tech) с автоматическим определением локали и hreflang-тегами для SEO.

Часто задаваемые вопросы

Попробуй в действии

Испытай инфраструктуру на практике — подключись к серверу или посмотри браузер серверов.

Список серверовИнженерный блог (Скоро)