Перейти к основному содержимому

Настройка MCE Online

MCE Online добавляет полноценный MMORPG-слой к Monster Capture Engine с использованием Nakama в качестве бэкенда. Это руководство проведёт вас через настройку сервера, конфигурацию клиента и тестирование подключения.

Доступно в уровне Online и выше.

Что такое Nakama?

Nakama -- это игровой сервер с открытым исходным кодом, предоставляющий:

  • Аутентификацию пользователей (email, устройство, SSO).
  • Мультиплеер в реальном времени (WebSockets).
  • Серверно-авторитетную игровую логику (RPC).
  • Матчмейкинг с рейтингами на основе ELO.
  • Таблицы лидеров, достижения и живые события.
  • Облачные сохранения и хранилище.
  • Чат, друзья, гильдии.

MCE Online оборачивает Nakama 18 специализированными сервисами для жанра захвата монстров.

Предварительные требования

  • MCE Core установлен и работает.
  • Docker Desktop (для локальной разработки) или размещённый экземпляр Nakama.
  • Дополнение MCE Online импортировано в ваш проект.

Шаг 1: Запуск сервера Nakama

Локальная разработка (Docker)

MCE включает docker-compose.yml для локальной Nakama:

# Из корня вашего проекта или директории сервера MCE_Online
docker-compose up -d

Это запускает:

  • Сервер Nakama на порту 7350 (gRPC) и 7351 (HTTP/консоль).
  • CockroachDB как базу данных на порту 26257.

Доступ к консоли администратора Nakama: http://localhost:7351

Учётные данные администратора по умолчанию:

  • Имя пользователя: admin
  • Пароль: password
Продакшен

Конфигурация Docker по умолчанию предназначена только для разработки. Для продакшена используйте размещённый экземпляр Nakama (Heroic Cloud или самостоятельное размещение с надлежащей конфигурацией безопасности).

Размещённый (Heroic Cloud)

  1. Создайте аккаунт на heroiclabs.com.
  2. Создайте новый проект Nakama.
  3. Запишите URL сервера и ключ сервера из панели управления.

Шаг 2: Настройка клиента Unity

Ассет OnlineConfig

MCE Online использует ScriptableObject OnlineConfig для настроек подключения:

  1. Перейдите к Assets/MCE_Online/Resources/OnlineConfig.asset.
  2. Если его нет, создайте: Assets > Create > MCE Online > Online Config.

Настройте следующие поля:

ПолеОписаниеПо умолчанию (локально)
Server HostИмя хоста сервера Nakamalocalhost
Server PortHTTP-порт7350
Server KeyAPI-ключ (из консоли Nakama)defaultkey
Use SSLВключить HTTPS/WSSfalse (локально), true (продакшен)

OnlineConfig также содержит настройки:

  • Auto-Connect: Подключаться ли автоматически при запуске игры.
  • Reconnection: Настройки экспоненциального отката для разорванных подключений.
  • Timeout: Длительность тайм-аута запросов.
  • Feature Toggles: Включение/отключение определённых онлайн-функций.

Включение символа MCE_ONLINE

MCE Online требует символ скриптинга MCE_ONLINE:

  1. Перейдите в Edit > Project Settings > Player > Other Settings > Scripting Define Symbols.
  2. Добавьте MCE_ONLINE в список.
  3. Нажмите Apply.

Это активирует все пути кода, связанные с онлайн-функционалом.

Шаг 3: Развёртывание серверного кода

MCE Online включает серверные модули TypeScript для Nakama:

MCE_Online/
Server/
src/
main.ts # Точка входа, регистрация RPC
battle.ts # Серверно-авторитетные RPC боёв
gtl.ts # RPC Global Trade Link
housing.ts # RPC системы жилища
tsconfig.json
package.json

Развёртывание на Nakama

  1. Соберите серверные модули:
