01
Что это
PUBG PRO — турнирная экосистема вокруг одной игры, собранная как набор независимых сервисов. Каждая игровая механика — отдельный микросервис со своей базой, своими тестами и своим правом на ошибку: если падает колесо фортуны, турниры продолжают работать.
Самое сложное здесь — не турнирная сетка, а деньги и одновременность.
Игроки жмут «забрать награду» по пять раз подряд, задания выполняются параллельно, лимиты участников заканчиваются ровно в момент, когда восемь человек нажимают кнопку. Каждая такая механика доведена до состояния, которое мы проверяем конкурентным тестом: восемь параллельных игроков на два места — ровно два победителя, шесть чистых отказов.
02
возможности
Что оно умеет
01
Турниры и лобби
Создание сетки, регистрация команд с обязательным логотипом, автоматическая смена фаз, рассылка лобби участникам, подсчёт PPR-очков с бонусом за среднюю статистику игрока.
02
Задания и квесты
Шесть типов: ручные, ссылки, рефералы, вступление в Discord и Telegram, привязка аккаунта, событийные. Двухфазная выдача — выполнил, потом забрал, — чтобы награда не исчезла на сетевой ошибке.
03
Колесо фортуны и PvP
Настраивается админом полностью: секторы, вероятности, типы наград. Внутренний баланс PUBG, дополнительные прокруты, дни battle pass.
04
Депозиты в TON
Уникальный QR и memo на депозит, вотчер транзакций, зачисление во внутренний баланс. Покупка премиума с баланса с автообменом, если валюты не хватает.
05
Автолечение Discord
Синхронизация каналов и ролей: если канал удалили руками, следующий прогон восстановит структуру, не трогая уже завершённые турниры.
06
Резервирование drop-spot
Игроки бронируют точки высадки на карте: четыре уровня видимости, преференции для Pro-подписки, разведение меток, чтобы они не слипались.
03
архитектура
Как устроено
01
Регистрация и привязка аккаунтов
02
Турниры, лобби, матчи
03
Задания, колесо, PvP
04
Баланс, TON-депозиты, выплаты
05
Discord- и Telegram-контур
Под капотом
- 14 микросервисов на NestJS: auth, tournaments, teams, betting, pvp, tasks, wheel, daily-matches, ws-gateway, admin и другие.
- Kafka как шина событий: реферал завершился, игрок зашёл, матч закончился — подписчики реагируют сами.
- Идемпотентность на уровне БД: уникальные ключи в реестре начислений, а не «проверка перед вставкой».
- Гонки за лимитами решены условным UPDATE с гейтом по местам, а не чтением-и-записью.
- Next.js-фронт: кабинет игрока, админка с RBAC-привилегиями, статистика на recharts.
- Docker Compose на проде, nginx как edge, отдельный постфикс для почты.
04
масштаб
Цифры
14
микросервисов в проде
6
типов заданий
39
юнит-тестов только в tasks-svc
TON
сеть депозитов
