Flip Against the Frontier


Overview


  Flip Against the Frontier is an action-packed arcade pinball game where you play as a character inside the infamously difficult pinball machine, The Frontier. You must destroy enemies, build gizmos, and survive as long as possible to reach the highest score you can!

  This project was part of the 2023 Ubisoft Game Lab Competition in Montreal. We had a max of eight developers with ten weeks of production from the release of the theme, Arcade, and the mandate which required at least one gravity mechanic, one creation mechanic, and one destruction mechanic as well as a leaderboard. Our team consisted of three programmers, two artists, two designers, and one producer.

Programming Responsibilities

(Click to see more)


Gameplay

Diegetic UI

Graphics

Animation + Inverse Kinematics

Sound Implementation

VFX Creation + Implementation

Gameplay

  I created our custom movement system and abilities. Additionally, I made the majority of the machine components like the multiball, gizmos like the bomb copter and bumpers, and the flippers. I was also responsible for the slam tilt, one of our main mechanics as it fulfilled the mandate for gravity modulation.

  Of those, one of the features I am most proud of is the slam tilt. The early problem that we had to tackle was how to keep the player, ball, or other dynamic elements from clipping or coming off the ground when rotating the playing field. Before any code was written, I realized that rotating the playing field was not a viable option. I decided that it wasn't the playing field that needed to rotate, but the player and their surroundings. The environment, player, and camera are all rotated, just not the pinball machine. There were several times I even tricked myself into thinking the machine was tilted while playing!

Diegetic UI

  Something we knew from the beginning was that we wanted to have a lot of diegetic menus and UI. We had some UI elements in the HUD, but things like the menus and score were all placed on the machine in worldspace. We were very happy with the outcome.

  The menu system was a bit complicated due to all the moving parts. Since we used Cinemachine for our cameras, some of the heavy-lifting was done for us. I created a system that combined Unity's EventSystem and Cinemachine so the player could switch to separate menus in other parts of the machine. Some challenges were learning Cinemachine and dealing with difficulties that arose from Unity's Input System meshing with it's UI systems.

Graphics

  Most of the effects I did used ShaderGraph due to it's usefulness for rapid prototyping. I created many effects and helper shaders. One of my favorite shaders was the hex-shield. Shields are one of my favorite effects because they can be made so unique and configurable. You could make 20 shields and none of them would look the same. It goes a long way to replace an invisible wall with something more tangible. Since the environment of our game was more tech-based, it wasn't a stretch to incorporate shields. Plus I really like the hexagonal patterns. They're pretty satisfying. I wanted this shader to have a lot of options so that the designers and artists could tweak it if they wanted to.

  I helped to give the artists more options in their custom shaders by adding simple things like color and emission multipliers, but I also created effects like the blurring around the machine. It was a basic box blur that allowed artists to spend less time polishing assets outside of the machine (which were not our focus) and more time on the important features.

Blur

Animation + Inverse Kinematics

  Animations were at the forefront of our worries for a while. We knew players would notice if the player's feet didn't line up with the slanted surface. Once we had our model, I started with basic mixamo animations as placeholders so that the main implementation could be completed. I did all the logic then our character artist would take the mixamo animations and touch them up. I used Unity's IK system to make the character's shoes align with the surface they stood on and used Unity's avatar masks to manipulate the lower and upper halves of the character's body.

  After discussing it with my team, I convinced them to let me animate the pinball player as well. Due to my blur shader, our character artist was able to do a rush job on textures. I used a simple idle animation and combined it with IK on the hands and head. The hands grabbed the side of the machine while the head tracked the ball or the player (if there was no ball at any point). It was one of those smaller polish features that we didn't originally plan on, but the game wouldn't be the same without it.

"Pictured Above: animations and IK for the pinball machine player"

Sound Implementation

  Since there was not much time, I opted for a singleton pattern so accessing sounds was easy and designers only had to look in one place. I knew we would be sacrificing flexibility that would normally cost more time later, but I was confident the scope of our project did not require that flexibility and it would take too long. In fact, the pattern worked to our benefit later when we implemented a volume system and all sounds were channeled to one place.

  I created a tool to give designers as much control over each sound as possible. The sound system functioned on scriptable objects called SoundEffects.

  • Sounds triggered by events
  • Supports multiple clips per sound effect randomly selected
  • Pitch modulation
  • Base volume
  • Custom and preset volume falloff curves
Sound Effect

VFX Creation + Implementation

  I had a lot of fun making VFX on this project. We pivoted since artists still had a lot of work left. Since I was finishing my tasks fairly quickly, VFX became my stretch goals and I made them whenever I had time. I ended up making about half the VFX in the final build. It was the right choice because it came down to the wire to get them all in. I became very familiar with Unity's particle system, Visual Effect Graph, and Shadergraph from working on VFX. Once artists were able to work on the VFX, I had to turn my focus to implementing all of those VFX and fixing bugs.

  Some of my favorite effects I made were:

  • Enemy spawning
  • Impact lines when hitting the ball
  • Bat magnet pull
  • Magnet tower activation
  • Hologram UI buttons

  For the charged swing (at the request of designers) I combined a lot of visual and haptic effects like camera shake, controller rumble, impact lines on the edge of the screen, and freeze frame to make hitting the ball as satisfying and impactful as possible.

Tools


Unity

C#

Shadergraph

Visual Effect Graph

Reflection


  This project was a source of many sleepless nights for most of the team. In the span of 10 weeks, I contributed over 350 hours to the project on top of other classes, projects, and a job. Scoping was hard due to the time frame and the contraints we had to consider for the Ubisoft Game Lab Competition.

  We contextualized the gameplay as Flip, who is part of a family of tech geniuses, shrinking herself into the pinball machine to help her big brother get the high score on the infamously difficult pinball game, The Frontier. The enemies, known as drain dwellers, are the machine's anti-cheat system coming after Flip for cheating.

  Lots of features were added or overhauled partway through development. There was the magnet ability that charged the bat swing and attracted the ball for one. Even the tilting of the machine was redone halfway through the project to be more of an ultimate move. It was a lot of fun seeing those features change the game. A lot of them were so small that you would only notice them if they weren't there like animations on the pinball player.

  While we had a couple rough patches with communication at first, by the end of the project we were a cohesive unit. The experience creating this game while in Montreal is one I will never forget.