Steam In-Home Streaming — или уберите свой игровой компьютер на балкон. Игра на удаленном сервере


Playkey запускает первый в России облачный игровой сервис|NVIDIA

Playkey запускает первый в России облачный игровой сервис

4 июня 2014, Москва

Компания Playkey представила уникальный для российского игрового мира инновационный продукт - облачный игровой сервис //playkey.net. С Playkey играть в лучшие игры от ведущих мировых издателей можно на любом устройстве, подключенном к сети Интернет.

Уникальность облачной технологии Playkey состоит в том, что игра запускается в “облаке” — сети удаленных дата центров Playkey, а пользователю транслируется видео поток 5-10 Мбит/с, который могут поддержать большинство интернет-провайдеров в России. Приложение работает на любой платформе - Windows, MacOS, Linux, Android. Playkey использует NVIDIA GRID, что позволяет обеспечить высокую  скорость передачи потоковой графики и лучшее качество картинки.

“Playkey не имеет аналогов в России, - говорит основатель и СЕО Playkey Егор Гурьев. Это решение открывает безграничные возможности как для любителей игр, так и для поставщиков игрового контента”. Playkey упрощает для пользователей доступ к любимым играм: избавляет от необходимости покупать специальное игровое оборудование, делает геймеров более мобильными, экономит время на скачивание и установку игры, регулярное обновление ПО и т. п. При этом пользователю по фиксированной цене подписки доступна библиотека игр, в которой представлены хиты игровой индустрии. Стоимость ежемесячной подписки будет сопоставима со стоимостью одной игры, но при этом пользователь получает доступ к большому каталогу игр.

«Игры должны быть доступны для любой категории пользователей, на всех возможных устройствах, в том числе на больших экранах телевизоров. Необходимость тратить большие деньги на покупку и апгрейд специального оборудования для игр является серьезным препятствием для тех пользователей, которые играют ради развлечения время от времени и не готовы серьезно вкладываться в «железо», — поясняет Егор Гурьев.

Решение Playkey можно использовать и на ТВ-приставках, для этого пользователю достаточно иметь телевизор и gamepad. Так, уже в этом году сервис Playkey будет интегрирован в приставку Дом.ru TV второго поколения. “Реализуя стратегию инновационного лидерства, «Дом.ru» первым из телеком-операторов России предложит своим пользователям такой уникальный сервис на ТВ-приставке как облачные игры Playkey. Пользователи получат сразу около 100 игр, рассчитанных на разный возраст и вкус. В их числе - Batman: Arkham Origins, Asassin's Creed, WRC 3, Remembe me, Air Conflicts, Jagged Aliance и другие” – говорит руководитель департамента развития продуктов «Дом.ru» Олег Кулаков.

Популярность облачных игр стремительно растет во всем мире. По мнению руководителя направления профессиональных решений в российском офисе NVIDIA Дмитрия Конягина, «Облачные технологии уже стали основным способом получения контента на пользовательские устройства для видео и музыки во всем мире. Благодаря технологии NVIDIA GRID, теперь в «облаке» становятся доступны и высокопроизводительные игры. С появлением облачного игрового сервиса Playkey Россия вливается в число стран, где передовые технологии игр становятся доступны для пользователей уже сегодня».

По данным аналитической компании Newzoo на декабрь 2013 года, в России насчитывается 46,4 млн активных игроков (это примерно каждый третий житель страны). В отчете Mail.ru Group «Игровой рынок России» говорится, что значительная часть игроков – люди в возрасте от 18 до 36 лет, а возраст самого активного потребителя в индустрии онлайн-игр составляет 33 года. 45% из тех, кто играет в компьютерные игры, замужем или женаты, у 58% есть дети. «Игровой рынок России играет заметную роль в индустрии развлечений», - говорится в резюме отчета.

Дополнительная информация: Мария Трушникова, PR-служба Playkey [email protected]

Компания Playkey (ООО “Игровые решения”) основана в 2012 году. Playkey – это облачный игровой сервис, который позволяет запускать любые игры на основе технологии видео стриминга на всех популярных устройствах, таких как планшеты, STB, PC, SmartTV, а также на устройствах на базе MacOS. Миссия Playkey – сделать игры доступными для всех пользователей в любом месте на любом устройстве, подключенном к Интернет.

Проект Playkey одержал победу в конкурсе стартапов CloudsNNStartUpAwards, который прошел в Нижнем Новгороде в рамках международного форума сервис-провайдинга CloudsNN 2013. Основатель и СЕО Playkey Егор Гурьев входит в 250 самых эффективных ТОП-менеджеров России по версии журнала “Генеральный директор”.

Дом.ru (компания «ЭР-Телеком») – один из ведущих российских операторов телеком-услуг, работает с 2001 года. Услуги для корпоративных клиентов предоставляются под брендом «Дом.ru Бизнес». Поставщик triple-play услуг: широкополосный доступ (ШПД) в интернет, кабельное и HD-телевидение, телефонная связь. Базовые направления деятельности реализуются на базе собственных телекоммуникационных сетей, построенных с нуля и по единым стандартам в каждом городе присутствия по технологии «оптика до дома». География деятельности - 56 городов, количество абонентов – 5,8 млн человек. По собственным оценкам, на долю компании приходится 12% российского рынка ШПД и 13% – рынка платного ТВ. «Дом.ru» выступает стимулятором конкуренции в регионах и занимает лидирующие позиции в России по темпам подключения абонентов. «Дом.ru» входит в ТОП-2 крупнейших интернет-провайдеров России и ТОП-4 крупнейших операторов платного ТВ.

Платформа NVIDIA GRID позволяет транслировать высокопроизводительные игры из облака на любое устройство, подключенное к сети Интернет, включая «умные» телевизоры, ПК, планшеты, смартфоны и пр. Это законченное решение, включающее графические процессоры NVIDIA, специализированное ПО для потоковой работы с графикой и технологию NVIDIAVGXHypervisor, которая позволяет большому числу пользователей одновременно использовать ресурсы GPU.

www.nvidia.ru

Игры в облаке - что и как?

Наверняка в наше время многие не только слышали, но и активно пользуются облачными сервисами. К этой категории продуктов можно отнести те же файлообменники, при помощи которых на сегодняшний день можно обмениваться файлами больших объемов быстрее, чем при использовании всяческих накопителей. Время “128 килобитных скоростей” и передачи между друзьями CD-дисков с играми уже давно прошло.

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

