[Облачные сервисы] Архитектура любительского стримингового сервиса DOS игр
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Недавно я написал небольшую статью о стриминге DOS игр в браузере. Настало время сделать небольшой технический обзор. Проект ведется исключительно мной, поэтому я его позиционирую как любительский. Среди общедоступных технологий позволяющих сделать стриминг игр можно выделить только WebRTC на нём и построен мой сервис. Как вы уже наверное догадались он состоит из браузерной и серверной части.
Браузерная часть
Основной компонент сервиса — WebRTC сервер Janus. Из коробки он предоставляет простое API для подключения к серверу, и поддержки WebRTC протокола. Поэтому, браузерная часть получилось максимально простой, в виде обертки поверх Janus API.
Серверная часть
На стороне сервера используются dosbox, ffmpeg и Janus. Все они собраны вместе в docker контейнер.
Текущая версия сервиса использует:
- Последнюю версию dosbox
- Последнюю версию ffmpeg, скомпилированную с поддержкой кодеков vp9 и opus
- Последнюю версию janus с небольшими дополнениями (о них ниже)
Стриминг звука и видео
Когда docker стартует, супервизор запускает все три программы. Dosbox запускает игру и начинает непрерывно генерировать кадры и звуки. Эти данные перенаправляются в ffmpeg, который создает два RTP стрима (звук, видео). Плагин для стриминга Janus (стандартный компонент), слушает эти стримы и генерирует WebRTC данные для браузера.
{dosbox} --> {ffmpeg} --> {janus streaming plugin} --> {browser}
Поддержка клавиатуры
Для поддержки игровых действий (нажатие кнопок) используются каналы данных WebRTC. Каждый раз когда игрок нажимает кнопку, срабатывает обработчик клавиатуры в браузере. Он отправляет текстовые команды через дата канал на сервер.
- pipe kdown — когда кнопка нажата
- pipe kup — когда кнопка отпущена
На сервере эти данные обрабатываются моим расширением (исходный код). Создается именованный пайп в который записываются поступающие команды. С другой стороны, dosbox постоянно читает этот пайп и добавляет события клавиатуры в очередь для обработки.
{browser} --> {janus data text channel} --> {pipe} --> {dosbox}
Каналы данных работают в упорядоченном режиме, время жизни одного пакета — 16 мс. Т.е. события клавиатуру будут доставлены в том же порядке в каком и были нажаты.
Инфраструктура
Сервис запущен на платформе Amazon. Для каждого клиента создается новая задача Fargate. После старта задача получает публичный IP, который отправляется в браузер. При получении IP браузер инициирует WebRTC соединение с Janus сервером. Когда dosbox заканчивает работу, задача Fargate автоматически останавливается. Технически нет никаких ограничений на количество одновременных игроков.
{browser} --> {+fargate} --> {ip} --> {browser}
...
{browser} --> {stop} --> {-fargate}
Вместо заключения
Получилось достаточно поверхностно,
Получилось достаточно поверхностно, пока не понимаю про что написать подробнее. Вцелом архитектура показала себя вполне рабочей. Сервис работает в бесплатном режиме, попробовать можно здесь.
Обзорная статья: DOS Cloud Gaming
===========
Источник:
habr.com
===========
Похожие новости:
- [Игры и игровые приставки, Транспорт, Будущее здесь] В праздничном обновлении Tesla появился режим Boombox и новые игры
- [Серверное администрирование] What Should You Look For In A Dedicated Server Provider
- [Разработка на Raspberry Pi, Игры и игровые приставки] Эмулятор ретроконсоли встроили в контроллер SNES
- [Информационная безопасность, IT-инфраструктура, Сетевые технологии, Серверное администрирование] Устройства Citrix используются в качестве векторов DDoS-атак
- [Программирование, Java, Amazon Web Services, Gradle, Облачные сервисы] Если у вас не работает Spring BootJar
- [IT-инфраструктура, Облачные сервисы] Отличие сервисов аналитики маркетплейсов, подробный анализ
- [Занимательные задачки, R, Визуализация данных, Инфографика] Моя музыка 2020 года в картинках и графиках
- [Облачные сервисы, Гаджеты, IT-компании] Облачный сервис iCloud не выдержал рождественской нагрузки, полсуток нельзя активировать новые Apple Watch и HomePod
- [Облачные вычисления, Серверное администрирование, Управление разработкой, Облачные сервисы] CloudMaster — это про самообслуживание разработчиков в корпоративном ЦОДе и облачных сервисах
- [Высокая производительность, IT-инфраструктура, Облачные сервисы, Компьютерное железо] Ускоряемся: апгрейд инфраструктуры в ЦОДе
Теги для поиска: #_oblachnye_servisy (Облачные сервисы), #_webrtc, #_dos, #_retrogaming, #_streaming, #_cloud, #_igry (игры), #_oblachnye_servisy (
Облачные сервисы
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:48
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Недавно я написал небольшую статью о стриминге DOS игр в браузере. Настало время сделать небольшой технический обзор. Проект ведется исключительно мной, поэтому я его позиционирую как любительский. Среди общедоступных технологий позволяющих сделать стриминг игр можно выделить только WebRTC на нём и построен мой сервис. Как вы уже наверное догадались он состоит из браузерной и серверной части. Браузерная часть Основной компонент сервиса — WebRTC сервер Janus. Из коробки он предоставляет простое API для подключения к серверу, и поддержки WebRTC протокола. Поэтому, браузерная часть получилось максимально простой, в виде обертки поверх Janus API. Серверная часть На стороне сервера используются dosbox, ffmpeg и Janus. Все они собраны вместе в docker контейнер. Текущая версия сервиса использует:
Стриминг звука и видео Когда docker стартует, супервизор запускает все три программы. Dosbox запускает игру и начинает непрерывно генерировать кадры и звуки. Эти данные перенаправляются в ffmpeg, который создает два RTP стрима (звук, видео). Плагин для стриминга Janus (стандартный компонент), слушает эти стримы и генерирует WebRTC данные для браузера. {dosbox} --> {ffmpeg} --> {janus streaming plugin} --> {browser} Поддержка клавиатуры Для поддержки игровых действий (нажатие кнопок) используются каналы данных WebRTC. Каждый раз когда игрок нажимает кнопку, срабатывает обработчик клавиатуры в браузере. Он отправляет текстовые команды через дата канал на сервер.
На сервере эти данные обрабатываются моим расширением (исходный код). Создается именованный пайп в который записываются поступающие команды. С другой стороны, dosbox постоянно читает этот пайп и добавляет события клавиатуры в очередь для обработки. {browser} --> {janus data text channel} --> {pipe} --> {dosbox} Каналы данных работают в упорядоченном режиме, время жизни одного пакета — 16 мс. Т.е. события клавиатуру будут доставлены в том же порядке в каком и были нажаты. Инфраструктура Сервис запущен на платформе Amazon. Для каждого клиента создается новая задача Fargate. После старта задача получает публичный IP, который отправляется в браузер. При получении IP браузер инициирует WebRTC соединение с Janus сервером. Когда dosbox заканчивает работу, задача Fargate автоматически останавливается. Технически нет никаких ограничений на количество одновременных игроков. {browser} --> {+fargate} --> {ip} --> {browser} ... {browser} --> {stop} --> {-fargate} Вместо заключения Получилось достаточно поверхностно, Получилось достаточно поверхностно, пока не понимаю про что написать подробнее. Вцелом архитектура показала себя вполне рабочей. Сервис работает в бесплатном режиме, попробовать можно здесь. Обзорная статья: DOS Cloud Gaming =========== Источник: habr.com =========== Похожие новости:
Облачные сервисы ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:48
Часовой пояс: UTC + 5