Completely free, open-source, cross-platform, and blazingly fast asynchronous engine for creating modern games and apps.
Warning
NoiseEngine is still in very early development. Frequent changes, missing docs, and instabilities may occur.
You should avoid using it for any game development before v0.1.0 is released. Contributions are welcome!
Popular game engines were created many years ago and are based on synchronous APIs which do not take full advantage of modern CPUs. While building the prototype of our own next generation procedural game in 2021 using an existing engine, we had difficulties with optimizing internal things in the engine which we used. We started looking for alternatives, but they all had the same problems, so we made the difficult decision to create our own engine - NoiseEngine.
Our golden goal is to create the most performant engine, one which enables game developers to create games which are hard to do with current generation engines. Also on AAA scale.
Real-time voxel terrain demo, render distance 8192 meters/blocks - 1 Februrary 2023
Important
Currently (before v0.1.0) initial documentation is still being writen. It is not published on any website.
You can find information in docs directory which also have manual. Or see examples directory to see how it looks in code.
And do not forget to read about API from documentation comments. Also you can find another usage examples in tests.
We have a few repositories which contain parts of the entire project:
- Current - contains the core of the engine, all APIs which you will use when building your application.
- NoiseEngine.Cli - command line interface tools for building and shipping games and apps with NoiseEngine
- NoiseEngine.Editor - graphical user interface that simplifies creating games and apps
You can see more details about the structure of this repository here.
We use sementic versioning. After the first version is released (v0.1.0), the plan is to often release patch updates. At the same time we are of the opinion that the master
branch should always remain backwards compatible with as much code as possible.
NoiseEngine uses .NET 7 and recent versions of Rust. For rendering we currently use Vulkan. Support for other graphics APIs can be added in the future.
We welcome contributions! Without your help, we won't be able to fulfill our golden goal.
- Contributing explains what kinds of contributions we welcome.
- Building and testing instructions.
In addition, do not forget to format your Rust code with rustfmt
and check it with clippy
before filing a pull request:
Formatting (installation guide):
cargo fmt
Clippy (installation guide):
cargo clippy
To compile this project you will need .NET 7.0 SDK, as well as the latest version of Rust.
Once you have these, you can build the project by running the following command in the repository root:
dotnet build
And you can run tests by:
dotnet test
Rust compilation will be executed automatically and results will be shown in console output.
NoiseEngine is licensed under the MIT license.