经过一年的开发,全新的开源游戏引擎 Ambient 的首个版本正式发布。该引擎提供了一个运行时环境,用于创建多人游戏和 3D 应用,这些应用编译为 WebAssembly 代码,并利用 WebGPU API 进行渲染。代码使用 Rust 编写,并以 MIT 许可证发布。
Ambient 开发的核心目标是提供简化多人游戏开发的工具,使其难度与单人游戏项目相当。该引擎最初的目标是创建一个通用运行时环境,支持使用任何能够编译成 WebAssembly 中间代码的编程语言进行游戏和应用程序开发。然而,首个版本目前仅支持 Rust 开发。
新引擎的主要特点:
- 对网络交互提供透明支持。该引擎融合了客户端和服务端功能,提供创建客户端和服务端逻辑所需的所有组件,并自动同步客户端之间的服务器状态。客户端和服务端均采用通用数据模型,简化了后端和前端之间的代码迁移。
- 每个模块都在各自独立的环境中运行,从而限制了不受信任代码的影响。模块崩溃不会导致整个应用程序崩溃。
- 面向数据的架构。提供基于组件系统的数据模型,每个 WASM 模块均可操作该组件。采用 ECS(实体组件系统)设计模式。将所有组件的数据存储在集中式数据库中。 服务器其状态会自动复制到客户端,客户端可以根据本地状态扩展其数据。
- 能够使用任何可以编译成 WebAssembly 的编程语言创建 Ambient 模块(目前仅支持 Rust)。
- 在输出端形成可运行的通用可执行文件 Windows, macOS и Linux并同时作为客户端和服务器运行。
- 能够定义自定义组件和“概念”(组件集合)。使用相同组件和概念的项目可以实现数据可移植性和共享,即使这些数据并非专门为特定项目而设计。
- 支持编译多种格式的资源,包括 .glb 和 .fbx。支持通过网络流式下载资源——客户端连接到服务器后即可获取所有必要的资源(无需等待所有资源下载完成即可开始游戏)。支持 FBX 和 glTF 模型格式,以及各种音频和图像格式。
- 这是一款先进的渲染系统,利用GPU加速渲染,支持基于GPU的视口剔除和细节层次切换。默认使用基于物理的渲染(PBR),并支持动画和级联阴影贴图。
- 支持基于 PhysX 引擎的物理过程模拟。
- 一个类似于 React 的用户界面构建系统。
- 一个独立于现有平台的统一输入系统。
- 带可插拔滤波器的空间音响系统。
目前开发处于 alpha 阶段。尚未实现的功能包括:网页启动功能、客户端 API、多线程 API、用于创建用户界面的库、用于使用自定义着色器的 API、声音支持、加载和保存 ECS(实体组件系统)组件、即时资源重新加载和自动缩放。 服务器一款用于协作创建游戏地图和游戏场景的编辑器。

来源: opennet.ru
