Ambient is a WebAssembly runtime for building high-performance online games and 3D applications.
.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 getting started guide, or browse the examples.
If you have a recent Rust toolchain (stable
is sufficient), you can install Ambient using the following command:
sh
cargo install --git https://github.com/AmbientOrg/Ambient.git --tag v0.0.16 ambient
At present, a Git-based cargo install
is required for the runtime. We are working on removing this requirement.
See installing for more details.
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 | ✅ | | | WASM API | ✅ | Rust is the only supported client language right now. | | Multiplayer/networking | ✅ | | | GPU-driven renderer | ✅ | | | FBX & GLTF loading | ✅ | | | Physics (through PhysX) | ✅ | | | Animations | ✅ | | | Skinmeshing | ✅ | | | Shadow maps | ✅ | | | Decals | ✅ | | | GPU culling and LoD | ✅ | | | Multi-platform | ✅ | Windows, Mac and Linux so far. | | Run on Web | 🚧 | | | Client-side API | 🚧 | | | Multithreading API | 🚧 | Multithreading is used internally already, but we want to expose multithreading functionality within the WASM API. | | UI API | 🚧 | A React-like UI library already exists in the repo, and we're working on exposing it through the WASM API. | | Custom shaders | 🚧 | Custom shaders are supported by the renderer, but not yet exposed in the API. | | Hot-reloading assets | 🚧 | | | Audio | 🚧 | Audio is supported, but not currently exposed. | | ECS save/load | 🚧 | |
Each example in the examples directory can be run with Ambient:
cd guest/rust/examples/tictactoe
ambient run
Every example can also be run in multiplayer mode, but may not have any multiplayer-specific behaviour. To do so:
cd guest/rust/examples/tictactoe
ambient serve
This will start a server that other people can join:
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.