cd MCE_Online/Server
npm install
npm run build
  1. Скопируйте собранный JS в директорию data/modules/ Nakama.
  2. Перезапустите Nakama для загрузки модулей.

Для Docker docker-compose.yml обычно монтирует директорию модулей:

volumes:
- ./MCE_Online/Server/dist:/nakama/data/modules

Шаг 4: NakamaManager

NakamaManager -- синглтон, управляющий подключением:

  • Создаётся автоматически при запуске через [RuntimeInitializeOnLoadMethod].
  • Управляет 18 сервисами (Auth, Battle, Economy, Social и т.д.).
  • Обрабатывает переподключение с экспоненциальным откатом.
  • Маршрутизирует всю коммуникацию Nakama через очередь основного потока (потокобезопасно).

Вам не нужно создавать или настраивать NakamaManager вручную. Он читает из OnlineConfig и инициализирует себя сам.

Состояния подключения

Disconnected -> Connecting -> Connected
| |
Offline Disconnected
^ ^
(reconnect) (connection lost)
СостояниеОписание
DisconnectedНет подключения, попытки не предпринимаются
ConnectingПопытка подключения или переподключения
ConnectedАктивное подключение, все сервисы доступны
OfflineНе удалось подключиться, работа в офлайн-режиме

Шаг 5: Тестирование подключения

Быстрый тест

  1. Запустите Nakama (Docker или размещённый).
  2. Откройте ваш Unity-проект.
  3. Войдите в Play Mode.
  4. Проверьте консоль на наличие сообщений о подключении:
[NakamaManager] Connecting to localhost:7350...
[NakamaManager] Connected successfully. Session ID: xxxx

Скрипт тестирования подключения

using UnityEngine;

public class OnlineConnectionTest : MonoBehaviour
{
private void Start()
{
// NakamaManager создаёт себя автоматически
// Проверка состояния подключения через небольшую задержку
Invoke(nameof(CheckConnection), 3f);
}

private void CheckConnection()
{
var nakama = NakamaManager.Instance;
Debug.Log($"Connection State: {nakama.ConnectionState}");
Debug.Log($"Session Valid: {nakama.IsSessionValid}");
}
}

Обзор онлайн-сервисов

MCE Online предоставляет 18 сервисов:

СервисОписание
AuthServiceАутентификация: Email, устройство, SSO
SessionManagerСохранение и обновление токенов
WorldSyncServiceСинхронизация перемещения в реальном времени, фильтрация AOI
PlayerNetworkEntityСетевое представление игрока
BattleServicesСерверно-авторитетные PvP, матчмейкинг
NetworkedBattleManagerОркестрация онлайн-боёв
EconomyServicesGlobal Trade Link, кошелёк, магазин
SocialServicesЧат, гильдии, друзья, торговля
HousingServiceCRUD жилища игрока
PersistenceAndSystemsОблачные сохранения, резервные копии
AntiCheatManagerВалидация скорости, аудит инвентаря
EventServiceЖивые события
LeaderboardServiceРейтинги и очки
AchievementServiceОтслеживание достижений
ModLoaderСерверное управление модами
OnlineCommandBridgeМост онлайн-действий к CommandGraph
OnlineSceneBootstrapperЖизненный цикл онлайн-сцен

Каждый сервис задокументирован в собственном руководстве в этом разделе.

Устранение неполадок

ПроблемаРешение
"Connection refused"Убедитесь, что Nakama запущена (docker ps для проверки)
"Invalid server key"Проверьте, что OnlineConfig.ServerKey соответствует конфигурации Nakama
Ошибки MCE_ONLINEУбедитесь, что символ скриптинга установлен
Тайм-аут при подключенииПроверьте настройки файрвола, правильность хоста/порта сервера
Ошибки RPC "Module not found"Развёрните серверные модули TypeScript и перезапустите Nakama
Ошибки SSL в продакшенеУбедитесь, что UseSSL = true и сертификаты валидны

Следующие шаги