Проект

Кросс­платформенная игра на Unity

Один код на ПК и смартфонах, сетевой бой без рассинхрона и новый режим в релизе за две-три недели

  • Unity
  • C#
  • .NET
  • Multiplayer

Что требовалось от проекта

Один клиент на все платформы

Одно приложение на Unity должно было одинаково уверенно идти и на ПК, и на смартфонах — без урезанной мобильной версии и без отдельной сборки под каждую платформу.

Фундамент с запасом на рост

Клиент и сервер проектировались так, чтобы новый режим или механика не требовали переписывать основу. Гибкость и масштабируемость были требованием, а не пожеланием.

Бэкенд под нагрузку

Быстрый подбор игроков, статистика, личные профили и рабочий внутриигровой магазин — всё это должно было держать наплыв игроков, а не только тестовую сессию.

Выход на массовый рынок

Игру нужно было провести через сертификацию и выпустить сразу в трёх магазинах: App Store, Google Play и Steam.

Четыре биома, смена суток и три стороны конфликта

Быстрый экшен с элементами Battle Royale и командными режимами. Игроки с ПК и смартфонов встречаются на одних серверах.

Смена времени суток меняет правила

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

PvPvE вместо привычного PvP

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

Как устроены клиент и серверная часть

Решения подбирались под две задачи: стабильный сетевой бой и возможность наращивать контент без переделок.

Серверная инфраструктура

  • Выделенный сервер поднимается под каждую сессию и гасится после неё
  • Лобби собирает игроков и разводит их по командам с учётом баланса
  • Профиль хранит статистику побед и место игрока в рейтинге
  • Магазин работает с личным инвентарём и косметическими предметами

Игровой клиент

  • Одна кодовая база закрывает и мобильные устройства, и ПК
  • Клиентское предсказание даёт мгновенный отклик, серверная валидация не даёт его обмануть
  • Лаг-компенсация сглаживает расхождение картинки игрока и состояния на сервере
  • Режимы (Battle Royale, GunGame) собраны модульно: новый формат заводится через MVP-логику

Геймплейные механики

  • ИИ-противники подстраивают поведение, опираясь на кастомную навигационную сетку
  • Оружие, баффы, лут и награды за достижения настраиваются без правок кода
  • Статусные эффекты — ускорение, замедление, изменение урона — синхронизируются по сети точно

Четыре задачи, которые решали отдельно

  1. 01

    Пиковые нагрузки

    Матчмейкинг, игровые сессии и статистику развели по независимым сервисам и подняли в Docker Swarm за nginx с балансировкой. Наплыв игроков упирается в масштабирование конкретного блока, а не всей системы.

  2. 02

    Пинг мобильной сети

    На смартфоне пинг доходит до 150–200 мс. Спрятали его гибридной синхронизацией: часть состояния клиент досчитывает сам, но источником истины остаётся сервер.

  3. 03

    Поведение монстров

    Готовый навмеш не лёг на наш левел-дизайн. Написали свою навигационную сетку: она учитывает динамические препятствия и позволяет управлять появлением монстров на ходу.

  4. 04

    Одна кодовая база

    Условная компиляция и абстракции над вводом и графикой оставили 95% кода общим. Обновление выходит на всех платформах сразу, а поддержка не раздваивается.

Результат

Экшен вышел в трёх сторах и держит нагрузку.

100+ одновременных сессий держит инфраструктура
≤50 мс задержка в игровых сессиях
2–3 недели на внедрение нового игрового режима
95% кода общего для ПК и мобильных

Проект остался платформой, а не готовой коробкой: механики, монетизация и новые рынки добавляются поверх, без переработки основы. Инфраструктура держит 100+ одновременных сессий с задержкой до 50 мс, а очередной игровой режим доезжает до релиза за две-три недели за счёт переиспользуемой архитектуры.

Стек технологий

Клиент
Unity, C#, .NET, fork Mirage (networking)
Сервер
.NET, GRPC, Protobuf, TCP/UDP sockets
Инфраструктура
Docker, Docker Swarm, nginx
База данных
PostgreSQL — профили и статистика, Redis — кеш и сессии
DevOps
CI/CD, мониторинг, логирование
Дополнительно
NuGet, Addressables, ScriptableObjects — настройка геймплея без пересборки

Нужен такой же проект?

Делаем кроссплатформенный мультиплеер с нуля: архитектура, сервер, клиент и публикация в сторах.