Game Engine Research Project at DePaul University.
- Terrain & World Builder developed March to June 2024
- Game Object World Editor developed January to March 2024
- Animation System Overview September to November 2023
- Standalone 3D Game Engine Core
- Interactive World Editor with Gizmos and GUI
- In-Engine Terrain Editor with GPU-based editing brushes
- Savable scenes and terrain assets for iterative design
- Skinned animations accelerated on the GPU
- Sprites, fonts, and text-string game objects
- Dynamic lighting system driven by light components
- Paintable foliage objects with optimized rendering for high density
Developed & functional on Windows with Visual Studio. Large assets are stored with git LFS. This repo was developed on a Perfore server so the commit history here is only intermittent.
Source files are flat on disc under Engine/src
.
Open Engine.sln
which organizes the source files nicely with VS filters.
Engine/src/Editor
contains files related to the interactive world editor with widgets, scenes, and edit history.Engine/src/Terrain
contains files related to the in-engine terrain editor and rendering system. This includes the GPU brush architecture, foliage system, and the quad tree data structure.Engine/src/Animation
contains files related to skinned animations, powered by compute shaders.
HLSL Shaders are under Engine/Shaders/Original
.
Engine/Shaders/Original/Graphics
contains core graphics shadersEngine/Shaders/Original/Compute/Terrain Brushes
contains GPU-based terrain editing brushes for sculpting and texture paintingEngine/Shaders/Original/Compute/Animation
contains compute shaders for processing skinned animations
Converter.sln
converts raw assets for meshes, textures, and animations into a runtime format.
Math
: Optimized 3D Math LibraryPCSTree
: Tree data structure for game object heirarchyManager
: Asset management and infrastructure libraryFile
: File IO wrapper
Models/
: contains raw assetsScenes/
: contains JSON scene save filesTerrains/
: contains saved terrain assets created in the engine
IMGUI
: stored underGUI/
as a VS projectRapidXML
: underRapidXML
Protobuf
: wrapped with theProtoBuf/
projectDirectXTex
: used inEngine.sln
JSON
: used inEngine.sln
TinyGLTF
: used inConverter.sln
Framework/
: Grading frameworkTime/
: Abstract time format library
- Open and run
Converter.sln
to populateData/
directory with runtime models - Open and run
Engine.sln