Giter Club home page Giter Club logo

ambient's Introduction

Ambient

Crates.io docs.rs MIT Discord

Ambient is a runtime for building high-performance multiplayer games and 3D applications, powered by WebAssembly, Rust and WebGPU.

Announcement blog post

Features

  • Seamless networking: Ambient is both your server and client. All you need to do is to build your server and/or client-side logic: the runtime handles synchronization of data for you.
  • Isolation: Projects you build for Ambient are executed in isolation through the power of WebAssembly - so that if something crashes, it won’t take down your entire program. It also means that you can run untrusted code safely.
  • Data-oriented design: The core data model of Ambient is an entity component system which each WASM module can manipulate.
  • Multilingual: You will be able to build Ambient modules in any language that can compile to WebAssembly. At present, Rust is the only supported language, but we are working on expanding to other languages.
  • Single executable: Ambient is a single executable which can run on Windows, Mac and Linux. It can act as a server or as a client.
  • Interoperability: Ambient allows you to define custom components and "concepts" (collections of components). As long as your Ambient projects use the same components and concepts, they will be able to share data and interoperate, even if they have no awareness of each other.
  • Asset pipeline and streaming: Ambient has an asset pipeline that is capable of compiling multiple asset formats, including .glb and .fbx. The assets are always streamed over the network, so your clients will receive everything they need when they join.
  • Powerful renderer: The Ambient renderer is GPU-driven, with both culling and level-of-detail switching being handled entirely by the GPU. By default, it uses PBR. It also supports cascading shadow maps and instances everything that can be instanced.

See the documentation for a guide on how to get started, or browse the examples.

Installing

The easiest way to get Ambient is by downloading the latest release here.

For alternative installation options, go the documentation on installing.

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:

  • 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.

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.

ambient's People

Contributors

philpax avatar fredriknoren avatar ten3roberts avatar sk83rjosh avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.