Подобные ресурсы предоставляют бесплатный доступ в реальном времени к множеству данных, их редактированию и сохранению все в тех же облаках. Зайдите в свой аккаунт с любого доступного оборудования в любое время и просматривайте и редактируйте свои же данные без надобности все хранить у себя. Об этом позаботятся сервера. И не нужно устанавливать никакого програмного обеспечения. Только стандартный web-браузер.

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

Ближе к делу

К чему это все идет - можно узнать из самого названия статьи. Но что такое “игры в облаке” и при чем здесь Google docs?

“А вы только представьте, что удаленно можно работать не только с текстовыми и различными графическими редакторами, но и… с играми!”

Первооткрывателем в данной области являлся сервис OnLive, который разрабатывался аж… с 2002 года! Различные разработки и тестирования сервиса длились целых 7 лет, а доступен он стал только в конце 2009 года.

Смысл его был в том, чтобы играть можно было в любого рода игры на максимальных настройках графики и самом слабом железе.

Бесконечный апгрейд ПК

После выхода первой серии нашумевшего своими требованиями Crysis, среди которых было нововведением поддерживание DirectX 10, многие любители “поиграть с картинкой” были разочарованы возможностями своих ПК. Ведь “графоуни” есть, а 30 кадров - нет.

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

Как это работает?

Сервис OnLive представлял собой схему, в которой игра работала на удаленном сервере, а игроку приходила только картинка, тоесть запись видео с игры. Стрим, как сейчас модно говорить. При этом игрок полноценно мог играть, отправляя команды управления. Единственное, что нужно - это идеальное интернет-соединение.

“Это как купить новый комп, поставить его дома у бабушки в деревне, а клавиатуру, мышку и монитор оставить у себя”

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

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

“Но что-то явно пошло не так...”

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

Политика компании была расчитана с упором на ПК, дабы исключить необходимость апгрейда “машин” пользователей. Перейдя на консоли, которые своей аппаратной и програмной частью практическки полностью стандартизированы, OnLive лишился бы нескольких основных проблем. Сервис практически был запущен для Sony PS 3, но предпочел остаться в сегменте ПК и планшетов. А это означало то, что на головы разработчиков игр, адаптировавших свои проекты под облачный сервис, свалилось огромное количество “дурацкой работы” в виде замены иконок и прочего. И ни к чему хорошему это в итоге не привело…

Облачные игровые ресурсы и технологии нашего времени

Флагманы в сфере производства графических карт: nVidia и AMD предлагают специальные решения именно для облачных сервисов, выпуская специализированную продукцию.

“Серверные” видеокарты способны работать одновременно на несколько потоков, выдавая при этом стабильный FPS каждому отдельному клиенту с максимальным качеством.

В конце 2014 в России состоялся запуск облачного игрового ресурса Playkey. По своей идеологии он является преемником “умершему” OnLive и работает по схожей системе.

Работоспособность ресурса обеспечивает оборудование на базе процессоров Intel и видеокарт nVidia Grid. По утверждению компании Playkey, данный сервис может выдавать 30 кадров при разрешении 720p на максимальных настройках графики, а для запуска понадобится лишь скромный процессор да интернет более 5 Мбит/сек...

Пробуем на вкус Playkey!

Итого. Для начала игры нужно скачать небольшое приложение для ПК с официального сайта (Windows или Mac OS) и запустить его. И естественно, сервис платный. НО! У Вас будет целых 30 ознакомительных минут в нескольких доступных играх для пробы:

  1. FlatOut 2
  2. Prince of Persia: The Forgotten Sands
  3. Saint’s Row 4

Для начала мною был выбран последний вариант. Первые два спокойно идут даже на стареньком нетбуке. А с ним Вы еще познакомитесь.

“Но будьте аккуратны. Обратный отсчет пойдет со времени регистрации. Не теряйте время!”

Системные требования:

Процессор должен “уметь” воспроизводить видео, а клавиатура и мышь должны просто работать. Осталось подключить интернет и пробовать.

“Проверить возможность благополучного старта игры на своем ПК можно  в небольшом приложении, скачав его прямиком на сайте Playkey”

Первый запуск на основной машине и… первый блин комом. Чтобы не расписывать нудные подробности я выложу скриншот игры прямо вот здесь. Вместе с настройками игры. Все на максимум.

Но Вы и сами представьте как на мониторе с 1080p будет смотреться видео в разрешении 720p в полноэкранном режиме. И это максимум, так как 1080p поддерживается только в бета-режиме, доступном для нескольких игр. То ли проблема в начинке сервера, неспособного выдавать несколько игр в “фул хд”, то ли в программном плане.

Побегав десяток минут в учебной миссии, проблема с разрешением оказалась далеко не последней. Чувствительность управления адекватно мне настроить так и не удалось. Ни при помощи настроек самого “грызуна”, ни в настройках игры. Создавалось такое ощущение, что моя мышь не скользит по нормальной поверхности, а плавает в миске с киселем.

А я разве еще не говорил как внезапно камера может повернуться в другую сторону?

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

Но, на этот раз я решил не довольствоваться всеми благами нормального ПК и достал настоящего монстра. Acer Aspire One.

ПОЧЕМУ ФОТО ТАКОГО ****** КАЧЕСТВА?!

Да потому, что такого же качества и начинка данного девайса, уж точно не предназначенного для игры в Far Cry 4. А именно эту игру я увидел в списке Playkey. И тут понеслось…

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

*Картинка была растянута до разрешения 1080p

Общие впечатления от игры в облаке

Что понравилось - так это возможность запуска требовательных игр на посредственном оборудовании. При этом ничего скачивать и устанавливать не нужно, игра готова к работе после нескольких десятков секунд.

Но минусы все же преобладают. Во-первых - это ценовая политика. За возможность поиграть во все новые игры (которые, к тому же, далеко не все доступны) придется постоянно платить помимо цены за саму игру. Даже за условно-бесплатные онлайн-проекты. А Вы только представьте, как можно ногибать с постоянной задержкой на реакцию органов управления и кратковременных фризов.

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

Так есть ли смысл в данных технологиях? - безусловно. Но этого “чурбана” нужно еще долго обтесывать для получения законченного продукта в виде “буратино”. А на данный момент это просто полено, демонстрирующее свои возможности и потенциал на будущее. Поживем - увидим. Как говорится.

 

 

onlimegames.ru

Как играть в современные игры на слабом пк? Игры в облаке

Будущее уже на горизонте, господа! Правда пока всё не так радужно, как хотелось бы...

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

