"Miss. Input" is a game I developed for a 1 week game jam with the main theme being "Perseverance". I came up with the idea for a regular side scroller game with a catch: each time you play, all the inputs to control the character are deliberately randomly selected, so each action your character performs is assigned ANY random key on your keyboard or mouse, making the game's challenge the controls themselves. The point of the game is to be a rage platformer, where you will need to PERSEVERE through a control scheme that is working against you.
All 3D models and animations were NOT made by me, they were Unity asset store downloads. The base of the character controller was also downloaded from the asset store, but was heavily modified by me.
Engine: Unity URP 2019 LTS.
Release: A full release was made on Itch.io, and you can play it here for free.
Production Period: Made in a week for a game jam in 2021.
Notable Features:
Programming: Using C# through Visual Studio, I modified a preexisting rigidbody based character controller, so that it would randomly select input keys to control the main character. I also created a basic AI for enemies to follow and attack the player on proximity.
Animating: The animations themselves were not created by me, but I implemented them into the game by creating a state based animation tree for the main character and the enemies.
Below I'll go into detail about the 2 main areas of this project which I find worth discussing further (lots of text incoming!):
The character movement script is nothing special overall, a very simple rigidbody based character controller that I downloaded from the asset store. The thing that makes it unique, and the whole point of the game, the keys to control the character randomize each time you play.
I created an array of InputKeys called Key Array, which is a Unity default enum that determines the keycode for each possible input button you could press on you device to give Unity a trigger. This includes both the mouse and keyboard.
This array was then filled with every single possible button that I would like the game to potentially choose from as an input for the player (yes, I unfortunately had to MANUALLY pick every single input in the array).
Upon starting up a new game, the script will choose 5 different Ints at random (seen on the bottom of the image), one for each input the player can have, for Walking Right, Walking Left, Jumping, etc. It will then use each of those ints to select a corresponding item in the Key Array to be the key the player must press to trigger this specific action. That's all really!
In retrospect, there are better ways to make this work with less manual input and more efficiently, but for the purposes of a game jam, this approach worked very well!
The second thing I think was a win in this project was that it was my first opportunity to integrate an IK Rig of a character with Unity's animation tree, as seen above.
Note how the above tree's shape mirrors between the right and left. Unsurprisingly, this is because the left animation states represent the left facing animations of the character, whereas the right side represents the right animations. Since those two sides are identical, the transitions on the right side and the left are all the exact same, hence the symmetry.
I know it is definitely not pretty, and looks like spaghetti nodes, but for a first time trying it, especially in the context of a game jam, it worked absolutely perfectly, the character animation transitions all work without a hitch. This was highly educational for me and I now know how to make animation trees infinitely better as a result.