Ambient

Crates.io docs.rs MIT Discord

Ambient is a WebAssembly runtime for building high-performance online games and 3D applications.

Features

See the documentation for a getting started guide, or browse the examples.

Installing

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

At present, a Git-based cargo install is required for the runtime. We are working on removing this requirement.

See installing for more details.

Roadmap

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 | 🚧 | |

Examples

Each example in the examples directory can be run with Ambient:

Every example can also be run in multiplayer mode, but may not have any multiplayer-specific behaviour. To do so:

This will start a server that other people can join:

Note that content is always streamed so the only thing the joining user requires is Ambient itself to join the session.

Contributing

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.

License (MIT)

Ambient is licensed under MIT. See the LICENSE.