/NoiseEngine

Completely free, open-source, cross-platform, and blazingly fast asynchronous engine for creating modern games and apps

Primary LanguageC#MIT LicenseMIT

NoiseEngine logo

Tests Issues License Milestone GitHub stars GitHub forks Discord

Completely free, open-source, cross-platform, and blazingly fast asynchronous engine for creating modern games and apps.

https://noisestudio.net/

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!

Why?

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.

Voxel terrain Real-time voxel terrain demo, render distance 8192 meters/blocks - 1 Februrary 2023

Overview

Documentation

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.

Project structure

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.

Versioning

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.

Technology stack

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.

Contribution

How can I contribute?

We welcome contributions! Without your help, we won't be able to fulfill our golden goal.

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

Building and testing

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.

License

NoiseEngine is licensed under the MIT license.