← Back to Projects
Arkanoid Game Clone
Click to expand
Jun 2022 1 person

Arkanoid Game Clone

My first game project, built in C++ and SFML as a recreation of the classic Arkanoid arcade game.

C++

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. See Ball.cpp.
  • Hand-written scene management. A SceneManager owns the active scene and forwards updates; the menu, game, level-selector and tutorial scenes derive from a common base and manage their own lifecycle. See SceneManager.h.
  • Templated resource cache. A generic Resource<T> lazily loads textures, fonts and sounds from disk and caches them as shared_ptr, so all three asset types share one implementation. See Resources.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::regex on 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.