Пока, единственный (насколько знаю) сайт в СНГ, предоставляющий данную услугу - playkey.net.

Плюсы и минусы
Все плюсы и минусы будут касаться только сервиса Playkey, так как других аналогов не наблюдается.

Как вы могли догадаться, технология не идеальна.Начнём с минусов:• Минимальная скорость интернета для комфортной игры - 15 Мбит.• Изображение хоть и не прерывается, но имеет не очень высокое качество (зажравшиеся геймеры не оценят). Так же игру иногда "квадратит" и ещё реже изображение смазывается но на очень короткие периоды времени(менее секунды), и особо не помешает.• Ещё стоит заметить, что задержка, пусть и минимальна, но она есть. При игре в динамичные жанры это наиболее заметно.

Из хорошего можно подчеркнуть такие моменты:• Достаточно низкие цены на услуги и игры, а если игра вами уже приобретена (в том же Steam), то её можно активировать и в playkey.• Есть демо-режим, что бы испытать все прелести и недостатки.• Достаточно большой список доступных игр.

Итог
Если углубится детальнее в вопрос того "Что выгоднее? Свой пк или это?", то с какой стороны смотреть. Если мощный компьютер вами будет использоваться для разных целей, а не только игр, то про "облако" можно забыть. Так же стоит поступить, если вы хотите играть во все понравившиеся вам игры, а не только те, которые есть в базе. И только в случае, если вы не переборчив или где-то в поезде, то сей вариант приемлем. Возможно, есть ещё куча различных нюансов, но, думаю, для каждого они будут свои. На этом всё, спасибо за внимание.

igrotop.com

Облачный игровой сервис следующего поколения: impressive | Паб

Облачный игровой сервис следующего поколения. - Изображение 1

В далеком 2009 году на конференции GDC был анонсирован первый игровой облачный сервис Onlive. Суть его заключалась в том, что запуск игры производился на удаленном сервере, а конечному пользователю пересылался видео-поток. Благодаря такому подходу, у гордых обладателей маломощных систем появилась возможность запускать самые требовательные игры. Все, что для этого требовалось - это доступ к интернету. Сервис просуществовал около 5 лет и в апреле 2015 был куплен Sony.

После того, как Nvidia создала свою собственную облачную платформу Grid, облачных сервисов стало значительно больше. Как раз об одном таком сервисе и пойдет речь. Сервис onlive предоставлял пользователям подписочную модель (платим за сборник игр), что изначально было ошибкой; какой смысл крупным издателям добавлять свои хиты в сборник за 300 р (условно). Отсутствие хитов и стало главной проблемой сервиса и как следствие низкой популярности.

А что, если представители сервиса предоставят конечному пользователю полноценный игровой сервер, на который мы сможем устанавливать любые игры? Собственно о таком сервисе и пойдет речь. На сегодняшний день существует уже несколько сервисов подобного типа, но я бы хотел сосредоточиться на отечественном сервисе Loud Play, так как я попал в бета-тест и мне есть чем с вами поделиться.

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

Запуск сервиса проходит в несколько этапов

1) Пользователь скачивает клиент

2) Авторизуется

3) Попадает на виртуальный рабочий стол (абсолютно такой же, как на вашем локальном пк)

Клиент транслирует пользователю видео-поток в разрешении 1600*900*60 fps, но в дальнейшем будет возможность адаптировать разрешение под себя (будет поддержка full HD 1920*1080*60 fps)

Тестирование сервиса Loudplay

Так как пока идет бета-тест, то я не проходил авторизацию, а сразу же попал на рабочий стол, после запуска приложения. На моем мониторе выставлено разрешение 1920*1080, а на виртуальном рабочем столе используется разрешение 1600*1200, из-за этого картинка получилась немного растянутой, пришлось немного подредактировать окно клиента. На виртуальном сервере уже были предустановлены клиент steam и браузер google chrome (пользователь может установить любой другой цифровой клиент, взять тот же origin или uplay)

После того, как я авторизовался под своей учетной записью, открылось окно с моей steam-библиотекой и я запустил процесс установки. Скорость скачивания находилась в районе 200 мб/с, благодаря чему удалось скачать witcher 3 + дополнение буквально за 10 минут Для начала я решил запустить dota 2, чтобы оценить задержку. Игра была запущена на максимальных настройках, fps держалось в пределах 60-80 фпс, что для комфортной игры более чем достаточно. Задержка практически не ощущается, можно играть даже в онлайне, благодаря тому, что сервера loudplay и valve находятся в России (20 мс до серверов loudplay + 15 мс до серверов valve) Качество картинки было недостаточно высоким (можно сравнить с 480p на youtube) После того, как инженер loudplay увеличил верхний порог битрейта, то его значение повысилось до 24 мб/с и картинка сразу же похорошела. По ощущениям она практически не уступает картинке при локальном запуске (когда добавят 1080p все будет идеально) Картинка не рассыпается и не смазывается в динамике, благодаря чему играть очень комфортно (никакого мыльца нет и в помине) Буквально через пару минут складывается стойкое ощущение, что игра запущена на вашем пк, курсор двигается плавно, все скиллы прожимаются моментально

dota 2 работает прекрасно

Следующим на очереди стал последний hitman. Так как эта игра отсутствует в моей библиотеке, инженер loudplay предоставил свой steam аккаунт, за что ему огромное спасибо. Благодаря пробросу локальной мышки и правильной настройки удалось добиться отличного качества работы, задержка ощущается, но незначительно (целиться удобно) В дальнейшем, проблема будет полностью устранена, благодаря чему мы сможем играть даже в такие динамичные шутеры, как cs go или unreal tournament. Качество картинки прекрасное, но видны кое-какие огрехи. После повышения разрешения до 1920*1080, графические проблемы будут устранены

hitman работает хорошо (чувствуется незначительная задержка)

В заключение я решил протестировать лучшую игру этого года - witcher 3 и вот тут начались проблемы

"Разрешение мышки в играх, на игровом рабочем столе и на локальном ПК может не совпадать и получается эффект бешеной мышки. В некоторых играх мы это победили, в некоторых пока нет. Работаем над этим" - Loudplay

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

На серверах используются самые современные видеокарты от nvidia (m30 и m40) и не самые современные процессоры, но этот вопрос будет решен в ближайшее время (новое оборудование уже привезли, осталось установить в сервера).

