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
- ECS
- Transform component
- Mesh component
- Material component
- Editor mode
- Support viewport resizing
- Scene (de)serialization
- Control position and rotation using ImGuizmo
- Frame buffer based picking
- Make the sun controllable using the editor
- Update render stats debugging (Frame time per pass)
- Cascaded shadow maps
- Basic post processing (Screen quad)
- Mip chain bloom
- SSAO
- Anti-Aliasing? (Might conflict with the chased artstyle)
- HDR image based lighting
- Basic deferred rendering
- Integrate Bullet Physics (Car demo)
- UI using clay
- Improve event system referencing (this)
- Simple particle system OR grass rendering
- Rendering a heightmap from a texture
- Audio using miniaudio
- Skeletal animation and GPU skinning