A few days ago the launch of «Ambient» was announced, which is a universal 3D runtime environment, compatible with any language that compiles/runs on WebAssembly. Ambient is designed to make it easy to create and deploy rich multiplayer worlds and experiences.
The engine initiallye aims to create a universal runtime that supports game and application development in any programming language for which compilation to intermediate WebAssembly code is possible. However, the first version only supports Rust development so far.
After over a year in development, we're excited to announce version 0.1 of Ambient, our open source multiplayer game runtime built with Rust 🦀!
About Ambient»
The developers mention that currently there are plenty of game engines that optimize single player game creation, but few claim to make multiplayer easy.
We were curious: what could be built if multiplayer was as easy to use as single player? What kinds of extraordinary experiences, with new and interesting interactions, could people imagine once freed from the finer details of networking?
Ambient is the beginning of our answer to these questions: a runtime environment designed to enable developers of all stripes to create and share the experiences they want to create. However, the problem is not just getting the client-server communication right.
Ambient is a free and open source game engine (under the MIT license) and its developers mention that one of their goals is to set a standard for creating multiplayer games.
As a company, our plan is to provide value-added services for the runtime that we plan to monetize (including server and asset hosting), but the runtime itself will be free and open source forever. As a user of the runtime, you will always be able to choose which of our services you take advantage of and which you choose to implement yourself.
Of the characteristics that stand out from Ambient, it is mentioned that has transparent support for networking. The engine combines the functions of a client and a server, provides all the necessary components to create client and server logic, and automatically synchronizes server state on clients.
Ambient was designed from scratchto allow network experiences, since a common data model is used on the client and server sides, which makes it easy to transfer code between the backend and the frontend. It runs each module in its own isolated environment to limit the impact of untrusted code, and crashing one module doesn't crash the entire application.
Ambient is based on WebAssembly, which will allow you to write code in any language that compiles into WASM. Currently, only Rust is supported, but it is mentioned that more languages are planned to be supported in the future as possible.
Another feature of Ambient is that is built with a data-driven design in which all data is stored and interacted through a system of entity components backed by a centralized entity database on the server.
This database is automatically replicated for each client, and each client has the ability to grow and extend local stateful entities. Using an ECS makes it easy to see the status of your application and provides excellent performance and scalability.
Finally, for those interested in learning more about it, they should know that the code is written in Rust and is distributed under the MIT license.
Download and get Ambient
It is worth mentioning that Ambient has a single executable that can be downloaded for Windows x64, Linux x64 or macOS ARM and that can also be compiled, if the user prefers to do it on their own.
This executable can act as a server or can join a server as a graphical client. You can get it from the following link