"По поводу игрушек: на этом сервере есть ограничения по CPU - 2,4 ГГц, что не нравится некоторым играм. К нам вчера приехали сервера с мощными 3,4 ГГц процессорами, производительность значительно повысится" - Loudplay

Для комфортной игры необходимо, чтобы игра работала с частотой в 40-50 (в идеале 60) fps, но пока частота не превышает 35 кадров (эта проблема будет устранена, после установки новых процессоров). Witcher 3 - это та игра, в которой графика действительно очень важна, поэтому она должна работать только в 1080p. Качество картинки хорошее, но хочется чтобы оно было идеальным

witcher 3 - удовлетворительно (низкий фремрейт + недостаточно высокое разрешение)

Подведем итог

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

2) Пользователь может устанавливать любую игру на свой выбор (полная свобода)

3) Битрейт высокий (25 мб/с), качество картинки практически не уступает локальному, никакого мыльца, все четко и красиво . Ждем 1080p

4) Задержка не ощущается, играть в шутеры и моба-игры будет комфортно

5) В требовательных играх наблюдаются проблемы с производительностью - проблема будет устранена в ближайшее время (обновят процессоры + не забываем про directx12/vulkan api)

6) Осталось решить проблемы с чувствительностью мышки (в некоторых играх проблема уже устранена)

7) Для ценителей халявы плохие новости

"Нам важно чтобы разработчики игр получали оплату своего труда. Все взаимосвязано. А технически мы попробуем ограничить пиратку" - Loudplay

Как говорится лучше один раз увидеть, поэтому выкладываю объемное видео-ревью (52 минуты) Приятного просмотра. Всех с праздником!

Демонстрация облачного сервиса Loudplay

kanobu.ru

Steam In-Home Streaming — или уберите свой игровой компьютер на балкон / Хабр

21 мая, Valve объявили что Steam In-Home Streaming (далее — стриминг) выходит из статуса закрытого бета-тестирования и готов к использованию. Я очень ждал релиза данной технологии так как она позволяет реализовать давнюю мечту — убрать шумящий игровой компьютер подальше от ушей. Но участвовать в бета-тесте было лень, так что я ограничивался просмотром видеообзоров с нелестными отзывами. До этого я, ради интереса, пробовал играть с помощью разных программ, но максимум, на что они годились — неспешные квесты, так как качество динамичного изображения, лаг, да и вообще поддержка устройств ввода были никудышными. Была надежда что Microsoft RemoteFX позволит использовать видеокарту даже нескольким людям (для multiseat) но у него с поддержкой игр все плохо, к тому же проблемы с мышью (которые, правда, решаются пробросом USB). Так что так или иначе, рабочих решений для удаленной игры в динамичные игры я так и не нашел и вся надежда была на Steam. Вообще, Valve, молодцы, так или иначе, много игроков делит игры на ПК на «достимовые» и «стимовые». Когда он только появился, в России им пользоваться было проблематично из-за необходимости подключения к интернету и выкачивания многомегабайтных апдейтов. Помню как записывали резервные копии игр на DVD, так и распространяли апдейты. Тогда было принято ругать Steam. Позже интернет стал быстрым, более доступным и тут пришло осознание, насколько удобным все-таки является Steam. В далекое прошлое ушли патчи, директиксы, различные библиотеки, лаунчеры, русификаторы, поцарапанные диски, и, самое главное, технологии защиты. Ну кто не помнит необходимость держать жужжащий диск в приводе. Сейчас это вспоминается как ночной кошмар. Не только глючность, ресурсоемкость этих «защит» (привет, старфорс!) но и вообще дисков. Лично у меня они уже на том же забытом уровне, что и дискеты, хотя многие люди продолжают фанатеть по этим ненадежным оптическим носителям (ОС я устанавливаю с Zalman VE-300). Так или иначе, Steam привнес на ПК консольную легкость установки, цифровую дистрибуцию и универсальную технологию защиты. Стоит сказать, что DRM незаметный и заключается только в необходимости держать запущенным сам Steam. Все! Никаких системных драйверов с руткитами, никаких дисков из далекого прошлого. Конечно, «минусом» тут было то, что игры таки приходилось покупать, причем часто цены достаточно высокие. Я решаю эту проблему покупками только в сезоны скидок. Смешной случай: хотел дать жене поиграться в The Sims 3, пошел на торренты, скачал, прочитал инструкцию на пару страниц в каком порядке надо ставить патчи, поставил — не взлетело. Требует диск, хоть ты тресни. После убитых пары часов решил пойти в Steam и купить. Одна загрузка (кстати Steam использует технологию торрентов для загрузки) и все работает. А смешнее всего было то, что версия Sims для Steam'а вообще лишена DRM и работает без установки на любом компьютере даже без Steam'а. Ладно, хвалебную оду заканчиваю, хотелось выговориться, надеюсь простите.

В какой-то момент где-то в Valve поняли что по масштабности Steam уже представляет собой этакую ОС для игр и выкатили Steam OS на основе linux, параллельно развивая и подталкивая разработчиков на портирование игр (за что им отдельный низкий поклон). Но проблема курицы и яйца (мало пользователей linux -> мало игр для linux) все еще стояла остро (на 24.05.2014 1229 из 11414 портированы), поэтому как временное решение Valve решили запилить стриминг с Windows ПК. Идея простая: можно купить (пока еще официально не вышедшие) маломощную безшумную приставку к ТВ и играть в любые игры с клавиатуры/мыши либо со специального контроллера.

Посмотрим что же из этого получилось.

Для теста установил Windows 7. Для запуска не надо делать почти ничего: запускаем Steam на компьютере с Windows и в той же локальной сети — на любом другом компьютере-клиенте. Клиент автоматически подключится к серверу, о чем будет соответствующее уведомление. В настройках есть новый раздел, но на сервере там настраивать особо нечего. Галочка аппаратного кодирования уже стоит:

Для теста я использовал свой обычный компьютер, характеристики такие: Core i5-2500, GeForce GTX780 и 12 ГБ ОЗУ, о котором Windows 7 думает вот так:

Клиент — дремучий ноутбук hp nc4200, процессор — Pentium M 2ГГц, Intel GMA 915 (в последних версиях драйвера заработали все OpenGL-эффекты в KDE! вау!) 2 ГБ ОЗУ. kubuntu 13.10 и макбук air late 2010.

Коротко: работает хорошо, но не со всеми играми. В большинстве случаев задержку незаметно вообще, нет ощущения «удаленного дислея» или «видеопотока».

