/NoiseEngine

Modern multithreaded engine for games and applications

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 instability may occur.
You SHOULD avoid using it for any game development before v0.1.0 was released. But contributions are welcome.

Why?

Popular game engines was created many years ago based on synchronous API which does not use all power of modern CPU's. When we creating own next generation procedural game prototype in 2021 with existing engine we started having difficulties to optimize internal things in engine which we used. We started looking for a new engine, but they all had the same problems, so we rethought them and made the difficult decision to create our own engine - NoiseEngine.

Our golden goal is create most performant engine, which relatively easy to game developers create games which we currently cannot do. Also in AAA scale.

NoiseEngine is not a story of 9th generation of consoles. Is not a story of primitive tool like current engines. Is a story of future with new perspective.

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

Overview

Documentation

Currently (before v0.1.0) initial documentation still is writen. It is not published on any website, you can read it from documentation comments. And manuals currently not exists, and examples you can find in tests.

Project structure

We have a few repositories which contain parts of the entire project:

  • Current - contains core of the engine, all API which you will be used in your application.
  • NoiseEngine.Cli - command line interface tools for building and shipping games or apps with NoiseEngine
  • NoiseEngine.Editor - graphical user interface for simpler game or apps creation

You can see more specify structure about this repository here.

Versioning

We want to use sementic versioning, and after first version release (v0.1.0) we want offten release patch updates. But we are of the opinion that branch master should always contains stable code for old features, as far as posible.

Technology stack

NoiseEngine uses .NET 7 and new versions of Rust. For rendering we currently use a Vulkan, but support of other graphics APIs can be added in the future.

Contribution

How can I contribute?

We welcome contributions! Without this, we are not fulfilling our golden goal.

In addition, do not forget to format the Rust code and detect errors and fix them with the compiler and clippy before you post a pull request.

Formatting (installation guide):

cargo fmt

Clippy (installation guide):

cargo clippy

Building and testing

To compile this project you need to have .NET 7.0 SDK and Rust 1.70 or newest.

After when you have this tools you can build project with running command in 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.