Skip to content

thezocki/horizon_engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Horizon Engine is an closed-source game engine with modern-graphics, focusing to be performant, modular and flexible. This engine could be used like a framework to create graphics projects, or creating games with the built-in editor.

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.

Compatible Platforms

  • Windows 10/11
  • Linux
  • Xbox Series X/s (in the future)
  • PlayStation PS4/PS5 (in the future)

Installation

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 .

Naming Conventions

This part outlines the naming conventions used in this game engine project. Following a consistent naming style improves readability, maintainability, and collaboration.

1 1. Folders and Files

Folder Names

  • Use: lowercase_with_underscores

  • Examples:

    • core_system
    • render_engine
    • input_manager

File Names

  • Use: lowercase_with_underscores.cpp or .h

  • Examples:

    • game_loop.cpp
    • window_handler.h
    • shader_loader.cpp

2. Classes & Structs

Class / Struct Names

  • Use: PascalCase

  • Examples:

    • GameEngine
    • RenderContext
    • InputHandler

3. Functions & Methods

Function Names

  • Use: camelCase

  • Examples:

    • initializeEngine()
    • loadTexture()
    • updatePhysics()

4. Variables

Local / Non-member Variables

  • Use: camelCase

  • Examples:

    • deltaTime
    • inputState

Member Variables

  • Use: m_camelCase (prefix with m_)

  • Examples:

    • m_position
    • m_velocity
    • m_isVisible

Static Member Variables (optional)

  • Use: s_camelCase (prefix with s_)

  • Examples:

    • s_instance
    • s_maxCount

5. Constants

Global / Static Constants

  • Use: ALL_CAPS_WITH_UNDERSCORES

  • Examples:

    • MAX_LIGHTS
    • WINDOW_WIDTH
    • DEFAULT_FOV

6. Enums

Enum Types

  • Use: PascalCase

Enum Values

  • Use: PascalCase

  • Example:

    enum class TextureFormat {
        Rgba8,
        Rgb16f,
        Depth24Stencil8
    };

7. Namespaces (if used)

Namespace Names

  • Use: lowercase_with_underscores

  • Example:

    namespace math_utils {
        // functions and types
    }

About

Experimenting things with 3d graphics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •