Задать вопрос
@vacoo

Трансляция видеострима из единого игрового мира?

Последние пару месяцев терзает одна гениальная мысль (ну или дурацкая):
В общем представим что есть единый игровой мир запущенный на одном супер сервере. И возможно ли оттуда транслировать видеострим? смысл в том чтобы просчитать все на сервере и отдать клиенту видеострим. А клиент в свою очередь может отправлять команды для управления персонажем. И тогда будет возможно войти в игру с любого утюга. Главное чтобы интернет был норм. А еще невозможно будет использовать читы.

К примеру есть сервисы облачного гейминга. Где на сервере запускается игра и человеку транслируется стрим. Но там идет просто захват экрана. Моя идея заключается в видеостриме прямо с игрового движка. Представьте что за вами бегает оператор с камерой и говорит что делать. А игровой мир в прямом эфире реагирует на действия игрока.

Возможно это идея бред. а может уже реализовано а может даже требует коллосальных вычислительных мощностей.
  • Вопрос задан
  • 136 просмотров
Подписаться 1 Простой 10 комментариев
Решения вопроса 1
@Drno
Так же по сути работает и облачный гейминг... тут Вы просто делаете еще одну сложность и опускаетесь на уровень ниже
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
saboteur_kiev
@saboteur_kiev Куратор тега Разработка игр
software engineer
И возможно ли оттуда транслировать видеострим? смысл в том чтобы просчитать все на сервере и отдать клиенту видеострим.

Предлагаешь, чтобы на сервере стояла графическая карточка для каждого юзера?
Ну возьмем сервер,где играет 100-200 человек. Нужно 100-200 видеокарточек на сервере.
Хочешь 1000? 1000 карточек? Тут тупо на электричестве сервер разорится.

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

Главное чтобы интернет был норм

Давай посчитаем как отдавать видеострим.
Берем например ну хотя бы hd 1920x1080x4 (2 млн цветов). Получаем 8294400 байт один кадр ( 8 мегабайт). Ты же хочешь нормальный фпс, ну хотя бы 50 в секунду, 400 мегабайт в секунду. на одного юзера.

Хочешь поговорить о крутом сжатии? Так вот, оно не работает на кадрах. Оно работает на стримах, когда можно проанализировать некоторое количество кадров и уже работать от них. Тогда надо решить вопрос сколько кадров мы будем удерживать для анализа и сжатия, перед тем как куда-то передавать. Игры типа контерстрайка, где 5-10 мс имеют значение сразу улетают в трубу. Сжатие может быть разным, в зависимости от того как резко меняется картинка, а неравномерность лагов хуже чем постоянный лаг. То есть надо решить еще и этот вопрос

То есть сжимать стрим на уровне кадров, если мы не можем их полноценно анализировать.
Нормальные современные кодеки умеют и в А-фреймы и Б-фреймы, то есть жмут в обе стороны. Плюс не ограничены во времени. А у нас и время поджимает, и генерация ограничена количеством кадров которые мы можем вместе использовать. В итоге сжатие будет не 90% как в современных видеокодеках, а хорошо если сожмет треть, и качество будет теряться. И трафик уменьшитсья ну до 50-100 мб/сек.
Теперь подумаем что у клиента отличный инет. А у сервера будет 50-100 мб/сек на КАЖДОГО игрока? Это какой канал должен быть у сервера для поддержания 100-200 игроков? А 1000?

В итоге твоя идея технически совершенно не рабочая.

Облачный хостинг сталкивается с теми же проблемами - лаги, хромает качество видео, в результате играть в мультиплеер становится проблематично. Более-менее можно играть в синглплеер, где милисекунды не так критичны. Но тут нужно понимать что облачный гейминг это не 1000 игроков на одну серверную, а пару десятков тут, пару десятков там, спрос на него не слишком большой, поэтому и бизнесом этим мало кто занимается.
Отдельный плюс облачного гейминга бывает в том, что игры могут быть уже оплачены, и можно поиграть во что-то что лень себе покупать.
Ответ написан
@rPman
@LanskoyGames
У модераторов первое место, но только с конца...
Почти все современные облачные вещи(начиная от библиотек Python, дальше встроенный от UE и Unity с Photon или Mirror) обрабатывают общую для всех часть с TPS в 20 или больше, отправляют её людям в виде координат и т.п., это экономичнее и удобнее и лучше, что проще отправить 3 вектора из-за изменений другим игроком или картинку каждому разную 1920х1080?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы