Skip to content

hellokenlee/NeneEngine2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

365 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nene Engine

Nene Engine is an in-house game engine named after Sakura Nene's game engine in anime series <<New Game!!>>.

Getting Started

Preliminary

Nene Engine uses Vcpkg to manage dependencies, Meson to manage build.

The following environments must be satisfied:

The following C++ environment should be satisfied in Windows:

  • Visual Studio >= 2022.17.2 [*]
  • Compiler C++ Standard >= C++20 ( MSVC >= 143 )

Currently Nene Engine only supports Microsoft Windows with Direct3D 12. Apple's OS with Metal; Linux, Android with Vulkan will be supported in the future.

[*] Microsoft only supports std::format under C++20 after Visual Studio 17.2

Development

Nene Engine is built by Meson now.

Setup

Visual Studio ( or Rider )
$ meson setup .build --backend=vs
Command Line
$ meson setup .build
Setup Options

The supported build types are:

  • debugoptimized: optimized build with debug info, useful for development.
  • release: full optimization, max performance.

For example

$ meson setup .build --backend=vs --buildtype=release

All available options are listed in meson.options file.

Build and Run

Visual Studio ( or Rider )

Use meson devenv to open .build/NeneEngine2.sln the IDE

$ meson devenv -C .\.build\ devenv .\NeneEngine2.sln

or

$ meson devenv -C .\.build\ rider .\NeneEngine2.sln

Then build and run ( debug ) app or editor module in the IDE.

Command Line

Build via. Meson command line

$ meson compile -C .build

The normal build produces shared libraries for engine modules and executables for app and editor.

Then bring the command line into meson devenv interactive mode

$ meson devenv -C .build

Run the executable

[NeneEngine2] PS D:\NeneEngine2\.build> .\source\app\app.exe

Module Scheme

Nene Engine organizes C++ modules as folders under source. Each module owns a meson.build file.

You can add or remove a module by adding or removing a folder with a meson.build file under source.

Introduction

Modules Dependency

graph TD
  App --> Engine
  CoreObject --> CoreRender
  CoreRender --> GapiDynamic
  Editor --> Engine
  Engine --> CoreObject
  Engine --> Renderer
  Gapi --> Core
  GapiD3D12 --> Gapi
  GapiDynamic --> GapiD3D12
  GapiDynamic --> GapiVulkan
  GapiVulkan --> Gapi
  Renderer --> CoreRender
Loading

Coding Standard

Namespace

You can use namespaces to organize your classes, functions and variables where appropriate. But Nene Engine uses some special namespaces to annotate the category of the classes or functions:

namespace nene
{
} 

The namespace nene is the root namespace of Nene Engine.

// Template
namespace nene::t
{
    template<class somedata_t>
    class some_class_template
    {
    };
}

The namespace nene::t is for class or function templates. For example, container such as rotator ( t::rotator<> ), rectangle ( t::rect<> ) are in this namespace.

// QtExtension
#include <QtWidgets/QWidget>
namespace nene::qt
{
	class BINDINGS_API some_qt_widget : public QWidget
    {
        Q_OBJECT
    };
}

The namespace nene::qt is for Qt extension class for editor.

Open Source

Nene Engine cannot live without the forces of open sources. Especially the following brilliant open source libraries:

Huge shout out to the developers of these open source library and the brilliant brains who helped or inspired Nene Engine's development.

About

Neta from <NEW GAME!> Sakura Nene's game engine.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors