PRIZE FIGHTER
Prize Pool Productions
An in-game screenshot of Stage 1: Coin Pusher.
-
In the 3D action platformer Prize Fighter, you play as Hexdog, a newly sentient toy robot dog. Upon awakening, you spot the distressed Minako from afar, and vow to save her from the malevolent maw of The Claw. Move through multiple arcade machines to train up, collect stickers for the gallery, and buy skins so that you'll be ready to take on The Claw and free Minako!
-
GAME GENRE: 3D Action Platformer
ENGINE: Unity 2022.3.1f1
PLATFORM: PC (Itch.io)
TEAM SIZE: 8 Members
DURATION: 10 Weeks
ROLE(S): Combat Designer and Movement Programmer
-
Prize Fighter is on Itch.io as of April 29th, 2024!
PLAY IT HERE: https://chellerad.itch.io/prize-fighter
-
Implementation of the grounded and aerial movement and attack functions the player utilizes
Establishment of a checkpoint system to respawn a player once they collide with lethal physics materials
Implementation of the attack and behavior patterns of all enemies and the three-phase final boss battle
Development of state machine logic to dictate how HexDog controls and animates based on player input
CODE SNIPPETS
HexDog’s Punches - Prize Fighter
METHODS AND REASONINGS
Gravity Manipulation vs. Downward Forces
When implementing the Dive Punch attack for HexDog, there are many methods that could have been applied to increase the player’s downward velocity. In lieu of adding a downward force to the player, I chose to focus on increasing the effects of gravity on the player throughout the Dive Punch sequence. The reason I chose this was because I felt preparing the player for faster vertical motion was important to allow the player to maintain a sense of control at each segment of the punch.
For example, when the Dive Punch is called, the player hovers in place for a brief moment as they prepare the punch. This is common in 3D platformer titles that utilize ground pounds as player techniques. Setting the scale of gravity on the player to 0 was a method I felt allowed for better control preservation. By reducing the player’s movement speed and rendering them unaffected by the forces of gravity in the moment, it allowed HexDog to make micro-adjustments in horizontal position before descending down to its target. Without using gravity, the player would need a force pushing them up to keep them afloat, which could function like a triple jump and break the level design if implemented incorrectly.
Respawning and Enemy Nonlethality
When producing Prize Fighter, our team decided quickly that very few enemies in the game would be able to force HexDog to respawn. The more present danger would be the existence of a lethal collision layer that would force a respawn for the player when they collided with it. This would make the platforming challenges more inviting and fair for players, as being punished during intense segments of environmental interaction through improper enemy handling would feel too cruel. A major example is the Pachinko level; with an onslaught of balls raining down at set intervals that threatens to sweep the player down to the bottom layers, it would feel unfair to deal with enemies forcing respawns on collision as well. Thus, we elected to have enemy collisions bump HexDog away. Granted, this still has the potential to be lethal if HexDog is pushed off of an edge and cannot make it back to safety, so there is still a degree of risk to charging at enemies with reckless abandon.
Claw Machine Behavior Patterns
The Claw Machine’s behavior patterns were established to be the most imposing threat to HexDog possible. While every other enemy only nudges HexDog away, the Claw Machine is the only enemy who can outright force a respawn if the player collides with it. Not only did this level of challenge seem thematic and appropriate for a final boss encounter, it also gave a sense of dread looming over the player, threatening them with starting the current phase over again if they played too recklessly.
When holograms are spawned to distract the Claw Machine, their velocity component is increased. This allows players to have less downtime when waiting for the boss to make itself susceptible to attacks.
Key Takeaways
Prize Fighter was my first-ever 3D platformer built in Unity. While helping to produce this game, I learned several things about producing this type of game with teammates.
Firstly, I learned the proper workflow for creating attack functions in a 3D space. This includes the creation of 3D hitboxes that conform to the player character’s animation tree. I also learned how to differentiate attack properties depending on the character’s state. This was used to help define the Grounded Punch and Dive Punch as two separate functions. This process also involved the creation of a custom C# script to increase the gravity scale of the player, as Unity’s 3D rigidbodies operate under different physics than Unity’s 2D rigidbodies. Working with the art team helped me to understand the best way to set up animation state machine logic. It helped me settle into the role of being a combat designer and affirmed this is the path I want to take in life.
Secondly, I learned that starting with simple proxies is a valid approach to making fun-feeling systems. For a long time, the model of HexDog was not considered ready for use. Until it was, I created a proxy character out of primitive cubes and attached the movement scripts to it. I was worried that the size and movement of the proxy character would not translate well to the final character model, but we built the scripts we wrote to accommodate differences in dimensions. Eventually, when HexDog’s model was finally ready, everything translated with much less hassle than I dreaded it might.
Thirdly, I learned that systems that were too scary for me to comprehend at the time could have been used to great effect if I let go of my own biases. When developing this game, I found the idea of NavMesh implementation for enemies too daunting, foregoing it in favor of controlling enemy movement between two different colliders attached to it that it would lerp its position between. This only worked to a degree due to specific float-point comparisons, but I felt so overwhelmed by the alternative that I did not consider working with it for very long. I could have expanded my knowledge on a skill I went on to develop in favor of a less effective result. If I were to recreate this game now, I would focus a lot more of my time on setting up a system that uses NavMesh effectively.
Fourthly, I learned how to allocate time to a platforming-based boss encounter. The Claw Machine was the culmination of everything I have learned to do through this project as I created a robust state machine for The Claw’s behaviors. This includes the proper calls for it to move between defined targets, descend, attack, and retract before setting the next target to move towards. The state machine script also included logic for it to become distracted by holograms to ignore its pre-established targets and attack a new target. From there, it would enter a state to become stuck, allowing the player to damage it. Creating this step-by-step process helped me get the boss battle logic done in much less time than I anticipated, and I was able to impress both my team and myself with how much I was capable of.
Prize Fighter has been released to Itch.io as of April 29th, 2024.
To be brought to its webpage, click here!