Після року розробки сe оприлюднив перший випуск нового ігрового движка з відкритим кодом Навколишнє. Двигун забезпечує середовище виконання для створення багатокористувацьких ігор і 3D-додатків які скомпільовані в представлення WebAssembly і використовують API WebGPU для відтворення.
Основна мета розробки Ambient — надати інструменти, які спрощують розробку багатокористувацьких ігор і роблять їх створення не складнішим, ніж проекти для одного гравця.
Двигун спочатку спрямований на створення універсального середовища виконання, яке підтримує розробку ігор і програм будь-якою мовою програмування, для якої можлива компіляція до проміжного коду WebAssembly. Однак перша версія поки підтримує лише розробку Rust.
Про Ambient
З характеристик, які виділяються з Ambient, згадується таке має прозору підтримку мереж. Механізм поєднує в собі функції клієнта та сервера, надає всі необхідні компоненти для створення логіки клієнта та сервера та автоматично синхронізує стан сервера на клієнтах.
Також згадується, що загальна модель даних використовується на стороні клієнта та сервера, що полегшує передачу коду між серверною частиною та зовнішньою частиною. Він запускає кожен модуль у власному ізольованому середовищі, щоб обмежити вплив ненадійного коду, а збій одного модуля не призводить до збою всієї програми.
Ембієнт, сВін має орієнтовану на дані архітектуру, тим самим надаючи модель даних на основі системи компонентів, якими може маніпулювати кожен WASM. Використання шаблону проектування ECS (Entity Component System).
Крім того, також зберігає дані всіх компонентів у централізованій базі даних на серверіr, стан якого автоматично копіюється на клієнта, який, у свою чергу, може розширювати дані з урахуванням локального стану.
Можливість створювати модулі середовища на будь-якій мові програмування, яка компілюється до WebAssembly (поки що підтримується лише Rust), одночасно генеруючи універсальні виконувані вихідні файли, може працювати в Windows, macOS і Linux і працювати як клієнт і як сервер.
З іншого боку, наголошується також, щомає здатність визначати власні компоненти та «концепції» (колекції компонентів). Проекти, які використовують однакові компоненти та концепції, забезпечують переносимість даних і спільний доступ до них, навіть якщо ці дані не розроблені спеціально для використання в конкретних проектах.
Серед інших функцій, які відрізняються від Ambient:
- Підтримка компіляції ресурсів у різних форматах, включаючи ".glb" і ".fbx". Можливість потокової передачі ресурсів по мережі: клієнт може отримати всі необхідні ресурси при підключенні до сервера (можна почати гру, не чекаючи завантаження всіх ресурсів).
- Підтримуються формати моделі FBX і glTF, різні формати звуку та зображення.
- Удосконалена система візуалізації, яка використовує GPU для прискорення рендерингу та підтримує LOD і відсікання на стороні GPU.
- Використання фізичного відтворення (PBR) за замовчуванням, підтримка анімації та каскадних карт тіней.
- Підтримка моделювання фізичних процесів на базі двигуна PhysX.
- React-подібна система побудови інтерфейсу.
- Єдина система входу, незалежна від поточної платформи.
- Просторова звукова система з плагінними фільтрами.
- Розробка все ще знаходиться на стадії альфа. З ще не реалізованого функціоналу можна відзначити можливість запуску в Інтернеті, клієнтський API, API для управління багатопотоковістю, бібліотеку для створення інтерфейсу користувача, API для використання власних шейдерів, підтримку звуку, завантаження і зберегти
- Компоненти ECS (Entity Component System), перезавантаження ресурсів на льоту, автоматичне масштабування сервера, редактор для спільного створення ігрових карт і ігрових сцен.
Нарешті, для тих, хто хоче дізнатися більше про це, вони повинні знати, що код написаний на Rust і є таким поширюється за ліцензією MIT.