Мощный распределенный (облачный) сервер для ММО игры

Сеть в Unity3D

Мощный распределенный (облачный) сервер для ММО игры

Сообщение Vedan 06 май 2010, 11:29

Хочу немного рассказать о проделанной нашей командой работе по созданию серверной части для ММО игры в реальном времени на распределенных (облачных вычислениях). Пару слов предистории. Около 5 лет назад появилась идея создать многопользовательский виртуальный мир, который бы мог без проблем держать сотни тысяч и миллионы юзеров. Была разработана структура серверной части на унифицированных распределенных серверах. Суть такой системы сейчас используется "облачными" провайдерами. Кратко можно описать основные тезисы:

  • Всё серверное решение делится на серверные единицы разделенные по типам выполняемых задач
  • Каждая серверная единица независима от остальных и не хранит информацию о предыдущих вычислениях
  • Все серверные единицы окружает пространство данных (Как море и острова. С каждого острова можно набрать ведро воды - данных)
  • Каждая серверная единица может получить очень быстро любые данные по проекту из пространства данных(NoSQL)
  • Коммуникация в серверном решении осуществляется на основе сообщений через (память, Pipes, UDP, TCP)
На основании этих постулатов был разработан прототип облачного сервера для проекта BonVirage http://www.bonvirage.com . Сервер вполне справился со своей работой - очень быстрая реакция, синхронизация, и стабильность. В проекте для теста каждый снаряд - "честный", то есть рассчитывается на сервере его движение, как и остальных объектов. А вот клиентская часть на Flash подкачала. Принесла нам много неприятностей и трудностей в работе. Поэтому если будете просматривать приложение - каким-то образом может подтормаживать графика.
Но разговор о серверной части. Для просчета игровой логики нами была применена система на "Изолированных временных потоках". Сглаживание методом кубических сплайнов и динамической коррекцией времени доступа клиент-сервер. Ну это все технические детали.
А главное в том, что сейчас можно создать очень мощный серверный движок за сравнительно небольшое время, используя услуги "облачных" провайдеров (Amazon, Windows Azure) и правильную структуру построения серверов. Облачные провайдера берут на себя всю рутину по организации облаков (групп серверов) их автоматическому старту и остановке в зависимости от нагрузки (Load Balanser). Такая система идеально подходит для игр типа Клик-Энд-Поинт, где не требуется сверхбыстрая реакция и обработка. Можно использовать бесшовные карты и другие интересные вещи.
Друзья! Если вы делаете ММО проект - забудьте о локальных серверах - это "Потолок". В любом случает будет какое-то магическое число пользователей после которого, ваша серверная система начнет падать. Если ваш проект будет посещаемым - жизнь заставит вас прийти к облачным системам. Но во многих случаях это будет уже поздно (финансы, время). Как я понял из своего опыта в серверной части нужно смотреть даже не на "завтра" а на "послезавтра". Скажу честно - хочется сделать действительно качественный продукт на миллионы клиентов. Если у вас есть интересный проект - обращайтесь. Поможем. А возможно и сделаем вместе.
Ниже приведу простую схему серверной части для ММО игры на "облаках".
По результатам тестов могу сказать - что при серверах на локальном облаке (выделеные сервера у немцев) мы не смогли завалить его - сделали более 10 000 коннекций - задержек в работе не было. Ведь помимо того что сервера распределенные они еще и сами многопоточные. Немного просел скрипт расчета геймплея - но это нужно просто соптимизировать. На одной карте в БонВираже у нас летало более 1000 объектов реальных - также сервер не напрягался. А вот клиент начинал сдыхать - Flash просто не предназначен для такой работы. Сейчас смотрим в сторону Unity3D. В проектах где реалтайм полный (клавишами), нужно использовать немного другую структуру с коннекциями прямо к расчетным серверам (там даже 10 мс задержка довольно много)

Кому интересно - собираемся на КРИ встретится и поговорить. Кому интересно - пишите мне в личку или на мыло.

Изображение
Аватара пользователя
Vedan
UNец
 
Сообщения: 21
Зарегистрирован: 06 май 2010, 09:24

Re: Мощный распределенный (облачный) сервер для ММО игры

Сообщение Tolking 06 май 2010, 13:22

1) Это дорого во всех смыслах.
2) Это ненужно...

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

А так: очень мечтаю увидеть 100К онлайна... :) Только это, ИХМО, не послезавта, а через неделю не меньше...

P.S. А 1000 объектов - это смешно.
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2718
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Мощный распределенный (облачный) сервер для ММО игры

Сообщение Garu 06 май 2010, 14:42

