Iffy Institute

Iffy Institute

Iffy Institute

Iffy Institute is a fast-paced maze action game for 2-4 players, in which the five most high-profile lab animals fight for survival in a mad scientists lab. Players build explosion chains with powerful directional bombs and roast your enemies with super-mighty special attacks.

Trailer

Goals

With Iffy Institute, we tried to evolve the classic Bomberman formula and bring back some of that good old competitive couch gameplay. We've created a charming range of animal characters with distinct special skills, making each one feel unique while fostering strategic play. A new bomb mechanic gives players the control needed to survive the diverse set of maps, each of which features a specific twist. And when time runs out, sudden death turns the arena into a close-quarters fistfighting mayhem. In addition, we introduced a killfeed and implemented online multiplayer gameplay so anyone can get started fast.

Specs

Developer

Iffy Labs

Developer

Iffy Labs

Developer

Iffy Labs

Publisher

hOSHI UG

Publisher

hOSHI UG

Publisher

hOSHI UG

Platform

PC

Platform

PC

Platform

PC

Genre

Maze-Action

Genre

Maze-Action

Genre

Maze-Action

Input

Gamepad / Keyboard

Input

Gamepad / Keyboard

Input

Gamepad / Keyboard

Team Size

3 (4 on prototype)

Team Size

3 (4 on prototype)

Team Size

3 (4 on prototype)

Development Time

May 2017 - January 2019

Development Time

May 2017 - January 2019

Development Time

May 2017 - January 2019

Engine

Unity

Engine

Unity

Engine

Unity

Role

Programmer, Designer

Role

Programmer, Designer

Role

Programmer, Designer

Screenshots

My Tasks

Introduction

Iffy Institute was my very first student project and also the very first serious Unity project I ever worked on. We were 4 game designers on this project, so we were forced to learn new skills and not just design the game. That means the project forced me to learn and understand not just a new engine but also the C# programming language and working in 3D space. Prior to this project, I only ever did some small test 3D projects in Gamemaker and Unity; I mainly created 2D Gamemaker games before that.

But at least I had prior programming knowledge, meaning I could fulfil the role of the programmer here.


This project is basically where it all started, and there is way too much to list of what I've learnt over the course of the development time. I learnt so many aspects of the engine and C# in general.


I was in charge of programming the whole game. From character controllers, input, VFX, and events to the GUI, networking, and Steamworks way later on. Additionally, I was in charge of designing the UI and UX and handling the lighting and VFX of all scenes.


What started as a student project became serious when we eventually planned to release this game on Steam.

GUI

Due to Gamemakers lack of proper UI tools back in the day, I was never really fond of creating user interfaces. This changed with Unity, and I was overwhelmed by the possibilities. This also started a love-hate relationship between me and UI/UX design/programming. A lot of programmers really don't like to create user interfaces, but I somehow started to quite enjoy it.


One of the more challenging parts was creating a UI that people actually understand and that helps spectators to follow the action on the screen. We came up with a kill feed that forced me to create a system where deaths have context. What might sound trivial was quite demanding for me back then, but in the end, I got it working.

Input

Since we wanted to create a game inspired by Bomberman, we had 2 options. Create an AI that plays against a single player (boring) or make it multiplayer (not boring). So we made it couch-competitive, which meant that I had to build support for up to 4 gamepads. Which, back in the day, was quite the pain in unity with its old input system.


In order to at least counteract that pain a bit, we purchased a plugin called "InControl", which made assigning gamepads, hot plugging, and sudden disconnect handling way easier. Yet it was still a good chunk of work to actually make the whole experience of connecting and disconnecting gamepads feel somewhat good. On top of that, making the GUI update gamepad prompts depending on what gamepad was being used.

Steamworks & Online Multiplayer

Now that we wanted to release the game on Steam, we of course had to add Steam-specific features, like achievements and P2P multiplayer. For that we had to make Steamworks work with the game. We used Facepunch.Steamworks to get the job done.


Multiplayer was a different story, though. I didn't even try to find and use a 3rd party solution like Photon. I had prior experience of creating online multiplayer in GameMaker, so I was confident of doing it myself.

Since Steamworks already handles connections, lobbies, and friends, I only had to create packages, send them off to other players, and make use of the data that is being sent.

The multiplayer generally works, but is, to this day, still quite buggy. This is most likely due to the fact that I broke one of the main rules when creating online multiplayer. I basically added the online multiplayer after the whole game was finished with local multiplayer.


Post Mortem

Today I have mixed feelings about this game. The UI navigation can feel quite clunky at times. The characters feel a bit… off to control—they can get stuck at corners easily. The game only supports multiplayer and doesn't even have a skirmish against AI; also, the online multiplayer is buggy.

Looking at the code today is nostalgic but also quite funny. There is a bunch of code that could potentially land on r/ProgrammingHorror.


Yet, I am still very thankful for this project since it pretty much made me fall in love with the Unity game engine. I learnt a lot of aspects all at once. And for the first time seriously programming in C#, I can be proud of finishing such a project. In hindsight, I am also extremely happy that we released this game on Steam with online multiplayer, which made me explore backend APIs so early on in my career.

Last updated:

Feb 15, 2025

Last updated:

Feb 15, 2025

Last updated:

Feb 15, 2025