top of page

ABOUT

'Of Mice and Mech' was developed by a 2 person team (Me and a friend) and was a winning entry for Mouse Jam 2023; a game jam event held during August and early September. Mouse Jam consisted of a development period of about a month, a week-long submission window, a week-long voting period (only available to participants), and finally a livestream where the top 20 community-voted games would be played on stream by the popular Twitch streamer Ironmouse, where she'd choose her 5 favourite games to win.

She starts the game at the 3:32:30 mark

The finished result was a mech-based platform focused on the concept of switching between a powerful but weighty mech, and a weaker pilot who would die in 1 hit. The two playstyles would be able to reach sections of a level the other could not, and players would have to use both to overcome little puzzles and platforming segments (using the smaller pilot to crawl through a small space to open a door for the mech). I was responsible for all the artwork, particles, and around half of the code, whilst my friend handled all the audio, bugtesting and the other half of the code.

CONCEPT

The game began development around the middle-end of August when we were discussing concepts for an original game project, which we would create a scaled-down version of for the jam. The first talking points began with my friend really wanting to develop a platformer with some form of procedural animation.

Concept1

The first concepts included ideas such as being able to angle a sword with the right control stick, and a mech with destructible/swappable body parts that react to the environment. While interesting ideas, I felt these were either a little out of our expertise for the game jam, or wouldn't act as an engaging enough hook for players.

Splitting off of the idea of using a mech, we became keen on the idea of a platformer with an unconventional health system; where the mech would be destroyed after several hits and the pilot would die in one. From here, we extrapolated this into developing the core gameplay mechanic of synergizing between pilot and mech, and instead of focusing on procedural animations, we instead focused on the duality of these two playstyles. This idea was also much easier to fit to the theme of the jam.

DEVELOPMENT

Although we had started relatively late in the development segment of the game jam, we did still have around 2 weeks to create our submission. As such we had plenty of time to create and polish elements of the game that usually get taken for granted, like movement, sounds and effects. While these may be overlooked in some projects, particularly shorter game jams, getting these right can make a world of difference for the player. These elements, combined with our core mechanics, framed our priorities, and also the order features were developed.

Movement

Movement is the most crucial part of any platformer, not just in terms of how it functions, but how it feels. This was of course the first place to start our development, and it took over a weekend to create a movement system that felt fun to play with on its own. Prior to the jam, I had experimented with Godot on creating a platformer, so having carried over the techniques and code base helped to save a lot of time. Examples of such techniques used in the movement include:

  • Coyote time: A small window after the player runs off a ledge where they are still permitted to jump. This helps prevent needing pixel-perfect timing for tricky jumps.
    ​

  • Jump Buffer: A millisecond buffer that when the player inputs a jump, they will jump as soon as the touch the ground. Helps the player react with their jumps better and not have to rely on frame-perfect timing when hitting the ground.
     

  • Screen Shake: For a majority of the mech movement, we implemented a subtle screen shake whenever you run or land in order to sell the weight of the machine. It also gives the player additional feedback on their actions.
     

  • Particles: These were added to both the pilot and the mech for jumping, landing and running in the mech. Despite being a subtle addition, just like the screen shake it adds extra feedback for player actions, and makes the character feel more tangible and grounded in the world.

​

  • Sound Effects: An often overlooked element of game design. Sound effects were the final piece of the puzzle needed to bring the character to life. The simple act of jumping in a platformer without any sound comes off as lifeless, and adding a very faint audio cue to it can do wonders to your game.

While the pilot movement was kept simple, having precise and tight controls (albeit also having the ability to crawl and climb ladders), the mech was a different story. Firstly, being able to instantly jump in a mech that's ten times the size and weight of the pilot doesn't make much sense, so we added a subtle "charge" to the jump: the longer you charge the higher you will jump (with a set min jump height for convenience). This unintentionally led us to sliding around as the mech while charging a jump, but we found that it was quite fun to transfer your momentum while jumping, and adjusted it into a feature of the movement.

Combat

While I had initially had wanted to do something interesting with the combat or give it significant depth, I feel it was for the best to have kept it simple. An example of this was giving an in-air attack, but cutting it likely saved a lot of time on spriting, coding and bugtesting it.

In the end, we settled on a singular 3-hit combo punching attack, with each punch in the combo being slower, harder hitting, and deal more knockback. This adds a minor touch of variety to the combat while not going overboard with the scope of the game.

