Перший випуск відкритого розрахованого на багато користувачів ігрового движка Ambient

Після року розробки представлений перший випуск нового відкритого ігрового двигуна 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), перезавантаження ресурсів на льоту , автоматичне масштабування серверів, редактор для спільного створення ігрових карт та ігрових сцен.



Джерело: opennet.ru

Додати коментар або відгук