Web front: используется Vue 3, monaco (текстовый редактор из Visual Studio Code), xterm.js (для вывода результатов кода), webrtc.js, app.js (библиотеки с PixelStreaming, идущие с UnrealEngine).
Web backend: node.js (модифицированный скрипт из PixelStreaming), который соединяет видеопоток от PixelStreaming с клиентом через WebRTC, docker с ruby.
Backend: Unreal Engine, с обработкой команд через веб-сокеты и PixelStreaming.
PixelStreaming, при помощи которого есть возможность настроить плотное взаимодействие игры с веб-браузеромЗачем? У анрила есть html5 билд, где у ЖСа будет возможность взаимодействия с анрил-движком.
Это разные вещи.
HTML5-билд — способ деплоя в html5, чтобы можно было запустить игру в клиентском браузере через web assembly со всеми соответствующими ограничениями или достоинствами: нагрузка на браузер клиента, ограниченная графика и необходимость иметь достаточную хорошую видеокарту для запуска игры. А еще уже не поддерживается Эпиками — скинули технологию на поддержку коммьюнити.
PixelStreaming — видеостриминг игры через WebRTC, где игра рендерится на серваке (или в облаке, сколько хочешь, столько запускай инстансов игры): клиенту не нужна хорошая видеокарта, только хорошая сеть, а нагрузка на клиентский браузер в пределах обычного использования WebRTC.
Для моего проекта больше подходит PixelStreaming — максимизация возможной аудитории за счет отсутствия требований по видеокарте, а недостатки PixelStreaming в виде сетевых задержек и артефактов нивелируются задумкой, что игрок всегда наблюдает за происходящим якобы через веб-камеру (зернистость на видео), то есть, любые реальные артефакты и задержки будут восприниматься вполне себе ожидаемо.
Плюс архитектурно стек через PixelStreaming удобнее для меня в разработке, так как мы четко разделяем проект на две части: игра и взаимодействие c игроком через внешние технологии: браузер клиента, docker, или с чем угодно, где есть возможность посылать HTTP-запросы, можно игру интегрировать хоть с Arduino.