Дневник разработчиков: Система подбора игр и новый режим

Всем привет!

Откатимся до 2021 года - а именно, к нашему посту: https://vk.ru/wall-97266992_64393

-Подбор игровых сессий
В разработке полноценная система подбора игровых матчей. Нами уже реализована полноценное лобби (Промежуточный сервер, в который игрок попадает перед игрой), в котором мы имеем полный доступ к работе сайте, что позволит в будущем внедрить систему друзей, напарников, чаты, и ряд других активностей. Но ближайшей станет именно подбор игры, задача которого динамически получать пул доступных серверов, и отправлять игрока на свободный сервер по нажатию одной кнопки.

Да, прошло 4 года, и в данный момент мы спешим сообщить о том что система внутриигрового матмейкинга завершена практически на 80%, и уже совсем скоро начнёт внедряться под все игровые сервера!

Что такое матчмейкинг?

Перед тем как перейти к демонстрации нашей реализации, немного объяснимся и сравним систему с оригинальной игрой.

Матчмейкинг (от англ. matchmaking - подбор пары) -это система в видеоиграх, которая автоматически ищет и объединяет игроков для совместного или противоположного матча.

Вы сталквиваетесь с ней почти в любой современной онлайн игре:
1) Counter-Strike, когда нажимаете кнопку «Найти матч»
2) PUBG, когда нажимаете «Играть»
3) Средневековые ММО, когда нажимаете «Войти в подземелье»

Все эти игры объединяет одна простая, но довольно глубокая цепочка:
Собрать игроков → Разделить игроков → Создать сервер для игроков

Что такое Public Host (Или «паблики»)

Public game host (публичный игровой хост) - это общедоступный сервер или компьютер игрока, который запускает сетевую игру и принимает подключения от любых пользователей из интернета

Дневник разработчиков: Система подбора игр и новый режим, image #1

Оригинальный мультиплеер сталкера работает именно по этой системе, и опираясь об данную систему приходилось работать и нам в том числе.

Что было на ранних этапах:
1)Игровой сервер
2)Информация о Лобби сервере, переданная в лаунчер (IP Адрес + пароль)
4)Лобби-сервер содержит информацию о иных серверах для переходов и подключений

Т.е фактически, лобби всё так же оставалось таким же мастер-листом, но оформленное в более удобную обёртку.

Лобби НЕ ЗНАЕТ:
1)Сколько игроков на сервере
2)Сколько CPU/ОЗУ свободно на машине
3)Какой сервер сейчас заблокирован/недоступен/выключен

И это… сильно сковывает движения так и для нас, разработчиков, так и для игроков. Это означает, что отряды не смогут одновременно подключиться на один и тот же сервер - а игроки при попытке подключиться на заполненный сервер, будут получать ошибку «Сервер заполнен» - вместо того, чтобы дожидаться свободного слота автоматически. А так же… Игра не может динамически формировать сервера для сессионых матчей, которые должны начаться, завершиться, и выключиться, чтобы не занимать CPU/ОЗУ основной хост машины.

Старая реализация

Дневник разработчиков: Система подбора игр и новый режим, image #2

Пробежимся по простой схеме:
На картинке изображено 4 ноутбука - наши игроки, которые хотят поиграть на сервере. Ранее, подключение происходило именно так, как мы описали выше, и как изображено на этой схеме

На схеме не изображено то, что игровой сервер общается с базой данных - Да и это не особо важно.

Из-за отсутсвия распределения, мы можем отправить игрока на другой сервер только в том случае, если он сам выберет его. А мы намерены это победить, тем, что сервер теперь не является изначальной конечной точкой подключения: Всё происходит куда сложнее

Новая реализация

Дневник разработчиков: Система подбора игр и новый режим, image #3

Теперь, текущая архитектура в максимально упрощённом ввиде выглядит примерно так:

1)Игровой клиент требует запрос на подключение к игровому серверу
2)Координатор получает этот запрос, и смотрит его по критериям (Один он, или играет отрядом - нужен ли ему одиночный матч/матч на большое количество игроков и т.д)
3)Координатор собирает информацию о других игроках и их запросах
4)Координатор отправляет запрос на агент, о возможности формирование сервера
5)Агент отправляет координатору информацию о том, получится ли создать сервер
6)Координатор возвращает эту информацию игроку ввиде сообщения, например: «Ожидание формирования матча»
7)Агент сообщает координатору о том, что сервер готов и передаёт его конечные данные
8)Координатор отправляет информацию о сервере клиенту
9)Текущий игровой сервер обрабатывает запрос координатора, и подключает его в сформированный матч
10)Агент отслеживает текущее состояние матча, и сообщает информацию координатору о его завершении при необходимости
11)Координатор передаёт эти данные в базу данных при необходимости (Например для сохранения истории матчей)

Если вам ничего не понятно, то мы вас понимаем :D
Объясним на примере нового технического игрового режима - DGM (Dungeon Game Mode) и об трёх внешних утилитах: Server Manager, Coordinator и Agent.

Система подземелий и сессионых игровых серверов

