Skip to content

Latest commit

 

History

History
133 lines (95 loc) · 6.21 KB

File metadata and controls

133 lines (95 loc) · 6.21 KB

Master Server Toolkit - Модули

Обзор

Модули в Master Server Toolkit - это функциональные компоненты, которые предоставляют готовую логику для конкретных аспектов многопользовательной игры. Каждый модуль реализует часть функциональности, необходимой для создания многопользовательной игры, и может использоваться независимо или в сочетании с другими модулями.

Категории модулей

Основные модули

Фундаментальные компоненты для большинства многопользовательских игр:

  • Authentication - Регистрация, вход, управление учетными записями
  • Profiles - Хранение и управление профилями игроков
  • Rooms - Создание и управление игровыми комнатами

Игровые модули

Компоненты для расширения геймплейных возможностей:

  • Achievements - Система достижений и наград
  • Censor - Фильтрация нежелательного контента
  • Chat - Система чата и обмена сообщениями
  • Lobbies - Лобби для подготовки к игре
  • Matchmaker - Подбор игроков и матчей
  • Notification - Пуш-уведомления и оповещения
  • Ping - Проверка соединения и замер задержки
  • QuestsModule - Система квестов и заданий
  • WorldRooms - Постоянные игровые миры

Инфраструктурные модули

Модули для развертывания и поддержки игровой инфраструктуры:

  • Spawner - Динамический запуск игровых серверов
  • WebServer - Встроенный HTTP сервер для API и админ-панели

Аналитика и мониторинг

Модули для сбора и анализа данных:

Архитектура модуля

Каждый модуль обычно включает:

  1. Серверная часть

    • Модуль (*Module.cs) - Основная логика модуля
    • Реализация API (*ModuleServer.cs) - Серверная реализация
  2. Клиентская часть

    • Клиентское API (*ModuleClient.cs) - Интерфейс для клиента
    • Обработчики событий - Компоненты для реакции на события модуля
  3. Общие компоненты

    • Пакеты данных (Packets/*.cs) - Структуры для обмена между клиентом и сервером
    • Модели данных - Классы, описывающие данные модуля
    • Интерфейсы - Контракты для расширения функциональности
  4. Расширения

    • Интеграции с другими модулями
    • Интеграции с внешними сервисами

Использование модулей

Для использования модуля требуется:

  1. Подключение на сервере:

    // Добавление модуля на сервер
    var module = server.AddModule<ModuleName>();
    
    // Настройка модуля
    module.someProperty = value;
    
    // Подписка на события
    module.someEvent += HandleEvent;
  2. Использование на клиенте:

    // Доступ к клиентскому API
    var moduleClient = Mst.Client.GetModule<ModuleNameClient>();
    
    // Вызов методов
    moduleClient.SomeMethod(args, (successful, response) => {
        // Обработка ответа
    });

Взаимодействие модулей

Модули могут взаимодействовать между собой через:

  1. Прямые зависимости - Явные ссылки на другие модули
  2. Систему событий - Слабосвязанное взаимодействие через события
  3. Общий контекст - Доступ к общим данным через MasterServer

Расширение функциональности

Для расширения модуля можно:

  1. Наследоваться от базовых классов модуля:

    public class CustomAuth : AuthModule
    {
        // Расширенная функциональность
    }
  2. Реализовать требуемые интерфейсы:

    public class CustomDatabase : IAccountsDatabaseAccessor
    {
        // Пользовательская реализация доступа к данным
    }
  3. Подписаться на события модуля:

    module.OnSomeEvent += (data) => {
        // Дополнительная логика при событии
    };

Лучшие практики

  1. Минимализм - Используйте только необходимые модули
  2. Абстракция - Работайте с модулями через интерфейсы
  3. Расширяемость - Создавайте наследников для кастомизации
  4. Слабая связь - Используйте события вместо прямых зависимостей
  5. Безопасность - Проверяйте все данные на стороне сервера