Девлог web colobot на Unreal Engine

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

Я хотел сделать свою версию игры, но с возможностью использовать реальные языки программирования, технологии и потенциально красивую картинку. Благо, как оказалось игровой движок Unreal Engine имеет такую технологию как PixelStreaming, при помощи которого есть возможность настроить плотное взаимодействие игры с веб-браузером через WebRTC: можно слышать и видеть саму игру (ещё взаимодействовать с игрой через клавиатуру и мышкой, но в моем проекте это не нужно).

Мой бекграунд

Веб-разработчик, в геймдеве и в Unreal Engine – 0 опыта.

Технологический стек

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.

MVP

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

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

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

Когда пользователь нажимает кнопку Run, содержимое текстового редактора через HTTP отправляется в Docker-контейнер, где выполняется и формирует команды вида MoveToActor, DropToActor, GrabActor в JSON для Unreal Engine, который принимает эти команды и вызывает связанные блюпринты или код.

Что хочется добавить в ближайшее время?

- Менять вид камеры (с видеокамеры из лаборатории на вид из глаз робота) через кнопочки в веб-интерфейсе и через код.

- Удобный доступ к видеопотоку PixelStreaming через код, чтобы можно было натравить OpenCV.

- Новые уровни.

Простите за неуклюжие анимации, стандартные ассеты. В основном фокусировался на технической реализации — proof of concept.

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

77
5 комментариев