Демонстрация системы подбора игр, на примере одиночного PvE матча:
(YouTube: https://youtu.be/Wsz3YFly5P8)

Статус «Подготовка игры»
Статус «Подготовка игры»
Статус «Ожидания игроков»
Статус «Ожидания игроков»

На видео представлен пример подключения в отдельный генерируемый сессионый матч. Применять данную систему мы можем для ВСЕХ без исключений серверов, чтобы оптимизировать потребление игровых ресурсов и упростить игрокам поиск игр, или переходы по локациям (Например между кластерами)

Технический Dungeon Game Mode

DGM (Или же «Лаборатория») - новый PvPvE режим, разделённый на несколько подрежимов: PvP, PvE, и режим «Story».

DGM - PvP

Дневник разработчиков: Система подбора игр и новый режим, image #6

Вариация PvP режима представляет с собой следующий формат:

1)Несколько отрядов появляются в случайных местах определенной лаборатории (Мап-пул лабораторий будет расширяться)
2)Ищут предметы, воюют против мутантов, друг с другом при столкновенние
3)Должны найти выход
4)В случае смерти, игроки теряют все предметы которые были с собой.

Дневник разработчиков: Система подбора игр и новый режим, image #7

PvP режим не включает в себя дополнительных задач - имеет изначально повышенный шанс на редкие предметы для этой лаборатории, и предназначен строго для подготовленных игроков.

Играть можно в режим SQUAD VS SQUAD, а так же SQUAD VS SOLO, если не получилось подобрать одиночного игрока для равного матча. Размер отряда не имеет значения.

DGM - PvE

Вариация PvE режима представляет с собой следующий формат:

Дневник разработчиков: Система подбора игр и новый режим, image #8

1)Один отряд или одиночный игрок появляются в случайных местах определенной лаборатории
2)Ищут предметы, воюют против мутантов, друг с другом при столкновенние
3)Должны выполнить отдельное, генерируемое задание (Например найти документы, или убить определенное количество мутантов)
4)В случае смерти, игроки теряют все предметы которые были с собой.

PvE режим имеет изначально пониженный шанс на выпадение редких предметов, и используется для тренировки и безопасной игры.

DGM - Story

Дневник разработчиков: Система подбора игр и новый режим, image #9

Режим «Истории» - уже включает в себя не только лаборатории, а почти любые необходимые нам локации, и будет использоваться в NET Online для реализации отдельных сложных срежисированных сюжетных сцен.

Нам пришлось прибегнуть к такому решению из-за нашего виденья:
Мы не хотим создавать локальные сервер или использовать Single Player режим по одной простой причине - такие квесты невозможно будет проходить в кооперативе. Мы хотим включить возможность прохождения не только подобных сюжетных «сессий», но и даже пролога модификации, поэтому играть вместе с друзьями можно будет с первого запуска модификации.

Запускаться такой подбор будет в строго необходимые сюжетные моменты модификации. И будет иметь разные правила по отношению к загрузке/сохранению предметов.

Зачастую, именно Story режим будет открывать доступ к повторному перепрохождению в PvP или PvE вариациях определенных лабораторий или локаций.

Возвращаемся к технической составляющей: Coordinator

Выше вы увидели пример использования системы матмейкинга для режима DGM. Как вы видите, теперь игра умеет понимать, сколько игроков готово начать игру, сколько игроков требуется, являются ли участниками отряда, и соответствуют ли они нужным критериям.

Разберём инструмент, который используется в нашей цепочке: xrCoordinator.

Задача координатора - собрать, накопить, и разослать информацию агентам о том, что N-ое количество игроков хочет получить игровой сервер.

Дневник разработчиков: Система подбора игр и новый режим, image #10

Каждый координатор имеет в своём распоряжение собственный объём агентов, к которым он обращается для завершения цепочки. Без координатора подбор игр будет невозможен. Координатор не знает, какие сервера есть, кто ими управляет, кто на них играет. Этим занимается агент.

Возвращаемся к технической составляющей: Agent

Дневник разработчиков: Система подбора игр и новый режим, image #11

Агент в отличие от координатора, располагается на прямой хост-машине, и знает
1)Нагрузку CPU
2)Свободную ОЗУ
3)Количество разрешенных нод для формирования сервера
4)Количество игроков и состояние игровых серверов

Агент передаёт эту информацию координатору, и тем самым, по его сигналу может сформировать необходимый сервер, и выдать информацию о нём координатору.

Возвращаемся к технической составляющей: Server Manager

Для удобного управления серверами и быстрого развёртывания на новой хост-машине, мы реализовали простенький, но очень хороший внутренний сервер-менеджер.

Дневник разработчиков: Система подбора игр и новый режим, image #12

Данная утилита не является частью Agent или Coordinator. Она умеет лишь отправлять запросы на выполнение определенных задач. Без знания адреса до координатора и личного профиля с соответсвующим доступом на форуме, данная утилита становится бесполезной. Проверкой доступа занимается конечный Agent. Она позволяет безопасно передать доступ к определенным профилям другим разработчикам или запуску на внешнем компьютере.

Дальнейшие планы

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

К слову - мы постараемся показать игровой процесс режима на ближайшем AP-PRO Showcase в этом году!

В следующем дневнике мы расскажем о переработке и улучшению оружейной составляющей, и вероятнее всего, наконец-то сообщим ДАТУ РЕЛИЗА

Дневник разработчиков: Система подбора игр и новый режим, image #13
123 views·7 shares