GithubHelp home page GithubHelp logo

zone-organization / nuclear-engine Goto Github PK

View Code? Open in Web Editor NEW
84.0 13.0 11.0 26.91 MB

A W.I.P Modern C++20 Cross-Platform Game Engine with C# Scripting.

License: Other

C++ 98.37% Batchfile 0.10% CMake 0.06% HLSL 1.12% C# 0.34%
game-engine opengl directx c-plus-plus nuclear-engine physx imgui fmod csharp csharp-script

nuclear-engine's Introduction

W.I.P Cross-platform 3D Game Engine written in C++20 with C# Scripting

Getting Started | Features | Dependencies | RoadMap

Preview

For more examples, please see Samples. Sample2

Features

List is W.I.P (There are lots of features not written here)

Engine
- Custom Entity Component System (using entt as back-bone while providing systems that manages components)
- Multi-Threaded tasks execution (Job-system)
Assets
- All assets are loaded/imported asynchronously.
- Uses Assimp to import 40+ 3D model formats.
- Uses Freeimage to import 30+ image formats.
- Uses libsndfile to import 20+ sound files formats.
- All imported assets are exported into a unified formats for faster loading.
- All imported assets have a meta file that describes further loading.
- Every asset is identified with a unique UUID given on its creation.
- Section W.I.P
Graphics
- Dynamic light Component (Directional & Point & Spot)
- Flexable Material System (using different pipelines/shaders/textures for every material)
- Shadow Mapping for all light sources.
- PBR With Image Based Lighting shaders.
- Section W.I.P
Audio
- Uses OpenAL or XAudio2 as a low-level backends
- Section W.I.P
Physics
- PhysX 4.1 integration
- Section W.I.P
Scripting
- C# Scripting through Mono
- Section W.I.P

Building

Follow the instructions below to compile and run the engine from source. If you wish to build with another compiler/platform, please note that:

  • The engine requires a C++20 compiler and currently only supports x64 platforms (support for x32 is planned)
  • The engine doesn't contain platform-specific code and is written with cross-platform portability in mind, so porting to other platforms should be easy.

Windows

  • Visual Studio 2022 or newer is required if you wish to build the solution directly
  • Clone repo & submodules
  • Run RunCmakeForDependencies.bat
  • Compile Assimp & Diligent & OpenAL-soft found in External/CmakeProjects
  • Download and compile the remaining dependencies (PhysX & FreeImage & Freetype & msdf-atlas-gen 'as static lib')
  • Run CopyDependenciesBinaries.bat
  • Open Nuclear Engine.sln and set your solution configuration and platform
  • Compile

Other Platforms

  • Planned platforms:
    • Desktop: Linux - MacOS
    • Mobile: Android - IOS

Consoles are planned but not a priority now...

Dependencies

Dependencies Type Buildling
Assimp Submodule built with cmake
DiligentCore Submodule built with cmake
OpenAL-soft Submodule built with cmake
PhysX 4.1 submodule Built with their provided build-tools
Freeimage submodule Built with their provided build-tools
Freetype submodule Built with their provided build-tools
msdf-atlas-gen submodule Built with their provided build-tools
Mono External Put headers in External/mono
SDL2 External Put headers in External/SDL/include
libsndfile External Put the .lib in your Build Output directory
spdlog included Built with the engine
IMGUI included Built with the engine
stb_truetype included Built with the engine
entt included Built with the engine
zpp::bits included Built with the engine

Download external dependencies through their sites. Put all their .lib in the bin folder.

RoadMap

  • V0.01 Alpha:
    • Complete RenderSystem (50%)
    • Complete AudioSystem Implementation. (75%)
      • Fix AudioSource/Listener Velocity change callbacks
      • Add Support for streaming AudioClips
      • Add AudioCapture support (Microphones)
    • Basic Implementaion of PhysX.
    • Complete Samples & their documentation.

Current To-dos

  • W.I.P:

    • CPU & GPU Queries & Memory/Performance Profilers
    • Use CMake instead of Visual Studio / Port to linux.
    • New Rendering Effects (Fog - SSAO - SSR - Motion Blur)
    • PostProcessing effects should be processed per camera not only in the main camera.
    • Start implementing 2D sprite rendering (+ start implementing GUI/Text Rendering)
  • On-Hold:

    • Text rendering (text tile-set creation finished)
    • Basic Editor support (Nuclear Editor).
    • Finish reflecting the C++ api to the C# scripting assembly (prob provide a build-time solution that builds a binding lib?)
    • Serializing the scene & assets.
  • TODO:

    • CSM
    • FIX BRDF generation in IBL Pipeline
    • Clean and document Samples.
    • GUI (basic widgets)

Contributing

  • Contributions are welcome, just open a pull request or an issue. You can also join us in GitHub Discussions.

nuclear-engine's People

Contributors

v7medz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nuclear-engine's Issues

Rendering any model with mirrored UVs seems to be broken.

I noticed this in your readme - I haven't tried your engine (yet) but I had a similar issue once in my own project. The fix was simply to use GL_REPEAT instead of GL_CLAMP_TO_EDGE for the texture wrap mode. Maybe this is the case here?

Typo in description

Fast, customizable, cross-platfrom game engine powered by Nuclear Fuel!

Fast, customizable, cross-platform game engine powered by Nuclear Fuel!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.