The initial pitch for Ponk involved creating a game like pong, which could be played on an arcade machine. This idea was kept throughout development of the game, using a minimal number of buttons to perform actions, and trying to keep the learning curve to a minimum as much as possible.
The basic controls for gameplay involve three things: Movement, Dashing, and Grabbing
Movement works by pointing the joystick towards where you want to be if you imagine the joystick as the arena. To elaborate, it takes your joystick input and gets the dot product between that and the player's position, rotated 90 degrees which results in an input of 0 if the joystick points in the direction of the player, -1 clockwise, and 1 counter-clockwise, which is then used to determine a new rotation around the circle and moving to it.
Dashing takes the dot product calculated in normal movement and uses it to choose a direction to dash in when the player presses the dash button (Bumper Buttons / L1 or R1). The distance covered by a dash and the time it takes are set by designers, but the distance is representative of a percentage of your player's area, meaning it scales with the number of players in the game.
Grabbing may sound self-explanatory at first, however it is also tied into a second ability called Hitting. When a player grabs the ball by holding the Grab button (Triggers / L2 or R2), they may only hold the ball for a short period of time, after which the ball will be forcefully released and fired directly in front of the player at the speed the ball normally travels at. If the Grab button is released before the grab ends, some extra speed is added to the ball, and it goes more towards the direction it would have bounced off the player in, including the direction the player moving in. Inherently, this means that timing when you grab and release the ball well results in faster and faster gameplay until either one player misses the ball, or decides to slow it down by holding it for longer.
Combining these three mechanics enables fast-paced gameplay that only uses 3 inputs at its core, making it easy to learn, while experienced players can still have short and much faster-paced rounds.
Collisions use a system detached from unity to give greater customization to developers.
The collision system supports two shapes: circles and convex hulls. Though the supported shapes are few, the reason for making a custom system dedicated to collisions is because it enabled both full control over when collision checks happen relative to other parts of our scripts, and fully controlling the outcome of both the position and final calculated velocity of each involved object, resulting in the ability to have collisions with a depenatrion step happening in one direction, while force resolution occurs in a different direction, while also having the ability to perform additional actions before and after collisions. Using the additional control this system brings, an extra mechanic was added to move the force resolution direction towards the direction the player moves was also implemented.
This system can easily feel unnatural for players, however playtesting revealed that it generally felt better to have some degree of this mechanic involved rather than not.
One philosophy of Ponk is that everything should look as if it flows into the next thing. This can be noticed in both the UI and in gameplay, where the UI has the same base, with only the details changing, while gameplay has every part moving, from the arena when a player is eliminated to the health blips when a player is hurt.
Most parts of the game can be controlled by variables, all accessible within the unity editor, and with some available for players to modify by using the in-game menus. Because many of these variables can be reflected real time, the Morph mechanic largely just changes those and has a timer to change them back.
Credits
Designers
El Perrin
Jacklyn Kollie
Jett Sacco
Tyler Leditshke
Programmers
Alex Giglia
Finn Davis
Artists
Brandon Clark
Daniyal Umar
Dom Nigro
Hamish Jeffery
Jordan Duverge