/NonLinearEngine

Experimental Parallel 3D Game Engine for Windows

Primary LanguageC++MIT LicenseMIT

NonLinear Engine

Experimental Parallel 3D Game Engine for Windows


About the Project

NonLinear Engine is a completely free (MIT Licensed) experimental 3D game engine for Windows. The aim of this project is to develop a highly scalable game engine that fully utilizes processors with a large number of cores (6 cores +) through the use of its custom parallel framework, and then push it to see what is possible to achieve. Possible use cases include: achieving higher frame rates, more dynamic bodies and animations, smarter AI, higher graphical detail, approximated voxel terrain, real-time fluid simulations, etc.

Borrowing ideas from Intel's Designing the Framework of a Parallel Game Engine, NonLinear Engine framework features free-step system execution with variable execution frequencies and lockless parallel data synchronization between systems. It is built on top of Intel TBB task scheduler and heavily utilizes its parallel containers and algorithms for efficient parallelization and minimization of memory contention. The framework is decoupled from the engine and can be built separately for uses in other projects.

This engine if far from completion and is currently in an active state of development. Throughout the development, I will be posting working samples and tutorials and updating documentation for stable components. I started this project as a means to practice what I am passionate about which is game and graphics development. It has been an amazing learning experience working on this engine as I learned about engine architectures, rendering APIs and techniques, memory management, and parallelization techniques, and improved my C++ skills to a level far beyond what I could have through sheer university curriculum.


Sponza sample

Current Features:

  • Written in modern C++ 14
  • CMake build system
  • Modular architecture
  • Decoupled from the presentation layer (Embeddable)
  • Cross-platform (except for the rendering system)
  • Input system
  • Direct3D 11 Rendering system
  • First-person camera
  • Assimp scene importer supporting a large number of interchange formats
    .dae, .blend, .3ds, .obj, .x, and more…
  • DirectXTex texture importer supporting mipmap generation and the following texture formats:
    DDS, BMP, JPEG, PNG, TIFF, GIF, HD Photo
  • Loading precompiled shaders from file and compiling on the fly
  • FPS counter
  • Windowed and fullscreen modes


Roadmap

This section is created to track development progress and includes completed and pending tasks as well as future plans.
Step # Description Status
... Add shadows Pending
... Add material support Pending
... Add support for blending Pending
10 Create a basic QT editor Pending
9 Add support for forward lighting Pending
8 Build console Complete
7 Build Simple Direct3D 11 rendering system Complete
6 Build basic input system Complete
5 Build basic application system Complete
4 Build parallel engine core Complete
3 Write a basic functional build system in CMake Complete
2 Select a cross-platform build system (CMake) Complete
1 Finalize the prototyping stage V.0.1.0 Complete

Versioning

All NonLinear Engine versions follow the format stated below:
[Major Version].[Minor Version].[Patch Version]

Version Description
Major signifies incompatible changes to public API and incorporates changes from Minor and Patch versions. 0 denotes a pre-release version while >=1 denotes a stable release.
Minor signifies backwards compatible public API changes. Incorporates changes from Patch versions.
Patch signifies bug fixes and changes that do not affect public API. Significance may vary.

Releases:

V0.1.0 prototype is out and contains legacy code.


Downloads:

No binary releases at this time
Examples will become available as the development progresses


Build Instructions:

Detailed instructions will be posted when the engine core is ready.

Licensing

NonLinear engine is licensed under the MIT license.