A procedurally generated 3D exploration game built in C++ using OpenGL 4.6, featuring dynamic terrain, real-time lighting, HDR rendering, and a complete gameplay loop based around exploration and coin collection.
Island Explorer is a first-person exploration game built from the ground up using OpenGL and C++, combining gameplay systems with a fully featured real-time rendering pipeline. The project focuses on procedural terrain generation, dynamic environmental systems such as a day-night cycle and water simulation, and integrating these with player interaction and game progression mechanics. The result is a complete, interactive experience that demonstrates both gameplay programming and advanced graphics techniques working together in a cohesive system.
Implemented core gameplay mechanics including player movement, jumping, sprinting, and camera control within a first-person environment. A coin collection system drives the gameplay loop, with proximity-based interaction, cooldown handling, and a completion state once all objectives are met.
Developed a procedural terrain system using multi-layered noise functions to generate natural island formations. The terrain includes biome blending between plains and mountainous regions, as well as a central lake formed through controlled height depression and smooth falloff.
Built a full HDR rendering pipeline using OpenGL:
This pipeline allows realistic lighting intensity while supporting stylised visual effects.
Implemented a Blinn-Phong lighting model using a half-vector approach for efficient specular highlights. Normal mapping is applied using a TBN matrix to transform tangent-space normals into world space, improving surface detail without increasing geometry complexity.
Developed a dynamic water system using time-based sine wave functions to simulate surface motion. The shader includes Fresnel-based reflection, specular highlights, and transparency for a more realistic appearance.
Implemented a fully dynamic day-night cycle with a 30-second loop. Light direction, intensity, and colour temperature are updated each frame, creating smooth transitions between daylight and nighttime environments.
Implemented multiple post-processing effects:
These effects are applied in a multi-pass pipeline and combined in a final composition stage.
The project is structured using modular systems separating gameplay logic, rendering, terrain generation, and UI. This allows systems to be developed independently while maintaining a clean and scalable architecture.
One of the main challenges was managing the complexity of the rendering pipeline, particularly coordinating multiple framebuffer passes and ensuring correct ordering of effects. Another challenge was achieving natural-looking terrain while maintaining performance, requiring careful tuning of noise functions and chunk management. Integrating multiple systems such as terrain, lighting, and gameplay into a cohesive experience also required careful design and debugging.
This project strengthened my understanding of:
It also improved my ability to balance performance, visual quality, and gameplay functionality in a real-time application.