I'm building this game to learn game development in C++ sticking to best practices as I come to understand them. I'm not quite sure what the game might look like yet, as I'm constantly implementing new features based on current interests. I outline the scope of this project below:
- Project setup (CMake, GLFW, GLAD)
- First person controller
- Dear ImGUI
- Lighting
- Blinn-Phong lighting model
- Dynamic amount of lights (using UBO)
- Spot, point, directional
- Refactor the renderer to become more generic (Introduce Mesh class)
- Scene graph & scene nodes
- Instanced rendering
- Render pass abstraction
- Shadow mapping
- Materials
- Update FrameBuffer to support multiple attachments
- Integrate Assimp mesh and material loading
- Basic post processing (Screen quad)
- Profiler
- Window & Framebuffer rezising
- Refactor lights
- Cascaded shadow maps
- Change debug to editor
- ECS
- ImGUI Gimbal controls
- Display frametime (CPU)
- Mip chain bloom
- Split architecture into engine and game
- Layer architecture (Or scene stack?)
- SSAO
- Debug view (Wireframe, per instance coloring)
- Integrate Bullet Physics (Pull and throw objects)
- Audio using miniaudio
- UI using RmlUi
- Improve event system referencing (this)
- Simple particle system OR grass rendering
- Rendering a heightmap from a texture
- Skeletal animation and GPU skinning