А теперь замерим то, что можно замерить.

Для начала я проверю насколько дополнительно нагружает процессор стриминг. Вывод диспетчера задач при запуске игры без стриминга:

И со включеным:

Очевидно, по каким-то причинам аппаратное кодирование не работает на моей системе, так как его включение/отключение ни на что не влияет. Как видно, стриминг процессор все же нагружает. Но если вы читали мой предыдущий пост про multiseat, то знаете что этого процессора достаточно для работы 2 экземпляров доты. Так что я бы не считал это проблемой. Да и процессор у меня далеко не самый быстрый.

Далее: стриминг на максимальном качестве при динамичной картинке полностью загружает слабенький процессор ноутбука:

что вызывает неиграбельные лаги. Макбук прекрасно справляется с картинкой на максимальном качестве.

Удивительно, но на должной скорости принимать стрим Half-Life мой ноутбук не смог, хотя с Dota 2 справлялся отлично:

А вот Метро оказалось неиграбельным: выпадения кадров и общая большая задержка. Похоже, Valve еще применяют какую-то оптимизацию для своих игр. К сожалению, на макбуке мне проверить не удалось, так как я удалил Метро, чтобы освободить место для проверки других игр. Возможно на нем ситуация была бы лучше, но врядли.

Half-Life 2:

Подытоживая можно сказать что стриминг работает. Работает на абсолютно играбельном уровне даже для FPS.

Я незаметно пропустил вопрос о сети. Хоть и ноутбуки показывают полный сигнал, но скорости беспроводной сети им в дальних уголках все равно не хватает. Битрейт потока в большинстве случаев не менее 10 МБит. Так что здесь нужна хорошая антенна, удачное расположение либо проводное соединение.

Очевидным кажется запускать игру на сервере в headless-режиме, то есть без окна, чтобы она только потребляла ресурсы ПК, но не мешала работе на нем, а также позволить множественные подключения. Тогда с помощью одного мощного компьютера где-нибудь на балконе удастся удовлетворить геймерский интерес всей семьи. Но таких функций пока нет. С другой стороны можно же в Linux запустить несколько X.org, в них также по Steam'у и подключать хоть 10 клиентов, но это уже тема следующей статьи.

P.S. я все-таки решил попробовать АСТЕР для организации Multiseat. Легко устанавливается, легко настраивается, буквально за 5 минут. Но больше одного Steam'а запустить не получается. С другими сетевыми играми тоже проблемы. Вникать не стал, хотя конечно для игры в не-Steam игры не по сети пойдет.

UPS: Как-то упустил возможность добавления сторонних игр/программ. Так что транслировать можно что угодно, вплоть до рабочего стола полностью. Но по какой-то причине скорость (количество FPS) и отклик значительно хуже чем в играх от Valve, так что теория «особой обработки» игр подтверждается. Из стороннего пробовал даже очень простые игры, на подобие Crimsonland — низкое количетво FPS. Некоторые игры транслировались с артефактами. Рабочий стол тоже транслируется на уровне RemoteFX. Так что универсального ответа «будет ли работать игра/программа Х» нет, проверяйте индивидуально.

habr.com

Запуск игры на удалённом сервере

До 01.10.18
  1. Apr 6, 2018

    Заблокирован

    Обратите внимание, если Вы хотите провести сделку с данным пользователем, на то, что он заблокирован.

    Возможно ли как нить запустить игру на удаленном сервере чтоб она работа 24/7 интересует в частности pubg, если возможно можете подсказать где?

     

  2. До 09.10.18 До 07.10.18
  3. Apr 6, 2018

    ни одна система не является безопасной.

  4. Apr 6, 2018

    WATCHING

    Легенда

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

     

  5. Apr 6, 2018

    ни одна система не является безопасной.

    на форуме кто-то продавал такие, поищи

     

  6. Apr 6, 2018

    Заблокирован

    Обратите внимание, если Вы хотите провести сделку с данным пользователем, на то, что он заблокирован.

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

    Click to expand...

    Там вроде чисто твич был запущен или нет?

     

  7. Apr 6, 2018

    WATCHING

    Легенда

    Там вроде чисто твич был запущен или нет?

    Click to expand...

    МБ я другой видос чекал, но через дедики это изи делается тебе к тем кто продаёт такие услуги.

     

  8. Apr 6, 2018

    Заблокирован

    Обратите внимание, если Вы хотите провести сделку с данным пользователем, на то, что он заблокирован.

    на форуме кто-то продавал такие, поищи

    Click to expand...

    Я просто толком не шарю в этом , ну спасибо за информацию буду ещё смотреть , просто решил фарм кейсов сделать , а комп дрочить не хочется

     

  9. Apr 6, 2018

    WATCHING

    Легенда

    Я просто толком не шарю в этом , ну спасибо за информацию буду ещё смотреть , просто решил фарм кейсов сделать , а комп дрочить не хочется

    Click to expand...

    Дедики дядя, дедики решают

     

  10. Apr 6, 2018

    https://lolzteam.net/threads/625403/ - FLOOD

    кто то посмотрел энжой малой

     

  11. Apr 6, 2018

    Заблокирован

    Обратите внимание, если Вы хотите провести сделку с данным пользователем, на то, что он заблокирован.

    Дедики дядя, дедики решают

    Click to expand...

    Да понял спасибо , сейчас посмотрю хоть что это :D

     

  12. Apr 6, 2018

    Заблокирован

    Обратите внимание, если Вы хотите провести сделку с данным пользователем, на то, что он заблокирован.

    читерБРУТ said: ↑

    кто то посмотрел энжой малой

    Click to expand...

    У меня как раз 3 аккаунта есть :D

     

  13. Apr 6, 2018

    WATCHING

    Легенда

    У меня как раз 3 аккаунта есть :D

    Click to expand...

    Малой заебал из людей недомайнеров по играм делать :D

     

  14. Apr 6, 2018

    Please login or register to view links

     

  15. Apr 6, 2018

    Заблокирован

    Обратите внимание, если Вы хотите провести сделку с данным пользователем, на то, что он заблокирован.

    Please login or register to view links

    Click to expand...

    И че везде такие ценны конские?

     

  16. Apr 6, 2018

    И че везде такие ценны конские?

    Click to expand...

    хз

     

  17. Apr 6, 2018

    Заблокирован

    Обратите внимание, если Вы хотите провести сделку с данным пользователем, на то, что он заблокирован.

    Малой заебал из людей недомайнеров по играм делать :D

    Click to expand...

    Яб похуй как он попробовал ширп скупать , ну чёт лень пздц

     

  18. Apr 6, 2018

    Заблокирован

    Обратите внимание, если Вы хотите провести сделку с данным пользователем, на то, что он заблокирован.

    Просто если везде такие цены , то тогда проще банку какую нить старую купить чтоб хотябы игра запустилась

     

  19. Apr 6, 2018

    WATCHING

    Легенда

    Яб похуй как он попробовал ширп скупать , ну чёт лень пздц

    Click to expand...

    давненько была такая тема Одни челы в доте скупили все большинство ДК хуков с торговой площадки и нихуёво на этом наварились))

     

  20. Apr 6, 2018

    Заблокирован

    Обратите внимание, если Вы хотите провести сделку с данным пользователем, на то, что он заблокирован.

    Возможно ли как нить запустить игру на удаленном сервере чтоб она работа 24/7 интересует в частности pubg, если возможно можете подсказать где?

    Click to expand...

    Песок

     

  21. Apr 6, 2018

    И че везде такие ценны конские?

    Click to expand...

    Playincloud, liquidsky, ps now, loudplay, geforce now и play-play now - чекай, если дешевле ищешь

     

