Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Как в общем работает система управления игровыми серверами / мастер сервер?

Как в общем работает система управления игровыми серверами / мастер сервер?

coralowandПостоялецwww11 июня 20189:02#0
Здравствуйте.

Я работаю над мультиплеерным сессионным шутером на UE4. Собственное есть клиент и есть игровой сервер.
Клиенты подключаются к игровым серверам.

Я хочу создать мастер сервер который будет запускать игровые сервера.

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

Подскажите как это все в общем работает, например сервера PUBG?

То есть игровые сервера ведь запускается на VDS/VPS серверах. На одном vds сервере можно запустить ограниченное количество игровых серверов.
Как это масштабируется, как запускать vds сервера, как соединить их в одну сеть?

В общем в какую сторону вообще смотреть? Какой язык использовать?.

TiendilУчастникwww11 июня 201812:28#1
Для начала можно и не поддымать сервера автоматически. Оставить ручной режим. Делаем, чтобы игровой сервер при запуске стучался на мастер-сервер и регистрировался там. Мастер сервер создаёт матчи и говорит игроку: иди на такой-то сервак с таким-то id матча. Разработчики смотрят по нагрузке и поддымают новые серваки. Когда это будет сделано, уже можно автоматизировать. Например "если занято 80% ресурсов, то поддымаем ещё один игровой сервер.", "Если свободно 50% ресурсов, то освобождаем один игроковй сервер". Ну и всё это хостить в каком-нибудь большом облаке, вроде амазона или гугла.
ChupakaberПостоялецwww11 июня 201813:03#2
Tiendil
> "если занято 80% ресурсов, то поддымаем ещё один игровой сервер."
т.к. у железа характеристики не меняются на лету (хотя vds в этом плане не так однозначен), то можно рассчитать заранее сколько игровых сессий поместится в одном игровом сервере с заданными характеристиками, с коефициентами по нагрузке для разных карт (локаций)
ну или по кол-ву игроков

Tiendil
> "Если свободно 50% ресурсов, то освобождаем один игроковй сервер"
немного сумбурно звучит
освободить на 50% занятый сервер можно, если есть ещё сервера загруженые не более 50%, т.е. отправлять мастер-сервер игровые сессии будет на один сервер с 50% загрузкой, а другой сервер освободится когда закончатся текущие игровые сессии, т.к. новые добавляться не будут

балансировщик должен просто расставлять приоритеты игровым серверам на основе доступных ему данных

Tiendil
> Делаем, чтобы игровой сервер при запуске стучался на мастер-сервер и
> регистрировался там.
+
собственно масштабирование и сведется к тому, чтобы на новой vds'е (а лучше выделенном сервере конечно) запустить приложение игрового сервера

TiendilУчастникwww11 июня 201813:08#3
Правила я коненчо примерно дал. Само собой их надо раскрывать в контексте конкретной архитектуры.

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

coralowandПостоялецwww11 июня 201814:33#4
Tiendil, значит облако нужно?

у amazon что-то похожее есть - amazon gamelift, но не понял как работает.

Не хочется привязываться к какому-то одному сервису.

TiendilУчастникwww11 июня 201814:47#5
coralowand
> значит облако нужно?
Облако - понятие растяжимое :-) В каком-то виде нужно. Каком конкретно - нужно брать калькулятор и считать. Для кого-то и  аренда железок в hetzner за облако сойдёт, а кому-то нужно 100500 серваков на амазоне.

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

> Не хочется привязываться к какому-то одному сервису.
Не привязывайтесь. Можно арендавать "голое железо" вместо готовых платформ. Что на нём запускать - сугубо дело заказчика. Главное чтобы заказанные серваки быстро готовились.

Но как только начнётся автоматизация, привязка появится сама собой, поскольку API у каждого облака своё, равно как и свои нюансы функционирования.

/ Форум / Программирование игр / Сеть

2001—2018 © GameDev.ru — Разработка игр