Project Summary
Built a real-time 3D game engine from scratch in C++/OpenGL featuring a cat wizard exploring a procedurally generated magical library, collecting keys and spells to unlock the boss room and defeat a multi-phase boss. Engine includes advanced rendering, physics/collision, audio, and gameplay systems.
Technical Overview
This project was developed from scratch in C++ using OpenGL for rendering, with no pre-built game engines.
It includes an entirely custom real-time rendering pipeline, interactive gameplay systems, procedural content generation,
and performance-focused optimizations.
- Engine Architecture: Modular C++ code structure with systems for rendering, physics/collision, audio, and gameplay loop management.
- Rendering Pipeline: High-resolution shadow mapping, deferred rendering with G-buffers, post-processing filters, instanced rendering, and dynamic lighting.
- Procedural Generation: Library and boss room layouts generated algorithmically; spawn logic for enemies, keys, and spell collectibles; room connectivity rules enforced.
- Collision & Physics: Custom QuadTree spatial partitioning for environment/interaction optimization; occlusion-query-based camera collision/adjustment logic.
- AI Systems: Boss AI with multi-phase behaviors, projectile usage, AOE slam attacks, and minion summoning; per-enemy AI patterns.
- Animations & Models: FBX skeletal animation system, interactive world objects (doors, books), and Assimp-based model loading.
- Audio: MiniAudio integration for music, ambient sound, and event-triggered sound effects tied to gameplay events.
- Performance Optimizations: Frustum culling, instancing, spatial queries, and asset pooling to handle large procedurally generated levels efficiently.
Key Contributions
Game Engine Systems
- Procedural Level Generation: Designed and implemented library & boss room generation algorithms with scalable parameters, logical connectivity, and gameplay object placement.
- Custom QuadTree Collision System: Optimized spatial queries for player, camera, projectiles, and interactable objects.
- Camera Occlusion via Depth Queries: Smooth third-person camera adjustments using OpenGL occlusion queries to prevent clipping.