lolzteam.net

Архитектура сервера онлайн-игры на примере Skyforge / Блог компании Mail.Ru Group / Хабр

Привет, Хабр! Я Андрей Фролов, ведущий программист, работаю в Mail.Ru над Next-Gen MMORPG Skyforge. Вы могли читать мою статью про архитектуру баз данных в онлайн-играх. Сегодня я буду раскрывать секреты, касающиеся устройства сервера Skyforge. Постараюсь рассказать максимально подробно, с примерами, а также объясню, почему было принято то или иное архитектурное решение. По нашему серверу без преувеличения можно написать целую книгу, поэтому для того, чтобы уложиться в статью, мне придется пройтись только по основным моментам.

Обзор
  • Сервер — это почти два миллиона строк кода на Java. Для соединения с сервером и отображения красивой картинки используется клиент, написанный на C++.
  • Свой вклад в серверный код внесли полсотни программистов. Код писался в течение многих лет лучшими специалистами российского «православного» геймдева. В нем собраны все самые удачные идеи со всего мира.
  • На текущий момент у нас написано около 5200 автоматических тестов, налажен continuous integration и нагрузочное тестирование с помощью ботов.
  • Сервер умеет запускаться и работать на десятках и сотнях серверов, поддерживать игру сотен тысяч человек одновременно. Мы решили отказаться от традиционной для MMO техники шардирования и запустить всех игроков в один большой мир.

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

Сервисная архитектура
Одна из основных особенностей разработки состоит в том, что мы не знаем, сколько у нас будет игроков. Может быть, всего один — сам разработчик, а может, 100000 одновременно. Поэтому сервер должен уметь запускаться в маленькой конфигурации, на ноутбуке, и растягиваться при необходимости на десятки и сотни мощных серверов.

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

Третья большая проблема — это многопоточность. Как известно, лучший способ сладить с многопоточностью — это избежать ее. Deadlock, livelock, lock contention и другие милые сердцу программиста проблемы можно обойти, если архитектура сервера будет избавлять вас от необходимости синхронизировать потоки вручную. В идеале программист вообще должен писать простой однопоточный код и не задумываться о такого рода вещах.

Отсюда родилась наша универсальная структура сервера, которая используется в Skyforge:

  • Существует пул физических серверов, на которых будет запускаться игра. Этот набор серверов и наше серверное приложение, которое на них запущено, называется Realm.
  • На каждом сервере запускается серверное приложение (JVM), называемое ролью. Роли бывают разные: аккаунт-сервер, игровая механика, чат и т.д. Каждая роль берет на себя большой кусок функционала. Некоторые роли существуют в единственном числе, некоторые запускаются в нескольких экземплярах.
  • Роль состоит из набора сервисов. Сервис — это обычный поток (thread), который занимается своей, специфичной для него задачей. Примером сервиса может служить сервис авторизации, сервис резервирования имен, балансировщик нагрузки и т.п. Каждый сервис ничего не знает о физическом расположении других сервисов. Они могут быть рядом, а могут быть на другой физической машине. Сервисы взаимодействуют через систему сообщений, которая скрывает от них такого рода подробности.
  • Каждый сервис состоит из набора модулей. Модуль — это «кусок функциональности», у которого есть один метод tick(). Примером модуля может быть модуль статистики, модуль исполнения транзакций, модуль синхронизации времени. Вся работа сервиса заключается в том, чтобы в бесконечном цикле поочередно вызывать метод tick() у своих модулей. Один такой цикл называется «кадр сервера». Мы считаем показатель хорошим, если кадр сервера колеблется в пределах от 3 до 20 мс.
  • Вся эта структура описывается в XML-файлах. Системе запуска надо просто «скормить» название роли. Она найдет соответствующий файл, запустит все нужные сервисы и отдаст им списки модулей. Сами модули создадутся с помощью java reflection.

Таким образом, мы можем запустить роль «локальный сервер», где будет все необходимое, а можем разбить сервер на несколько десятков ролей — аккаунт-сервер, итем-сервер, игровая механика и т.д. — и запускать его на десятках разных физических серверов. Структура оказалась чрезвычайно гибкой и удобной, советую серьезно к ней присмотреться.

Основные сервисы
Есть некоторый набор сервисов, который несет основную игровую нагрузку. Каждый из серверов должен уметь масштабироваться. В идеале — до бесконечности. К сожалению, писать серверы так, чтобы они масштабировались, это непростая задача. Поэтому мы начали с того, что сделали основные сервисы масштабируемыми, а всякую дополнительную мелочь, которая не несет основной нагрузки, оставили на потом. Если у нас будет очень много пользователей, то и их нам придется улучшать для обеспечения возможности масштабирования.
  • Аккаунт-сервис. Отвечает за авторизацию и подключение новых клиентов.
  • Сервер игровой механики. Тут происходит, собственно, сама игра. После прохождения авторизации клиент подключается сюда и тут играет. С другими сервисами клиент напрямую не взаимодействует. Таких сервисов можно и нужно запускать несколько десятков, а то и сотен. Именно эти сервисы несут основную нагрузку.
  • Сервисы баз данных. Эти сервисы выполняют операции над данными игровых персонажей, их предметами, деньгами, прогрессом развития. Их обычно запускается несколько штук. Подробнее об архитектуре баз данных можно прочитать в моем прошлом докладе. ( habrahabr.ru/company/mailru/blog/182088 )
  • Чат. Занимается роутингом сообщений чата между пользователями.
  • Все остальные сервисы. Их несколько десятков, и они обычно не создают сильной нагрузки, поэтому не требуют обособленных серверов.
