Інтеграція 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 прискорить запуск вашої гри.







