Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/robbiegrier/game-engine
A standalone 3D game engine with an interactive world editor, real-time terrain & foliage editor, skinned animations, sprites, lights, and more.
https://github.com/robbiegrier/game-engine
game-engine
Last synced: 29 days ago
JSON representation
A standalone 3D game engine with an interactive world editor, real-time terrain & foliage editor, skinned animations, sprites, lights, and more.
- Host: GitHub
- URL: https://github.com/robbiegrier/game-engine
- Owner: robbiegrier
- Created: 2023-09-20T17:48:59.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-06-13T20:46:31.000Z (6 months ago)
- Last Synced: 2024-06-14T10:15:39.767Z (6 months ago)
- Topics: game-engine
- Language: C++
- Homepage:
- Size: 29.5 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Azul 3D
Game Engine Research Project at DePaul University.### [Click to Watch an Overview of the Terrain & World Builder!](https://youtu.be/L6XEXuVbLBU)
[![Watch the video](https://img.youtube.com/vi/L6XEXuVbLBU/maxresdefault.jpg)](https://youtu.be/L6XEXuVbLBU)#### All Demos:
1. [Terrain & World Builder](https://youtu.be/L6XEXuVbLBU) developed March to June 2024
2. [Game Object World Editor](https://www.youtube.com/watch?v=mWYN3-QDYbc&t=0s) developed January to March 2024
3. [Animation System Overview](https://youtu.be/0vGIcO0gV6I?si=SvI_-_ceF2pQHnoW) September to November 2023
---### Main Contents:
1. Standalone 3D Game Engine Core
2. Interactive World Editor with Gizmos and GUI
3. In-Engine Terrain Editor with GPU-based editing brushes#### More Features
1. Savable scenes and terrain assets for iterative design
2. Skinned animations accelerated on the GPU
3. Sprites, fonts, and text-string game objects
4. Dynamic lighting system driven by light components
5. Paintable foliage objects with optimized rendering for high density#### Note
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.## How to read
### Engine Code
Source files are flat on disc under [`Engine/src`](https://github.com/robbiegrier/Azul3D/tree/main/Engine/src).Open `Engine.sln` which organizes the source files nicely with VS filters.
#### Interesting Sections
1. `Engine/src/Editor` contains files related to the interactive world editor with widgets, scenes, and edit history.
2. `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.
3. `Engine/src/Animation` contains files related to skinned animations, powered by compute shaders.#### Shaders
HLSL Shaders are under [`Engine/Shaders/Original`](https://github.com/robbiegrier/Azul3D/tree/main/Engine/Shaders/Original).
1. `Engine/Shaders/Original/Graphics` contains core graphics shaders
2. `Engine/Shaders/Original/Compute/Terrain Brushes` contains GPU-based terrain editing brushes for sculpting and texture painting
3. `Engine/Shaders/Original/Compute/Animation` contains compute shaders for processing skinned animations---
### Other Components
#### Asset Converter
`Converter.sln` converts raw assets for meshes, textures, and animations into a runtime format.#### In-house Libraries
1. `Math`: Optimized 3D Math Library
2. `PCSTree`: Tree data structure for game object heirarchy
3. `Manager`: Asset management and infrastructure library
4. `File`: File IO wrapper#### Save Data Directories
1. `Models/`: contains raw assets
2. `Scenes/`: contains JSON scene save files
3. `Terrains/`: contains saved terrain assets created in the engine#### Included dependencies:
1. [`IMGUI`](https://github.com/ocornut/imgui): stored under `GUI/` as a VS project
2. `RapidXML`: under `RapidXML`
3. `Protobuf`: wrapped with the `ProtoBuf/` project
4. [`DirectXTex`](https://github.com/microsoft/DirectXTex): used in `Engine.sln`
5. [`JSON`](https://github.com/nlohmann/json): used in `Engine.sln`
6. [`TinyGLTF`](https://github.com/syoyo/tinygltf): used in `Converter.sln`#### Provided Resources
1. `Framework/`: Grading framework
2. `Time/`: Abstract time format library## How to run
1. Open and run `Converter.sln` to populate `Data/` directory with runtime models
2. Open and run `Engine.sln`