← Back to Projects
Arkanoid Game Clone
My first game project, built in C++ and SFML as a recreation of the classic Arkanoid arcade game.
Gallery
Overview
This is the first game I ever built: a solo recreation of the 1986 arcade classic in C++17 and SFML, no engine. Writing the core systems from scratch, scenes, collisions, resources and UI, was exactly the point.
Technical Highlights
- Collision without tunnelling. Ball-versus-brick uses AABB penetration depth to decide which face was hit, pushes the ball out of the collider, then applies the reflection formula
r = d - 2(d·n)n, so the ball never oscillates through a thin brick across frames. SeeBall.cpp. - Hand-written scene management. A
SceneManagerowns the active scene and forwards updates; the menu, game, level-selector and tutorial scenes derive from a common base and manage their own lifecycle. SeeSceneManager.h. - Templated resource cache. A generic
Resource<T>lazily loads textures, fonts and sounds from disk and caches them asshared_ptr, so all three asset types share one implementation. SeeResources.h. - Arcade-accurate paddle. The bat is split into seven zones, each returning its own reflection vector, reproducing the original’s angle steering rather than a plain surface-normal bounce. See
VausPart.h. - Data-driven levels. All 33 stages are flat 13x25 text grids validated with
std::regexon load, where single characters map to brick types, so levels can be edited without touching code. See the stage files. - Power-ups and scaling difficulty. Extra life, multi-ball and slow-down drop on a weighted roll, and silver bricks scale their hit points with the stage number. See
PowerUp.h.
Learnings
As my first game, it taught me how the loop, rendering, input, collisions and object-oriented structure actually fit together. That foundation is the thing everything I have built since stands on.