Мм, да хоть мильен онлайн... кога в отдельном локе (берем ММОРПГ стандартного стиля) - один из популярных городов, где уйма персов сидит на торге, эт для клиентских компов довольно жесткий груз... + сам город + игроки которые там бегают + НПЦ... Гнать в минус графику ради онлайна.... + этот мильен пользователей еще найти надо бы...
Аватара пользователя
Garu
UNITрон
 
Сообщения: 199
Зарегистрирован: 13 авг 2009, 18:26

Re: Мощный распределенный (облачный) сервер для ММО игры

Сообщение Vedan 06 май 2010, 14:51

Tolking писал(а):
Сотни тысяч игроков в одном мире не поместятся. Вернее мир такого масштаба нереально заполнить вменяемым контентом.

Мир состоит из локаций к вашему сведению либо из доменов(бесшовный).

Tolking писал(а):
Я уж лучше поставлю на "потолок" - это дешево и доступно. Даже если "жизнь заставит" это будут не облачные вычисления, а клиент-серверная технология (игровые сервера будут клиентами). Просто потому что, это будет более доступный вариант как по деньгам, так и по специалистам...

Данный пост адресоват тем, кто интересуется данной технологией и смотрит в будущее своего проекта.

Tolking писал(а):
А так: очень мечтаю увидеть 100К онлайна... :) Только это, ИХМО, не послезавта, а через неделю не меньше...

А 100К онлайна хоть сейчас - запустите в соц сети толковое приложение.


Tolking писал(а):
P.S. А 1000 объектов - это смешно.


P.S. Попробуйте запустить 1000 самолетов во флеш-клиенте я тоже посмеюсь :)
Аватара пользователя
Vedan
UNец
 
Сообщения: 21
Зарегистрирован: 06 май 2010, 09:24

Re: Мощный распределенный (облачный) сервер для ММО игры

Сообщение Vedan 06 май 2010, 15:01

Garu писал(а):Мм, да хоть мильен онлайн... кога в отдельном локе (берем ММОРПГ стандартного стиля) - один из популярных городов, где уйма персов сидит на торге, эт для клиентских компов довольно жесткий груз... + сам город + игроки которые там бегают + НПЦ... Гнать в минус графику ради онлайна.... + этот мильен пользователей еще найти надо бы...

Cуществует так-называемый список видимости - и игроку не передаются конечно все объекты
Аватара пользователя
Vedan
UNец
 
Сообщения: 21
Зарегистрирован: 06 май 2010, 09:24

Re: Мощный распределенный (облачный) сервер для ММО игры

Сообщение Tolking 06 май 2010, 15:37

Vedan писал(а):
Tolking писал(а):
Сотни тысяч игроков в одном мире не поместятся. Вернее мир такого масштаба нереально заполнить вменяемым контентом.

Мир состоит из локаций к вашему сведению либо из доменов(бесшовный).

Это совершенно неважно. Онлайн нужно занять чем-то если в локации/домене кроме декараций и спавнов мобов больше ничего нет - то небудет онлайна...

Vedan писал(а):
Tolking писал(а):
Я уж лучше поставлю на "потолок" - это дешево и доступно. Даже если "жизнь заставит" это будут не облачные вычисления, а клиент-серверная технология (игровые сервера будут клиентами). Просто потому что, это будет более доступный вариант как по деньгам, так и по специалистам...

Данный пост адресоват тем, кто интересуется данной технологией и смотрит в будущее своего проекта.

:) Вот я очень интиресуюсь данной технологией и смотрю в будущее своего проЭкта. Где мне взять облако поиграться? Сколько мне понадобиться времени чтобы с 0 разобраться в технологии и в том как с ней работать?

Vedan писал(а):
Tolking писал(а):
А так: очень мечтаю увидеть 100К онлайна... :) Только это, ИХМО, не послезавта, а через неделю не меньше...

А 100К онлайна хоть сейчас - запустите в соц сети толковое приложение.

Соцсети это не онлайн... Этак можно PBOEM за онлайн выдавать...

Vedan писал(а):
Tolking писал(а):
P.S. А 1000 объектов - это смешно.


P.S. Попробуйте запустить 1000 самолетов во флеш-клиенте я тоже посмеюсь :)

Это вы путаете способность клиента отображать и сервера считать... И Юнити тут вам не панацея...

Ребята, кто в теме, напишите сколько должно быть в "самолетике" полигонов максимум чтобы Юнити всю 1000 отрисовывал... Если можно поделитесь как кол-во текстур будет влиять на количество.
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2718
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Мощный распределенный (облачный) сервер для ММО игры

Сообщение Vedan 06 май 2010, 16:55