Сеть
Под словом «сеть» я подразумеваю систему доставки сообщений от одного сервиса к другому или от одного объекта к другому. Исторически так сложилось, что у нас существует сразу две такие системы. Одна основана на сообщениях. Вторая система основана на удаленном вызове процедур (RPC). В Skyforge система сообщений применяется внутри сервиса игровой механики, чтобы послать какое-то сообщение от аватара к мобу, а также для общения клиента и сервера. RPC используется для общения между сервисами.
Сообщения
Все объекты, которые хотят посылать или принимать сообщения, называются абонентами. Каждый абонент регистрируется в общей директории и получает уникальный идентификатор — адрес. Любой, кто хочет послать сообщение какому-либо абоненту, должен указать адреса «откуда» и «куда». Сетевой движок знает, где находится абонент, и доставляет ему сообщение. Сообщение — это Java-объект, у которого есть метод run(). При отправке этот объект сериализуется, прилетает к целевому абоненту, там десериализуется, а затем вызывается метод run() над целевым абонентом.

Такой подход очень удобен тем, что позволяет реализовывать простые команды типа «нанести удар», «выдать анлок», «запустить фаербол». Вся эта логика оказывается внешней по отношению к объекту, над которым выполняется действие. Большой минус этого подхода в том, что если логика команды требует выполнения какого-либо кода на нескольких абонентах, то нам потребуется сделать несколько сообщений, которые будут посылать друг друга по цепочке. Логика оказывается фрагментирована на несколько классов, и цепочки сообщений часто довольно долго и сложно распутывать.

RPC
Удаленный вызов процедур или RPC появился, чтобы решить проблему цепочек сообщений. Основная идея заключается в использовании кооперативной многозадачности (Coroutine, Fibers). Тому, кто не знаком с это концепцией, для понимания темы советую заглянуть в «Википедию». en.wikipedia.org/wiki/Coroutine. Сервис, который хочет, чтобы его могли вызывать через удаленный вызов процедур, должен реализовывать специальный интерфейс и зарегистрировать в специальной директории. Тогда любой желающий может попросить директорию дать ему интерфейс этого сервиса, и директория вернет специальный враппер над сервисом. Вызывать сервисы по RPC можно только внутри файбера (coroutin), т.е. специального контекста исполнения, который можно прерывать и возобновлять в точках разрыва. При вызове методов враппера он будет посылать RPC вызовы на удаленный сервис, прерывать текущий файбер в ожидании ответа и возвращать результат, когда удаленный сервер ответит.

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

Подробнее о нашей имплементации файберов можно узнать из лекции Сергея Загурского ( www.youtube.com/watch?v=YWLHELcvNbE ).

Сериализация
Чтобы у нас работала система посылки сообщений и удаленный вызов процедур, нам нужен клиент-серверный протокол и способ сериализации/десериализации объектов. Напомню, что у нас есть необходимость пересылать команды и данные с клиента на сервер, т.е. из C++ в Java и обратно. Для этого мы по Java-классам генерируем их копии в C++, а также генерируем методы для сериализации и десериализации объектов в байтовый поток. Код для сериализации встраивается прямо внутрь классов и обращается к полям класса напрямую. Таким образом, сервер не тратит процессорное время на обход классов с помощью reflection. Все это мы генерируем с помощью самописного плагина для IntelliJ IDEA. Внутрисерверный протокол для общения между сервисами полностью аналогичен клиент-серверному протоколу.

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

Игровая механика
Основной сервис, который был бы вам интересен, это сервис игровой механики. Именно там выполняется весь код, непосредственно связанный с игрой, именно там моделируется весь игровой мир, летают фаерболы и «грабятся корованы».
Карты и балансировка нагрузки
На серверах игровой механики создаются карты, на которых, собственно, находятся игроки, мобы и происходит все веселье. У каждой карты есть лимит на количество игроков, которые могут на ней находиться. Например, лимит может быть равен единице для персональных приключений, 10–30 для групповых активностей и 250 для больших карт. Что происходит, если на карту захочет попасть еще один игрок, когда лимит исчерпан? Тогда будет создана еще одна копия той же самой карты. Игроки с этих карт не будут видеть друг друга, не будут друг другу мешать. Т.е. в каком-нибудь игровом городе могут быть тысячи человек, но там не будет тесно. Такой способ организации игроков называется «каналы».

За создание карт отвечает центральный сервис «балансировщик карт», который распределяет карты по сервисам игровой механики в зависимости от популяции, нагрузки и других магических причин, стараясь поддерживать равномерное распределение нагрузки и нормальную плотность играющих, чтобы им не было скучно.

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

Аватары и мобы
Аватар — это персонаж, которым управляет игрок, моб — это монстр, которого игрок убивает. Это весьма разные, но часто очень похожие сущности. И моб, и аватар умеют ходить по карте, у них есть здоровье, они могут использовать заклинания и т.п. Только аватаром управляет игрок, а у моба есть свой мозг. Кроме того, на картах есть множество всяких сундуков, растений и других интерактивных сущностей. Очень часто нужно делать некую функциональность и цеплять ее к разным сущностям. Для этих целей мы используем компонентный подход, собирая игровую сущность из набора функциональностей. Поясню на примере. Допустим, у игрока и моба есть показатель здоровья. В таком случае мы оформляем элемент «здоровье» как отдельный Java-класс, в котором описываем, как здоровье себя ведет: как оно может уменьшаться, как восстанавливаться, какие есть таймеры и т.п. Потом мы просто складываем все функциональности в специальную HashMap внутри сущности и берем ее оттуда по необходимости. Таких компонент у нас существуют сотни, на них собрана половина игровой механики.

