Интеграция Nakama для серверной части мобильной игры
Вы разработали мобильную игру на Unity? Серверная часть — всегда бутылочное горлышко. Кастомный бэкенд на Go требует минимум месяца разработки, а готовые BaaS-решения, такие как PlayFab или GameSparks, заметно бьют по бюджету. Nakama (GitHub) — open-source игровой сервер, который ложится на вашу инфраструктуру и закрывает ключевые задачи: аутентификацию, матчмейкинг, лидерборды, real-time матчи и хранение данных. Мы интегрировали Nakama в более чем 10 мобильных игр — от казуальных пазлов до competitive PvP-шутеров. Расскажем, как это работает и почему Nakama экономит до 40% затрат на серверную часть по сравнению с проприетарными решениями.
Какие проблемы решает Nakama?
Типичные сложности при разработке серверной части мобильной игры:
-
Аутентификация без сторонних SDK. Nakama поддерживает device ID, email, социальные сети (Apple, Google, Facebook) через единый API. App Store Review Guidelines (Section 5.1) требуют шифрования токенов — мы используем Keychain/Keystore для iOS и EncryptedSharedPreferences для Android. Refresh token обновляется автоматически, сессия не теряется при перезапуске.
-
Матчмейкинг с фильтрацией. Nakama использует запросы в стиле Bleve Search. Вы можете фильтровать игроков по скиллу, региону, режиму игры. Например,
+properties.skill:>1200и+properties.region:eu. Это в 3 раза быстрее кастомной реализации на Go. -
Authoritative матчи для anti-cheat. В relayed матчах сервер только пересылает сообщения — любой клиент может подменить данные. Authoritative матчи на TypeScript выполняют валидацию ходов на сервере, что исключает читерство. Сравнение:
| Характеристика | Relayed матчи | Authoritative матчи |
|---|---|---|
| Серверная логика | Нет | Есть (Lua/TypeScript) |
| Защита от читов | Низкая | Высокая |
| Задержка | Низкая (P2P) | Средняя (сервер) |
| Сложность разработки | Низкая | Средняя |
| Применение | Казуальные игры | Соревновательные игры |
Как мы внедряем Nakama: процесс и стек
Наш стек: Nakama 3.x (сервер), Unity 2022 LTS (клиент), TypeScript (authoritative модули), Kubernetes (оркестрация). Пример кейса: Заказчик хотел real-time PvP-шутер с античитом. Мы развернули Nakama на 3 узлах Kubernetes, настроили authoritative матчи с валидацией действий (проверка скорости, координат, урона), матчмейкинг по MMR и региону. Результат: пинг <50 мс в Европе, ноль случаев читерства за 3 месяца. Стоимость серверной инфраструктуры — на 40% ниже, чем у PlayFab.
Процесс работы и сроки
| Этап | Длительность | Результат |
|---|---|---|
| Аналитика | 1-2 дня | Техническое задание, выбор инфраструктуры |
| Проектирование | 2-3 дня | Архитектура, схема БД, API |
| Реализация базовой интеграции | 3-5 дней | Аутентификация, хранилище, лидерборд |
| Реализация матчмейкинга и real-time | 5-10 дней | Authoritative матчи, матчмейкинг, сокеты |
| Тестирование | 3-5 дней | Нагрузочное тестирование, баг-фикс |
| Деплой и документация | 2-3 дня | Развертывание, мануал, обучение команды |
Общий срок: от 2 до 4 недель в зависимости от сложности. Оценим ваш проект за 1 день — пишите, обсудим детали.
Почему выбирают Nakama вместо кастомного бэкенда?
Nakama сокращает время запуска MVP на 60% по сравнению с написанием сервера на Go или Node.js. Вы получаете готовые модули: аутентификация, друзья, группы, чаты, лидерборды, матчмейкинг. Open-source лицензия (Apache 2.0) — нет Vendor Lock-In. При необходимости кастомной логики — TypeScript или Lua, без смены технологии.
Как работает матчмейкинг в Nakama?
Матчмейкер использует поисковый движок Bleve. Вы задаете критерии: диапазон скилла, режим игры, регион. Пример кода:
var ticket = await client.AddMatchmakerAsync( session, query: "+properties.skill:>1200", minCount: 2, maxCount: 4, stringProperties: new Dictionary<string, string> { ["mode"] = "deathmatch" }, numericProperties: new Dictionary<string, double> { ["skill"] = 1500 } ); socket.ReceivedMatchmakerMatched += matched => { socket.JoinMatchAsync(matched.MatchId); }; При получении matched-события клиент подключается к матчу. Для authoritative матчей на сервере дополнительно валидируется состав игроков.
Типичные ошибки при интеграции Nakama
- Хранение токена в
PlayerPrefsбез шифрования — нарушение App Store Review Guidelines. Используйте Keychain (iOS) или EncryptedSharedPreferences (Android). - Отсутствие rate limiting на сервере — игроки могут спамить запросами. Настройте Nginx или используйте встроенный rate limiter Nakama.
- Не использовать refresh token — сессия истечет через час, игрок вылетит. Реализуйте
client.SessionRefreshAsyncс хранением refresh token. - Игнорирование тестирования под нагрузкой — Nakama держит до 10k одновременных подключений на один узел, но нужно проверять с вашими сценариями.
Что входит в работу
- Полный цикл: аналитика, проектирование, реализация, тестирование, деплой.
- Настройка CI/CD для автоматического развертывания (GitHub Actions, Docker).
- Документация по API и администрированию.
- Обучение вашей команды работе с Nakama Console.
- Гарантия поддержки 1 месяц после запуска.
Наш опыт — 5+ лет разработки мобильных игр, 15+ проектов с Nakama. Закажите расчёт стоимости интеграции — получите предложение в течение дня. Свяжитесь с нами для оценки вашего проекта — расскажем, как Nakama ускорит запуск вашей игры.







