AmbientRun / Ambient
- суббота, 25 февраля 2023 г. в 00:14:08
The multiplayer game engine
Ambient is a runtime for building high-performance multiplayer games and 3D applications, powered by WebAssembly, Rust and WebGPU.
See our announcement blog post for more details.
.glb
and .fbx
. The assets are always streamed over the network, so your clients will receive everything they need when they join.See the documentation for a guide on how to get started, or browse the examples.
The easiest way to get Ambient is by downloading the latest release here.
For alternative installation options, go to the documentation on installing.
Note: Ambient is in an alpha stage and the API will be iterated on heavily. We are working towards a stable release.
Feature | Status | Notes |
---|---|---|
ECS | Single-threaded. | |
WASM API | Rust is the only supported guest language right now, and WASM can only be used on the server. We are working on clientside WASM; see this issue. | |
Multiplayer/networking | Multiplayer is server-authoritative without any prediction or compensation. See this issue. | |
GPU-driven renderer | ||
FBX & glTF loading | ||
Physics (through PhysX) | Using PhysX 4.1. PhysX 5 support is tracked in this issue. | |
Animations | ||
Skinmeshing | ||
Shadow maps | ||
Decals | ||
GPU culling and LoD | ||
Multi-platform | Windows, Mac, and Linux so far. x86-64 and ARM64 are actively supported; other platforms may also work, but require testing. | |
Run on Web | See this issue. | |
Multithreading API | Multithreading is already used internally, but we want to expose multithreading functionality within the WASM API. This may be explicit (i.e. task- or thread-spawning) or implicit (WASM modules being scheduled across threads). | |
UI API | A React-like UI library already exists in the repo, and we're working on exposing it through the WASM API. See this issue. | |
Custom shaders | Custom shaders are supported by the renderer, but are not yet exposed in the API. See this issue. | |
Hot-reloading assets | See this issue. | |
Audio | Audio is supported, but not currently exposed. See this issue. | |
ECS save/load | For loading, see this issue. |
Each example in the examples directory can be run with Ambient as both client and server:
cd guest/rust/examples/tictactoe
ambient run
Every example can also be run server-only. To do so:
cd guest/rust/examples/tictactoe
ambient serve
This will start a server that other people, including yourself, can join (assuming that ports 8999 and 9000 are forwarded):
ambient join [IP_OF_SERVER]
Note that content is always streamed, so the only thing the joining user requires is Ambient itself to join the session.
We welcome community contributions to this project.
Please talk with us on Discord beforehand if you'd like to contribute a larger piece of work.
Ambient is licensed under MIT. See the LICENSE.