drwbns / DoomsEngine

Dooms Engine ( Game Engine )

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Dooms Engine ( Game Engine ) ( 2021.01 ~ )

Video

Game Engine Video

How to build?

1. git clone https://github.com/SungJJinKang/DoomsEngine.git
2. move to project directory
3. git submodule init
4. git submodule update --recursive
5. Build "Doom3" project with visual studio 2022

Features

Requirement

  • C++17
  • C# ( used for making engine tools )
  • Windows, x64, VisualStudio 2022(vc17)
  • Target Compiler : MSVC, Clang ( clang is used for generating reflection data )

Engine Core

  • Homemade Math Library ( JINMATH )
  • Support SIMD ( Currently AVX2 ) ( Math, Culling.... )
  • Asset Import Pipeline ( Automatically import assets located in asset folder )
  • Component based System
  • Object Management System for preventing memory leak ( 개발 일지 )
  • Fast Runtime Type Casting ( inspired by unreal engine4's runtime type casting ) ( time complexicity is always O(1), dynamic_cast isn't used ( RTTI option is disabled ), source code )
  • Garbage Collector using reflection system ( stop-the-world, Mark ( multithread ) - Sweep algorithm, std::array, std::vector is also supported, nullify pointer referencing destroyed object ( to prvent referencing invalid address ), 개발 일지, video, soure code )

Rendering

  • OpenGL, DIRECTX 11(Partially)
  • Deferred Rendering ( video )
  • Sort objects from front to back
  • Multi Thread ViewFrustum Culling From FrostBite Engine of EA Dice ( source code, 개발 일지 )
  • Masked SW ( CPU ) Occlusion Culling From Intel ( video1, video2, source code, 개발 일지, reference paper )
  • Distance Culling from Unreal Engine ( reference, soure code )
  • Shader Language Portable System ( Automatically convert glsl files to hlsl, glslcc is used )
  • Static Batch Rendering ( video, Mesh data of static objects with same material is combined automatically at start of scene. They are drawed in 1 draw call )

Physics

Reflection

  • Automatic Reflection Data Generation System. ( video ) ( clrefelct_automation )
  • Customized Reflection Open Source Library ( video ) ( Customized clReflect )
  • Integrate imgui with reflection system. ( DObjects, std::vector, std::array, std::unique_ptr... is supported, video )

Misc

To Do

TO-DO List

Thirdparty Dependencies

  • glfw : A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input
  • assimp : The official Open-Asset-Importer-Library Repository
  • DirectTex : DirectXTex texture processing library
  • imgui : Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
  • Intel TBB ( malloc proxy )
  • concurrentqueue : A fast multi-producer, multi-consumer lock-free concurrent queue for C++11
  • json : JSON for Modern C++
  • glslcc : GLSL cross-compiler tool (GLSL->HLSL, MSL, GLES2, GLES3, GLSLv3), using SPIRV-cross and glslang
  • magic_enum : Static reflection for enums (to string, from string, iteration) for modern C++

Development Blog

Korean Blog

About

Dooms Engine ( Game Engine )

License:GNU General Public License v3.0


Languages

Language:C++ 86.3%Language:C 13.4%Language:GLSL 0.2%Language:Assembly 0.0%Language:Batchfile 0.0%