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.
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 Executable / GitHub Repo
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.