Nene Engine is an in-house game engine named after Sakura Nene's game engine in anime series <<New Game!!>>.
Nene Engine uses Vcpkg to manage dependencies, Meson to manage build.
The following environments must be satisfied:
-
Working Vcpkg environment, with
vcpkgcommand available inPATH -
Getting Meson >= 1.11.0, with
mesoncommand available inPATH
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
Nene Engine is built by Meson now.
$ meson setup .build --backend=vs$ meson setup .buildThe 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=releaseAll available options are listed in meson.options file.
Use meson devenv to open .build/NeneEngine2.sln the IDE
$ meson devenv -C .\.build\ devenv .\NeneEngine2.slnor
$ meson devenv -C .\.build\ rider .\NeneEngine2.slnThen build and run ( debug ) app or editor module in the IDE.
Build via. Meson command line
$ meson compile -C .buildThe 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 .buildRun the executable
[NeneEngine2] PS D:\NeneEngine2\.build> .\source\app\app.exeNene 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.
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
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.
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.

