Skip to main content

Pinball Purgatory

Unity Engine | C# & Photoshop | First Game Project | Released on Itch.io

About The Game

Pinball Purgatory is a pinball/pachinko-style arcade game developed as a course project at NC State. As my first-ever game, it was a foundational learning experience where I tackled the core mechanics of a physics-based game, from ball launchers and flippers to interactive table elements.


Media Showcase

The main game board for Pinball Purgatory, showing the various bumpers, flippers, and the portal system I implemented.
The main game board for Pinball Purgatory, showing the various bumpers, flippers, and the portal system I implemented.
The main game board for Pinball Purgatory, showing the various bumpers, flippers, and the portal system I implemented.

My Role & Technical Contributions

As the primary developer, my focus was on the core gameplay programming and level design.

  • Game Mechanics & Scripting: I scripted all the primary game systems in C#. This included the spring-loaded ball launcher, the three player-controlled paddles, and a portal system that teleports the ball between different points on the board. My work was centered on ensuring all these independent systems worked together cohesively to create a functional game loop.

  • Physics & Colliders: I designed the layout of the pinball machine and was responsible for setting up the physics interactions. This involved carefully selecting and configuring the appropriate 2D colliders for dozens of objects to ensure the ball behaved realistically when hitting bumpers, walls, and flippers.

  • Asset Creation: I used Adobe Photoshop to create the necessary 2D assets for the game, giving me my first practical experience in an art-to-engine pipeline.

Lessons Learned & Future Improvements

This being my first project, it provided invaluable lessons in game development best practices and pitfalls.

  • Foundational Skills: I gained a solid understanding of Unity's 2D physics and collider system and learned how to create my own simple art assets. This project made me comfortable with the entire process of taking an idea and turning it into a playable experience.

  • Code Architecture: I learned a critical lesson in software architecture. I initially attached the score variable directly to the player object, which is not a scalable or robust solution. In the future, I would implement a dedicated, static GameManager to handle global state like score, which is a much cleaner and more common practice.

  • Input Handling: A key area for improvement is the input delay. There is a noticeable lag between a key press and the flipper activation. I would need to revisit the input system, likely moving from Update to FixedUpdate for physics-related actions or using Unity's newer Input System package to ensure the gameplay feels smooth and responsive.