Первый выпуск открытого многопользовательского игрового движка Ambient

Kate

Administrator
Команда форума
После года разработки представлен первый выпуск нового открытого игрового движка Ambient. Движок предоставляет runtime для создания многопользовательских игр и 3D-приложений, компилируемых в представление WebAssembly и использующих API WebGPU для отрисовки. Код написан на языке Rust и распространяется под лицензией MIT.

Ключевой задачей при разработке Ambient называется предоставление инструментов, упрощающих разработку многопользовательских игр и делающих их создание не сложнее однопользовательских проектов. Движок изначально нацелен на создание универсального runtime, поддерживающего разработку игр и приложений на любых языках программирования, для которых возможна компиляция в промежуточный код WebAssembly. Тем не менее, в первом выпуске пока реализована только поддержка разработки на языке Rust.

Ключевые особенности нового движка:

  • Прозрачная поддержка сетевого взаимодействия. Движок сочетает в себе функции клиента и сервера, предоставляет все необходимые компоненты для создания клиентской и серверной логики, а также автоматически синхронизирует состояние сервера на клиентах. На стороне клиента и сервера используется общая модель данных, что упрощает перенос кода между бэкендом и фронтэндом.
  • Запуск каждого модуля в своём изолированном окружении, позволяющем ограничить влияние кода, не заслуживающего доверия. Аварийное завершение модуля не приводит к аварийному завершению всего приложения.
  • Архитектура, ориентированная на обработку данных (Data-oriented). Предоставление модели данных на основе системы компонентов, которыми может манипулировать каждый модуль WASM. Использование шаблона проектирования ECS (Entity Component System). Хранение данных всех компонентов в централизованной БД на сервере, состояние которой автоматически реплицируется клиенту, который на своей стороне может расширять данные с учётом локального состояния.
  • Возможность создания модулей Ambient на любых языках программирования, компилируемых в WebAssembly (пока поддерживается только Rust).
  • Формирование на выходе универсальных исполняемых файлов, которые могут запускаться в Windows, macOS и Linux, и функционировать как в роли клиента, так и сервера.
  • Возможность определения собственных компонентов и "концепций" (коллекций компонентов). В проектах, использующих одинаковые компоненты и концепции, обеспечивается переносимость и совместное использование данных, даже если эти данные специально не рассчитаны на использование в конкретных проектах.
  • Поддержка компиляции ресурсов в разных форматах, включая ".glb" и ".fbx". Возможность потоковой загрузки ресурсов по сети: клиент может получить все необходимые ресурсы при подключении к серверу (можно начать играть не дожидаясь пока загрузятся все ресурсы). Поддерживаются форматы моделей FBX и glTF, различные форматы звука и изображений.
  • Продвинутая система отрисовки, использующая GPU для ускорения вывода, и поддерживающая выполнение отсечения по зоне видимости и смену уровней детализации на стороне GPU. Использование по умолчанию физически корректного рендеринга (PBR), поддержка анимации и каскадных теневых карт.
  • Поддержка симуляции физических процессов на базе движка PhysX.
  • Система построения интерфейсов пользователя, похожая на React.
  • Унифицированная система ввода, не зависящая от текущей платформы.
  • Система пространственного звука с подключаемыми фильтрами.
Разработка пока находится на стадии альфа-версии. Из ещё не реализованной функциональности можно отметить возможность запуска в Web, клиентский API, API для управления многопоточностью, библиотеку для создания интерфейса пользователя, API для использования собственных шейдеров, поддержку звука, загрузку и сохранение компонентов ECS (Entity Component System), перезагрузку ресурсов на лету, автоматическое масштабирование серверов, редактор для совместного создания игровых карт и игровых сцен.

 
Сверху