Kickochet: An action game where you kick a shuriken off walls.
After “winning” the 2019 GMTK Game Jam (Listed first in the announcement video with 2 million views, and voted #4 by the community), we decided strike while the iron was hot and put another 1000 hours of dev into Kickochet.
Team
Casey (me): Technical Game Design
Mark: Gameplay Art
John: Character Animation
Collin: Cutscene Illustration
Justin: Music and Sound
Misc Programming: Dano
Nikko: Logo
Additional Level Design: Chris
Engine: Unity
Project Length: 7 months
Cutscene
Reflection Forecast
One of my philosophies in game design is that in order for a player to feel the fantasy of the role they inhabit, they need to absorb all the skills of their character immediately upon first play.
In order to help the player feel more like a ninja, there needed to be a system to forecast the trajectory of the shuriken off the walls. Kind of like if you could visualize the world like you were Revolver Ocelot from the MGS series.
This was achieved by sending a raycast out in advance, collecting all the points it would hit (up to a reasonable maximum amount) and then drawing line renders between them all.
The gif shows the forecast points turns way up for debug purposes. I must admit, this was a moment of great celebration.
Ricochet
I had to write a looooot of code to help protect the richocheting shuriken from getting stuck or passing through a wall. This generally happens when a lot of small things happen within a single frame that contradict one another.
My solution was to take a look at all of the collisions points that occured in the single frame, pull back away from the wall, and find a balanced center to calculate as the collision point. If all else failed, I would just send the shuriken off in a random direction.
Every time I would update the collision code, I would run a simulation of 1000 shurikens bouncing for an hour and if I caught a shuriken escaping somehow, I’d analyze what happened, add more protection, and start the simulation again.
Controlling the Ninja
The ninja’s kick is stronger based on how close their center is to the center of the shuriken, this adds an extra level of skill to the controls.
The controls also were set up to detect if you were using a mouse and keyboard or a controller (or both) and switch to that control scheme. You can move with the controller and kick with the mouse if you want.
The kick only happens if you release the button. If you hold the button down, you will either pull the shuriken closer to you if you’re too far from it, or if you’re in range, you’ll enter forecast mode.
Pulling the Shuriken
One of the game design flaws of your only weapon being something you kick around a room is that if it gets too far away, you start to get bored. The solution was if you hold the kick button when the shuriken is far, the ninja will pull it towards them.
This alters the speed and direction of the shuriken, so I set up an easing transition out of where the shuriken was previously headed and the direction of the ninja. This prevents it from feeling like the shuriken can just instantly swap directions and feels much more natural.
Game Jam Making-Of Article
After the jam we were so proud of the community response that I made an article describing the process during the game jam. A lot of my game jam philosophies and tips and tricks are contained in that article.
https://caseyweeks.medium.com/the-making-of-kickochet-a-gmtk2019-jam-game-f4931c670b32