2nd year student at Breda University of Applied Sciences in Creative Media and Game Technologies.
💼 Open for a 6-12 month internship starting September 2025
January 26, 2024
A 3D endless runner using Bullet Physics and OpenGL on a Raspberry Pi
My Contributions: 3D Rendering using OpenGL | Raspberry Pi Cross-Platform Development | Physics System using Bullet
Engine/Tools: C++ | OpenGL ES | Bullet Physics
Team Size: Solo
Platforms: Windows | Linux
Duration: 8 Weeks (Nov 2023 - Jan 2024)
3D Endless Runner: Cross-Platform Development on Raspberry Pi is a custom-built 3D game designed to run seamlessly on both desktop PCs and Raspberry Pi 4. It showcases real-time rendering, physics simulation, and responsive input systems, all developed from the ground up using C++, OpenGL ES, and Bullet Physics. The game features an endless runner format with procedurally loaded environments, where the player navigates through a dynamic 3D world. The project demonstrates advanced technical implementation under constrained hardware conditions, highlighting modular engine design, performance optimization, and platform-agnostic development practices.
Key Features:
Challenges & Solutions:
Challenge: Understanding and managing library dependencies across different architectures (x86 on PC vs ARM on Pi).
Challenge: Ensuring the same code runs on both platforms.
Key Features:
Model
and Mesh
classes for loading .obj
files and associated textures.Challenges & Solutions:
Challenge: Rendering models efficiently on the Raspberry Pi, which has limited GPU power.
Challenge: Understanding how to build the model-view-projection pipeline from scratch.
Key Features:
.obj
mesh data into collision shapes.Challenges & Solutions:
Challenge: Bullet has no built-in event system for collisions.
Challenge: Connecting physics objects to render transforms.
GameObject
system to synchronize transform updates between physics and graphics pipelines.Key Features:
Challenges & Solutions:
Challenge: Debugging GLSL shaders on Raspberry Pi with no meaningful visual feedback.
Challenge: Understanding GPU pipeline and how to manage buffers and uniforms.
Key Features:
Challenges & Solutions:
Challenge: Adapting ImGui to work with a custom OpenGL context on Raspberry Pi.
Key Features:
Challenges & Solutions:
Challenge: Synchronizing input and camera controls while maintaining performance.
Key Features:
GameObject
system to handle rendering, physics, and updates in a unified way.GameManager
to orchestrate game loops, object spawning, and cleanup.Challenges & Solutions:
Challenge: Designing a clean architecture that is flexible yet efficient on constrained hardware.
Working on this project gave me hands-on experience with low-level systems programming, graphics pipeline architecture, and cross-platform development. I learned how to build a functioning 3D game engine from scratch, optimize for limited hardware, and troubleshoot complex integration issues across rendering and physics systems. It also improved my ability to debug, document, and structure code for maintainability—skills that are critical in both game development and embedded systems programming.