OOBC

Overengineered breakout game

Motivation

As a hobby and with a desire to learn and explore programming design, I developed a small Breakout game using Odin (C-like Language) and SDL in my free time. I intentionally over-engineered the project to more easily detect flaws in my design.

My goal was to create a flexible product that is easy to refactor and add features to while not compromising too much on performance by using a cache-friendly approach. However, because I was more interested in modularity, I didn’t focus much on performance. I deliberately avoided OOP to explore alternative modes of thought.

Description

  • ECS-like Architecture without any framework
  • Hierarchy (Tree-Like) Relation between Entity
  • True Separation between Geometry Intersection Algorithm and Physics Computation
    • Geometric Algorithm to Detect Collision, Intersection, and Compute Centroid for a small set of “Geometry”.
    • “Advanced” Physic Sim (Based on my old Physic Engine)
      • Multiples Integrators: RK4, Explicit Euler, Semi-Implicit Euler
      • Contact Resolution in two steps: Position-Based Solver & Velocity-Based Solver (Inspired of Box2D)
  • Text/Font support
  • Affine Transform Matrix

Credits/Resources

source

The contact resolution solver was inspired by Box2D works.