Game engine project by Didgy (Nils Petter Skålerud)
Nils Petter Skålerud #510627 np_skalerud@hotmail.com
How to build:
# Project Description
Windows:
The project can be built as-is on MSVC and MinGW using CMake
A scene loader that allows you inspect scenes loaded from GLTF files. You will be able to fly through this scene with your camera
by using WASD and mouse.
Linux:
Should just be a matter of doing cmake ./ and then make in terminal. Will write detailed
# Key Features
Ubuntu packages required to build:
libglew-dev
libglfw3-dev
* All 3D models will use a homemade Phong shader with support for textures.
* Directional lights
* Textures are loaded in KTX format and use BC7 texture compression with precomputed mipmapping.
* The program is largely built on a homemade ECS (Entity-Component-System) architecture to allow scalability and reusability.
* Homemade ECS-inspired (Entity Component System) architecture to allow high scalability and reusability (can quickly switch the project to i.e a game engine)
* Components (but not custom script components) will be stored contiguously in memory, for maximum cache utilization and iteration speed
* Homemade math library made by Nils Petter Skålerud. The program does not use GLM at all.
* Quaternions for representing rotations
* Homemade Time Manager system
* Homemade Input system for raw input
* Asset Managing, Rendering and Application subsystems will be highly modular and easy to remove/add to the project.
* Object parenting
* Custom scripting framework, to allow gameplay programming
* Homemade rendering front-end interface, for easy implementation of additional rendering APIs i.e Vulkan
* OpenGL UBOs (Uniform Buffer Objects) for common information, such as camera and scene info.
* CMake project structure to allow very simple building on Windows and Linux
NOTE! 32-bit is not supported.
The scene loader will compile for Windows and Linux, 64-bit only.
How to install:
git clone https://github.com/Didgy74/DEngine.git
git submodule init
git submodule update
cmake ./
make
The marking consideration will be on **Architecture/Framework**
# Dependencies
The engine uses the following libraries:
* GLEW
* GLFW
* OpenGL
* nlohmann
* nlohmann-json
* fx-gltf
* stb_image
* DMath
* DTex
* OpenGL
* CMake
# Originally planned features
* Normal Textures (for lighting)
* Full Input system for making your own buttons and axes and bind them to raw input. Complete with input callbacks.
* Custom scripting components designed to be stored contiguously in memory, and not rely on polymorphism for higher performance.
* Deferred shading/lighting
* Multiple scenes running on their own threads independently of each other, with their own viewport/window