Так как серверное приложение очень сложное, неизбежно возникновение ошибок. Нужно сделать так, чтобы возникновение ошибки, даже необработанного NullPointerException, не приводило к падению сервера. Можно ошибку просто залогировать и пойти дальше, но если ошибка возникнет посреди какого-то длинного действия над аватаром, то аватар может оказаться в сломанном и неконсистентном состоянии. Тут нам на помощь приходит концепция под названием «локаль». Локаль — это контекст, внутри которого объекты могут ссылаться друг на друга. Объекты из одной локали не могут ссылаться на объекты из другой. Если из локали вылетает необработанное исключение, то локаль удаляется целиком. Аватары, мобы и другие сущности являются локалями, удаляются целиком и не могут держать ссылок на других аватаров и мобов. Поэтому все взаимодействие между аватарами и мобами идет через систему сообщений, хотя они находятся вместе на одной машине и в теории могли бы держать друг на друга прямую ссылку.

Репликация
Моделировать игровой мир нужно не только на сервере, но и частично на клиенте. Например, клиенту нужно видеть других игроков и мобов, которые находятся рядом с ним. Для этого используется механизм клиент-серверной репликации, когда с сервера клиентам рассылаются обновления окружающего игрового мира. Делается это с помощью генератора кода, который встраивает отсылку обновлений в сеттеры серверных Java-объектов. Вокруг игрока создается круг определенного радиуса, и если кто-то, например другой аватар, попадает в этот круг, он начинает реплицироваться на клиент. С репликацией есть фундаментальная проблема. Если в одном месте столпится N аватаров, то на каждого из них нужно будет посылать N реплик. Таким образом возникает квадратичная зависимость, что ограничивает количество аватаров, которые могут собраться в одном месте. Именно из-за этой фундаментальной квадратичности клиенты всех ММО тормозят в столицах. Мы избегаем этой проблемы, ограничивая количество игроков на карте и распределяя их по каналам.
Ресурсная система
В игре существуют сотни и тысячи заклинаний, предметов, квестов и других подобных сущностей. Как вы, наверное, догадываетесь, программисты не пишут все сотни квестов, это делают геймдизайнеры. Программист разрабатывает один Java-класс квеста, а описания всех квестов с их логикой, задачами и текстами содержатся в XML-файлах, называемых ресурсами. При старте сервера мы загружаем эти ресурсы и на их основе собираем Java-классы с описанием мира. Этими классами уже может пользоваться сервер. Примерно такая же система существует и на стороне клиента, только там ресурсы не грузятся из XML-файлов, а просто загружается заранее созданный «кусок памяти», содержащий все нужные объекты и ссылки между ними. Ресурсных файлов у нас существует несколько сотен тысяч, но их загрузка на сервере занимает около двух минут. На клиенте же все грузится за секунды. Система очень навороченная, поддерживает такие фичи, как прототипы и наследование, вложенные описатели и т.п. Поверх ресурсной системы у нас созданы специализированные программы для редактирования карт и остальных игровых сущностей.
Сервер в действии
Давайте теперь на примерах рассмотрим несколько сценариев того, как работает вся эта система в действии.
Убить собачку
Классический тест, который мы всегда проводим, если сильно изменили инфраструктуру и хотим проверить, что все работает, называется «Убить собачку». Нужно зайти клиентом на сервер и убить там какого-либо моба. Этот тест покрывает практически все основные моменты сервера и служит прекрасным примером для того, чтобы сложить все вышесказанное вместе. Давайте по пунктам разберем, что и как происходит при убиении несчастной собачки. Конечно, некоторые шаги упрощены, но это не критично для понимания.
  • Клиент посылает на аккаунт-сервер сообщение: «Хочу войти в игру».
  • Аккаунт-сервер запрашивает базу данных, проводит авторизацию и запрашивает у балансировщика карту, на которой игрок был в последний раз.
  • Балансировщик выбирает карту из уже загруженных или создает новую на наименее загруженном сервере игровой механики.
  • Клиент подключается к той механике, где для него была создана карта. Пока он подключается, для него загружается его аватар.
  • Сервер начинает реплицировать все объекты вокруг аватара на клиент. Клиент рисует шикарную картинку и посылает на сервер команды, которые посылает игрок.
  • Игрок начинает бегать по карте, а сервер перемещает его по миру и реплицирует изменения окружающей действительности. Игрок находит какого-либо моба и нажимает кнопку «ударить».
  • Команда «удар» прилетает на сервер, на сервере выполняется проверка, что удар возможен, и мобу отправляется сообщение о нанесении повреждений.
  • Команда «нанести повреждения» отрабатывается на мобе, просчитывает все резисты и другие подобные вещи, потом берет функциональность «здоровье» и списывает какое-то количество.
  • Клиенту посылается ответ с подтверждением нанесения урона, клиент рисует удар.
Масштабирование
Давайте зайдем с другой стороны и посмотрим, как сервер ведет себя под нагрузкой.
  • 0 клиентов. Если на сервере никого нет, его можно запускать одним приложением с минимальными настройками и без карт. На сервере нет никакой активности, и большую часть времени он простаивает.
  • 1 клиент. Для одного клиента приходится создавать карту, мобов, серверные объекты, которые начинают потреблять память и процессорное время для своей жизни.
  • 500 клиентов. 500 клиентов обычно уже достаточно много, чтобы процессорного времени одной персоналки не хватало для работы сервера. Приходится запускать realm на нескольких машинах или на более мощных серверах.
  • 10000 клиентов. 10000 клиентов требуют уже нескольких серверов. Так как большая часть нагрузки приходится на игровые механики, нужно запускать realm с дополнительными сервисами игровой механики.
  • 100000 клиентов. При 100000 одновременных игроков больше половины серверов заняты игровой механикой.
  • Клиентов больше, чем железа. Если вдруг игроков станет еще больше, а железо у нас вдруг кончится, то придется ограничивать вход людей в игру, пока подвозят новые серверы. Для этого существует очередь на вход, которая заставляет игроков ждать, когда сервер будет готов их принять. Эта очередь гарантирует, что одновременно один realm не может содержать игроков больше, чем мы готовы принять. В очередь игроков могут начать ставить и в том случае, если из-за бага или еще по каким-либо причинам сервер вдруг стал работать медленнее определенного порога. Лучше сделать приемлемый сервис для ограниченного числа клиентов, чем упасть для всех.
Заключение
Надеюсь, наш опыт поможет вам понять, как работают современные игровые серверы, и создать свой, если до этого дойдет дело. Чтобы лучше понять другие аспекты разработки игр, я бы порекомендовал вам почитать статьи моих коллег.

Ну и конечно же запись на закрытый бета тест. sf.mail.ru

Занятная статистика
Статистика по строкам кода. В статистику включен только сервер.

Авторы, собранные из комментариев к коду.

P.S.: Как обычно, на все вопросы отвечаем в комментариях.

habr.com