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


Полоса каналов, число ближайших игроков и значок задержки — это не макет: это клиент, подключённый к серверу Nakama, а вкладка Hub ниже — то место, где вы направляете его на свой сервер.
Редакции Pro, Source и Studio OpenMon включают 25 интегрированных сервисов, образующих бэкенд для MMO про ловлю монстров, — на базе Nakama, игрового сервера с открытым исходным кодом, которым пользуются студии по всему миру.
Доступно в редакциях Pro, Source и Studio.
Что вы получаете
Редакция Pro расширяет одиночный движок OpenMon многопользовательским бэкендом. Каждый сервис — публичное свойство NakamaManager.Instance, и у каждого есть своё руководство:
| Модуль | Сервисы (свойства NakamaManager) | Руководство |
|---|---|---|
| Аутентификация | Auth, SessionMgr — вход по почте, устройству и SSO (Discord, Google, Apple) с сохранением сессии и автоматическим переподключением | Аутентификация |
| Мир | WorldSync, Channels — общий мир в реальном времени, один матч на карту, серверная область интереса, каналы | Синхронизация мира |
| Сражения | Matchmaker, PvpBattle, Spectator, Raids — серверно-авторитетные дикие и PvP-сражения, подбор по ELO, наблюдение, рейды на 5 игроков | PvP-сражения, Авторитет сражений |
| Социальное | Chat, Guilds, Friends, Trade — каналы и личные сообщения, гильдии с ролями, друзья и присутствие, атомарный обмен между игроками | Социальное |
| Экономика | Wallet, Shop, GTL, Gts, Inventory — серверно-авторитетная валюта, магазины, торговая площадка Global Trade Link и Global Trade Station | Экономика |
| Жильё | Housing, BaseSync, Gym — секретные базы, которые могут посещать другие, живое совместное присутствие внутри базы, залы игроков для вызова | Жильё игрока |
| Хранение | CloudSave — серверное хранение сохранений с обнаружением конфликтов | LiveOps |
| LiveOps | Events, Leaderboards, Achievements, Mods — живые события, рейтинги, достижения, загрузка модов | LiveOps |
| Операции | AntiCheatManager, GameMasterService — проверки против читов и консоль гейм-мастера для тестирования и управления живым сервером | Режим GM |
| Выразительность | Эмоциональные шарики, видимые окружающим игрокам | Онлайн-эмоции |
| Подарки монстров | Стартовые монстры и подарки NPC, создаваемые сервером | Подарки монстров |
Обзор архитектуры
┌─────────────┐ WebSocket ┌──────────────┐
│ Unity Client │ ◄──────────────► │ Nakama Server │
│ (OpenMon) │ │ (Docker) │
└─────────────┘ └──────┬───────┘
│
┌──────┴───────┐
│ PostgreSQL │
│ (Game Data) │
└──────────────┘
Клиент подключается к Nakama через WebSocket для общения в реальном времени. Вся авторитетная игровая логика выполняется на сервере через RPC (удалённые вызовы процедур); мир работает в плагине на Go. PostgreSQL хранит постоянные данные.
Начало работы
Шаг 1: Настройте сервер
Сервер поставляется в виде пакета. На вкладке Online в Hub нажмите Extract Server Bundle, затем запустите его через Docker:
cd path/to/OpenMon-Nakama-Server
docker compose up -d postgres nakama
docker-compose.yml пакета заранее настроен на Nakama и PostgreSQL. Это даёт вам локальный сервер разработки примерно за минуту. На вкладке Online в Hub также есть кнопки Start Server, Stop Server и Show Logs для стека Docker.
Для продакшена можно развернуть сервер у любого облачного провайдера. Nakama поддерживает:
- Heroic Cloud (управляемый, проще всего)
- AWS / GCP / Azure (собственный хостинг, полный контроль)
- DigitalOcean / Hetzner (бюджетные VPS)
Подробности см. в разделе Онлайн-настройка.
Шаг 2: Настройте клиент
В Unity настройте ассет OnlineConfig:
- Откройте OpenMon Hub (
Tools > MCE > OpenMon Hub) → вкладка Online → Online Setup Wizard - Задайте URL сервера (по умолчанию:
127.0.0.1:7350для разработки) - Задайте ключ сервера (по умолчанию:
defaultkeyдля разработки) - Ассет конфигурации находится в папке
Resources(Assets/Resources/OnlineConfig.asset) и загружается автоматически
Шаг 3: Включите онлайн-режим
Добавьте в проект символ define скриптинга MCE_ONLINE (или используйте кнопку Setup Online на вкладке Welcome в Hub, которая сделает это за вас):
- Edit > Project Settings > Player > Scripting Define Symbols
- Добавьте
MCE_ONLINE - Синглтон NakamaManager создаётся автоматически при загрузке первой сцены
Шаг 4: Засейте сервер
Свежий сервер не знает вашей игры. Экспортируйте данные и отправьте их, прежде чем оценивать результаты сражений: см. Засев видов и вкладку Seeding в Hub.
Шаг 5: Проверьте подключение
Войдите в Play Mode. В консоли появятся строки вроде:
[MCE Online] Connected as <DisplayName> (<UserId>)
Откройте второй экземпляр редактора Unity (или соберите автономную сборку), чтобы проверить многопользовательские функции с двумя клиентами.
Создание ключевых функций
Система PvP-сражений
PvP-сражения OpenMon серверно-авторитетны — сервер проверяет каждый ход, предотвращает читерство и обрабатывает отключения.
// Look for an opponent of a similar rating
await NakamaManager.Instance.Matchmaker.StartSearchAsync(eloRating: 1200, tier: "any");
NakamaManager.Instance.Matchmaker.OnMatchFound += (matchId, opponent) =>
{
// the authoritative battle then runs in a shared server-owned match
};
Система подбора ищет в окне рейтинга вокруг ELO игрока и поддерживает отмену поиска. Наблюдение и рейды на 5 игроков находятся в том же модуле: см. PvP-сражения.
Система обмена
Обмен, проверяемый сервером, предотвращает дублирование предметов и обеспечивает честный обмен:
var trade = NakamaManager.Instance.Trade;
string tradeId = await trade.RequestTradeAsync(partnerId);
await trade.OfferMonsterAsync(tradeId, monsterId);
await trade.OfferItemAsync(tradeId, "rare_candy", 5);
// Both players confirm; the server then executes the trade atomically
await trade.ConfirmTradeAsync(tradeId);
Система гильдий
GuildInfo guild = await NakamaManager.Instance.Guilds.CreateGuildAsync(
name: "Gym Leaders United", tag: "GLU", description: "Welcome!");
// Guilds have roles (promote, kick), search and member limits
Жильё игрока
Жильё позволяет игрокам настраивать личные пространства:
- Построить секретную базу и обставить её из каталога
- Позволить друзьям посетить её (сохранённый снимок или вживую, всем вместе внутри базы)
- Бросать вызов залам других игроков
- О трёх слоях см. Жильё игрока
Экономика и торговая площадка
Серверно-авторитетная экономика предотвращает инфляцию и эксплуатацию:
- Кошелёк и магазины — сервер владеет балансом и назначает цены предметам
- Global Trade Link (GTL) — игроки выставляют монстров и предметы на продажу; другие игроки ищут и покупают, с комиссией за лот и сроком действия
- Global Trade Station (GTS) — сдайте монстра и попросите взамен другой вид
Консоль гейм-мастера
Управляйте живым сервером и тестируйте его из редактора или в игре с помощью глаголов Режима GM.
Масштабирование для продакшена
Серверная архитектура для масштаба
Мир построен так, чтобы быть дешёвым на игрока: сервер отправляет каждому клиенту один пакет за тик только с тем, что он видит. Приведённое ниже определение размеров — ориентир для п ланирования, а не обещание: измеряйте собственное развёртывание.
| Одновременные игроки | Инфраструктура |
|---|---|
| 1-500 | Один Nakama + PostgreSQL |
| 500-5 000 | Кластер Nakama (2-3 узла) + управляемый PostgreSQL |
| 5 000-50 000 | Автомасштабируемый кластер Nakama + реплики для чтения |
| 50 000+ | Региональные кластеры + глобальный подбор |
Затраты на хостинг (оценка)
| Масштаб | Ежемесячные расходы |
|---|---|
| Разработка | $0 (локальный Docker) |
| Мягкий запуск (100 CCU) | $20-50/мес (VPS) |
| Работа (1 000 CCU) | $100-300/мес |
| Рост (10 000 CCU) | $500-2 000/мес |
Это грубые оценки. Фактические расходы зависят от расположения сервера, трафика данных и размера базы данных.
Что построил PokeMMO и что вы получаете в комплекте
| Функция | PokeMMO (своя разработка, 10+ лет) | OpenMon Online (в комплекте) |
|---|---|---|
| Мир в реальном времени | Собственная сетевая часть на Java | Матч Nakama на карту, серверная область интереса |
| PvP-сражения | Собственный боевой сервер | Серверно-авторитетный PvP |
| Обмен | Собственный протокол обмена | Проверяемый сервис обмена |
| Чат | Собственный чат-сервер | Чат-каналы Nakama |
| Экономика | Собственная торговая площадка | Площадки GTL / GTS + кошелёк и магазины |
| Античит | Собственная серверная проверка | Серверно-авторитетная логика |
| Гильдии | Собственная система гильдий | Группы Nakama + расширения |