I want to structure this engine in modules, they can be enabled or disabled depending on your specific needs. For more information, you can take a look into:
This engine uses Vulkan in it's core, but it's prepared to support another graphic backend like Direct3D, Metal, OpenGL and others. Maybe there are some concepts which couldn't work correctly in other graphic backends.
- Windows 10/11
- Linux
- Xbox Series X/s (in the future)
- PlayStation PS4/PS5 (in the future)
Horizon uses CMake to build, all external libraries are included in the build system and compiles together with the engine for each platform.
git clone https://github.com/TheZocki/horizon_engine.git
cd horizon_engine
mkdir build
cd build
cmake ..
cmake --build .
This part outlines the naming conventions used in this game engine project. Following a consistent naming style improves readability, maintainability, and collaboration.
-
Use:
lowercase_with_underscores -
Examples:
core_systemrender_engineinput_manager
-
Use:
lowercase_with_underscores.cppor.h -
Examples:
game_loop.cppwindow_handler.hshader_loader.cpp
-
Use:
PascalCase -
Examples:
GameEngineRenderContextInputHandler
-
Use:
camelCase -
Examples:
initializeEngine()loadTexture()updatePhysics()
-
Use:
camelCase -
Examples:
deltaTimeinputState
-
Use:
m_camelCase(prefix withm_) -
Examples:
m_positionm_velocitym_isVisible
-
Use:
s_camelCase(prefix withs_) -
Examples:
s_instances_maxCount
-
Use:
ALL_CAPS_WITH_UNDERSCORES -
Examples:
MAX_LIGHTSWINDOW_WIDTHDEFAULT_FOV
- Use:
PascalCase
-
Use:
PascalCase -
Example:
enum class TextureFormat { Rgba8, Rgb16f, Depth24Stencil8 };
-
Use:
lowercase_with_underscores -
Example:
namespace math_utils { // functions and types }