Где взять облако - сделать самим структуру, либо заказать, либо купить движок.
Соц сети - генерируют клиентов а уже ваше приложение решает в онлайне они или в оффлайне.
Сервер и клиент - зависимы - если клиент не вытянет - то хоть супер сервер хоть пупер :)
Против аппаратного ускорения графики - не попрешь как не пыжся.
На юнити совсем не обязательно делать 3Д как и на любом другом движке - самое главное есть аппаратное ускорение, UDP протокол, и Потоки.
Аватара пользователя
Vedan
UNец
 
Сообщения: 21
Зарегистрирован: 06 май 2010, 09:24

Re: Мощный распределенный (облачный) сервер для ММО игры

Сообщение frostyden 07 май 2010, 07:34

Интересно. Интересно... :-?

Только не хватает схем и статистики с цифирьками, где можно глянуть... Кроме того сервер-систему ограничивать барьерами flash смысл, вам же неважно какой движок у вас на рисовальщике, странный выбор для ММО решения ориентированного на реалтайм :| . Ведь можно всегда написать стресс тест исключительно для серверной части и под 10 к конекций это не оно разве? Короче малова-то, но было бы интересно поподробнее узнать, что к чему и обменяться опытом.

Вапще меня больше интересует Синхронизация родимая конечно, как вы решаете фундаментальную проблему потери производительности. Распределенная система конечно хорошо, но это в свою очередь подразумевает определенные задержки всегда и при любых раскладах. Для игр на реакцию важен пинг как обычно и объем данных уже не критичен в ваших условиях, вы укладываетесь в границы 20 ms при загруженном онлайне скажем 85% от максимального онлайна?

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

Вам не хватает как раз нормальной демонстрации ММО реального времени, с нормальной физикой и с мощной аппаратной поддержкой, вам нужен двиг. который 100 k - 1 kk объектов будет обсчитывает играючи. Вы не предлагали эти решения Crysis девелоперам? Почему Unity, я так подозреваю C# и .Net вас привлекли, кроме его объективной гибкости?

Во общем какие то сомнения у меня, что это нужно сейчас кроме как в вебе... К тому же есть и другие ММО стратегии, не факт что за облаками будущее. ~o)

Впрочем если уверены, можно пообщаться и на эту тему если у вас есть время конечно. В скайпе denfrosty
frostyden
UNец
 
Сообщения: 12
Зарегистрирован: 02 дек 2009, 15:31

Re: Мощный распределенный (облачный) сервер для ММО игры

Сообщение ffinder 08 май 2010, 12:26

Что такое "командные сервера"?
ffinder
UNITрон
 
Сообщения: 192
Зарегистрирован: 26 мар 2009, 17:35
  • Сайт

Re: Мощный распределенный (облачный) сервер для ММО игры

Сообщение Vedan 08 май 2010, 15:00

"командные сервера" - сервера по обработке команд (клиентов и внутренних команд серверов)
Аватара пользователя
Vedan
UNец
 
Сообщения: 21
Зарегистрирован: 06 май 2010, 09:24

Re: Мощный распределенный (облачный) сервер для ММО игры

Сообщение ffinder 08 май 2010, 15:38

чем они отличаются от игровых серверов?
ffinder
UNITрон
 
Сообщения: 192
Зарегистрирован: 26 мар 2009, 17:35
  • Сайт

Re: Мощный распределенный (облачный) сервер для ММО игры

Сообщение Vedan 08 май 2010, 16:46

Игровые сервера просчитывают объекты геймплея
Аватара пользователя
Vedan
UNец
 
Сообщения: 21
Зарегистрирован: 06 май 2010, 09:24

Re: Мощный распределенный (облачный) сервер для ММО игры

Сообщение PavelZ 01 июн 2010, 09:34

Не вижу сильных отличий от архитектуры моего проекта, разве что он пока только на бумаге и ждёт своего часа. http://zp3.biz/content/%D1%81%D1%82%D1% ... %D0%B0-uef
Разве что у вас всё это очень абстрактно...
On-line мир и игра на его основе._ttp://uef.me/universe-extend-frontier
PavelZ
UNец
 
Сообщения: 23
Зарегистрирован: 31 окт 2009, 13:20
Откуда: Хабаровск
  • Сайт
  • ICQ

Re: Мощный распределенный (облачный) сервер для ММО игры

Сообщение Vedan 01 июн 2010, 11:22

PavelZ писал(а):Не вижу сильных отличий от архитектуры моего проекта, разве что он пока только на бумаге и ждёт своего часа. http://zp3.biz/content/%D1%81%D1%82%D1% ... %D0%B0-uef
Разве что у вас всё это очень абстрактно...

Наша система опробована и работает. Когда вы обкатаете свою - будет интересно пообщаться
Аватара пользователя
Vedan
UNец
 
Сообщения: 21
Зарегистрирован: 06 май 2010, 09:24


Вернуться в Сеть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6