Skip to content

My first Real-Time 3D Game Engine learning project written in C++.

License

Notifications You must be signed in to change notification settings

fseeeye/EyeEngine-Cpp

Repository files navigation

EyeEngine-Cpp

License

FOA, sry for my poor English.

What is Eye Engine?

Eye Engine is my first Real-Time 3D Game Engine learning project.

There are two editions:

They are completely independent and have different architecture & development plan!

As I say, Building games above this engine is not the first level target! The main purpose of those projects is helping me to learn modern 3D Game Engine, Graphic API & SL and practice Computer Grahpic theory.

About Cpp Edition

I will build it from the "bottom layer", such as Entry Point / Logging System. So, it will add advanced features slowly.😶‍🌫️

Getting Started

Cpp Edition only support Windows + OpenGL yet, make sure you have the correct env.

  1. git clone --recursive https://github.com/fseeeye/EyeEngine-Cpp.git
  2. Open this repo by Visual Studio. (Recommanded using Visual Studio 2022)
  3. Hit F5 to run the Game Sandbox Example Project.

Dev Guide

  • update submodules: git submodule update --recursive --remote.
  • use commitizen commit changes.

RoadMap

  • Basic System
    • Logging System
    • Build System
    • Event System & Polling Input
    • PCH
    • OpenGL Support
    • ImGUI
    • Keycode & Mousecode
    • Math Support
  • Abstract Rendering basis
    • (Vertex & Index) Buffer
    • Vertex Buffer Layout
    • Vertex Array
    • Shader
    • Draw Call
    • 2D Camera (View & Projection Transform)
    • DeltaTime
    • Model Transform
  • Material System / Asset System
    • Shader Asset
    • Texture Asset
    • Shader Library
    • Model Asset
  • 2D Renderer (target: Batch Rendering + 60fps + with 100-200k textures)
    • Orthographic Camera
    • Handle resize properly
  • Serialization
  • Entity Component System
  • Level Format
  • Tools
  • Scripting

Mainly Used Librarys

  • glfw : multi-platform library for OpenGL, OpenGL ES and Vulkan, which provides a simple, platform-independent API for creating windows, contexts and surfaces, reading input, handling events, etc. The only regret is that GLFW doesn't support DirectX.
  • glad : modern OpenGL wrapper.
  • glm : header only C++ mathematics library for graphics software which is like GLSL spec.
  • ImGui : amazing Graphic UI lib.
  • spdlog : fast, multi-threading supported, C++ logging library.
  • stb_image : single-file image loader.

Dependence Binarys

  • premake : perform build configuration tasks or generate project files for toolsets like Visual Studio, Xcode, and GNU Make.

Reference

  • Hazel : Cherno have made a lot amazing Game Engine videos for that.
  • Unreal : well-known Game Engine.

About

My first Real-Time 3D Game Engine learning project written in C++.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published