Pinball Escape

Game Description:

Pinball Escape is a reaction based physics game that channels classic arcade pinball.

The art style invokes a feeling of classic sci-fi fitted to a classic pinball table. The game levels are small spaces filled with bouncy objects such as angular slingshots and round bumpers. The ball is drawn by gravity to the bottom of the level, much as classic pinball. Unlike classic pinball, the ball cannot escape the level and the player interacts with the ball by drawing trampolines across the play space rather than flicking flippers.

The game is ten levels long with the first level being a tutorial. The player progresses through the levels by navigating the ball into the end portal. The end portal is hidden behind the purple exit door which is unlocked by bouncing into and lighting up purple bumpers within each level. More advanced levels also contain orange doors and bumpers which act as intermediate goals for the player.

Screen Shots:

Development Info:

Engine: Unity

Language: C#

Platform: Android tablet

Role: Lead Programmer

Team Size: 4

Download PinballEscape_Lauch.apk

Github repo

Responsibilities:

  • Programming for trampoline. Including logic for the trampoline bouncing the ball, stretching, fading.
  • Exposing major game variables to the level designers. Gravity, bounciness, camera setting etc.
  • UI Programming. Including scene management, menus, score and victory screens.
  • Programming for tutorials.
  • Programming for juice and conveyance, including glow effects, animations for bumper, trampoline, door and particles.

Select Features:

Trampoline Effects

  • If the Trampoline is hit by the ball, it will enlarge, glow and emit particles before disappearing.

Bumper Effects

  • When bumpers are hit, they enlarge, glow and emit particles.
  • The number of particles is scaled to reflect the score that the bumper awards
  • The particles burst out from the center of the bumper and pause for a moment before flying towards their destination.
  • If it is the first time hitting an orange or purple bumper, the particles will fly towards a door light of the same color.
  • If it is a blue bumper being hit, or the door has already been unlocked, the particles fly towards the score counter.
  • Slingshots will emit similar particles to the blue bumper particles on hit.

Door Unlock Animation

  • When the purple doors are unlocked (all lights have been lit) the following animation sequence is played:
    • The screen fades to black, except for the ball, the purple door and the door lights. The speed of the game also slows overtime to a complete stop.
    • The door lights flash in sequence with increasing frequency.
    • The door slides open and fades away.
    • The screen fades back to normal and is unpaused.

Postmortem

What Went Well

  • Writing code that integrated well with Unity physics. I have had some previous experience in this area, so I know that there are many hidden “features” to the Unity physics system that have caused problems for me in the past. I carefully avoided these, and no major problems were encountered.
  • Doing an action over time in games can get very messy if implemented poorly. The effects for particles and door animations were smooth and bug free. I did not have access to a tween system (the project requirements prohibited us from using third party plugins) , which is what I would have used, but previous experience with tween systems helped me to think in an efficient manner to complete these tasks.
  • I exposed key parameters of major game systems in the editor and in prototypes to the level designers. This allowed them to focus on the design process, and allowed me to focus on making the game systems.

What Went Wrong

  • Code for the prototypes was not clean as I wanted it to be. I thought that it would be throw away code, but instead much of it found it’s way to the final game. This caused maintainability issues down the road. Should have refactored early on.
  • Since the requirements for the game changed a lot during early sprints, it was impossible to design the architecture of the code at the start. This meant the architecture evolved into a messy ball. The messy architecture made it hard to extend and debug. I should have spent some time redesigning the architecture before Alpha and refactor the code. This would have saved time in the long run.
  • Using the Unity time manager for the pause menu had various unanticipated bugs. Should have written a custom class/wrapper for the time manager.

What I Learned

  • Iteration is key. I learned in a early milestone that baking lights is time-consuming and slows iteration time. With a long iteration time, there was less time for testing, and thus more bugs and less fun in the game. A fun playable game is more important than fancy lighting / graphics.
  • Don’t be lazy and go for the fast but wrong way of doing things because it will come back to bite you.
  • Scrumming was excellent for keeping me on schedule, something that I have always struggled in the past.