Having learnt how useful buffering inputs is from the movement, I implemented this into the combo system, such as continuing the combo should the player input their 2nd/3rd punch a few frames after the animation ends. Adding some screen shake and hit effects to this also makes the player's (and enemy's) hits land with more impact. Despite this, the punching did still come with some challenges, even in the final game (e.g hitting enemies more than once in a single punch sometimes).

Fodder
Manletaur
Peeper

On the topic of enemies, we had always intended at least 3 different enemies, and for them to only do damage from their attacks (as opposed to contact damage like is commonly done in platformers). The first enemy is named "Fodder", a small red imp in a shirt who runs up to the player and swipes. Then there's "Manletaur", a larger minotaur enemy who has an axe that leaves an AoE on where it strikes. And lastly "Peeper", who flies around and fires a projectile towards the player.

Creating the AI, whilst integrating them with the combat system, was a big task. Not only that, but balancing them to be fun to fight against was also tricky- "Peeper" is a particular case where I feel that we could've made easier, as players struggled hitting them while inside the mech.

Level Design

Admittedly, level design was something I was worried about tackling, as most of my jam projects thus far have been arcade-styled. Thankfully, this ended up being one of the most fun parts of the project, as the first level especially was all about teaching the player how to use the game mechanics whilst also gradually increasing the challenge over time. It was also fun to utilize interactables and level items in different and creative ways, especially with the duality of pilot and mech.

The interactables and level items were the starting point, concepting and developing various ways the mech and pilot could play with the game world, then the levels were built around them. There were a few exceptions to this, as there were times that the toolkit felt unvaried, or there was a minor limitation holding back a fun design idea. That was why I added the fireball trap, to keep the player on their toes from a moving threat and add more risk in certain pilot segments.

Each level took around a day or two to design, adjust and decorate.

Other

2 ideas I was eager to add into the game since the start of the jam, was a boss fight, and crane game/gacha mechanics. So I combined them both into a fight where the boss would routinely spawn either a red, blue or green capsule, with the player expected to punch the blue capsule back in order to deal damage. While this fight does incorporate RNG, I made sure that the boss will always deploy a blue capsule after a certain number of capsules as a failsafe.

​Despite this, there were times where the boss felt either the right amount of challenge, or incredibly difficult due to which enemies the green capsules would spawn. I feel this was due to the fact that the Manletaur enemy takes too much attention from the fight because of their health pool, and the Peepers were too difficult to hit but also too dangerous to leave alive. Additionally, the blue capsule would not get hit back if it hits the player's hurtbox at the same time as punching it, in retrospect, I should've made the blue capsule not be able to hurt the player at all.
 

Dialogue

One of the last things implemented was the dialogue system, initially I intended to add the Dialogic 2 plug-in as it has an MIT license and would save time making one from scratch. Unfortunately, Dialogic 2 is still in alpha, and was too unstable to risk for the project in the time we had remaining; instead I made a very simple system myself. Only requiring a small portrait and a text message, this system wasn't too hard to implement, but lacked the polish that we could've had from the plug-in.

As for cut mechanics and content, we initially toyed with repair kits, hurting enemies with self-destruct, and being knocked out of your mech if the pilot got hit directly. Repair kits became obsolete with the self-destruct and resummon system that we did add to the game (used to solve puzzles, prevent soft locks, and make a new mech for the player), though it doesn't hurt enemies or the player. Also, there does exist a hurtbox for the pilot while they're riding the mech, but we scrapped the idea of being able to get instantly hit out of the vehicle, due to it seeming unfair and hard to balance.

CONCLUSION

Praised for its visuals and polish, the game was well received by the other entrants, and placed 2nd within community ranking. Furthermore, it was played on stream by Ironmouse in front of a large audience, and was selected as part of her top 5 to win. I am incredibly proud at how this came out, and grateful for all the positive comments and constructive feedback I received from the community. A few critiques consisted of a few parts being too difficult (namely the boss, Peeper enemies and moving platforms), the white pressure plate confusing players, and no fullscreen. After playing the other jam entries, I came to realise that our game would've also benefitted with a volume control. Watching Ironmouse play our game also helped to give us valuable feedback.

To summarize, I feel this project far exceeded my own expectations: This was my first proper attempt at a game with pixel art (as opposed to hand-drawn) and level designing, and I'm surprised at how well they came out. Even with the few rough spots, the majority of players were able to beat it and enjoy their time, and I was over the moon to discover we made it in the top 5 twice. This was a valuable learning experience for me and my team, and I hope to be able to use this to help improve my projects going forward.

Ending_Image.png
bottom of page