Fuzzy2D Game Engine

Project Length: 4 Months

Team Size: 1

Languages: C++

Tools: Visual Studio, SDL 2.0, GitHub, and GitKraken

Downloads: GitHub Repo

Description: A C++ 2D Game Engine built off of the SDL 2.0 framework. Fuzzy2D supports essential and customizable game systems, including Physics, Animation, Input, Sound, Camera, and Scene Management. 

Highlights: 

  • Programmed entirely in C++.

  • Organized with industry-standard design patterns as described in Robert Nystrom's Game Programming Patterns book.

  • Implemented the physics system with a "Test Driven Design" approach resulting in over 100 physics specific unit tests.

  • Improved performance of collision detection x40.

  • Made my own game with the engine (Particle Shooter).

The physics system challenged my vector math, Newtonian physics, geometry, design pattern, performance profiling, optimization, and unit testing skills-  culminating in nearly two months of work. The result is a flexible and performant system to handle three core physics domains: Movement, Collision Detection, and Collision Response.

Pictured to the right is an example of the physics system in action. By adjusting a  rigidbody's elasticity coefficient, Fuzzy2D allows users to determine how much momentum is preserved upon collision.

 

Fuzzy2D Elasticity.gif
Fuzzy2D Physics Performance.gif

Performance proved to be a key issue with physics as my initial implementation struggled to handle more than ~200 collision-ready objects in a level simultaneously. After identifying the critical bottlenecks with Visual Studio's profiling tools, I was able to vastly improve the engine's performance by more than 40 times its original speed.

Changes which helped make this possible include:

  • Optimizing cache hits

  • Implementing spatial partitioning

  • Using dirty flags

  • Limiting square root calls

  • Switching to less intensive collision detection when applicable

 

Particle Shooter

Description: Once Fuzzy2D was in a usable state, I was excited to put the engine to the test by building a classic 2D "shump" inspired by the likes of Geometry Wars and Graceful Explosion Machine

Project Length: 1.5 Months

Team Size: 1

Languages: C++

Tools: Visual Studio, SDL 2.0, Tiled Level Editor, GitHub, GitKraken, and Adobe Illustrator

Attributions: Music by Josh Penn-Pierson. Sounds purchased off of the Unity and Itchi.io asset stores.

Downloads: Windows 64-bit ExecutableGitHub Repo

Particle Shooter Tiled Map.png

Highlights: 

  • Programmed entirely in C++ and built with my own custom game engine (Fuzzy2D).

  • Curated a composition based enemy behavioral system to allow for new enemy creation with minimal code change.

  • Leveraged the Flyweight and Prototype design patterns to minimize texture loading times and increase game object initialization performance.

  • Handled all game design and art tasks for the enemies, player, and world.

  • Allowed for new level designs to be created with no code changes via the Tiled Level Editor.