Mikey's Dare is a simple game produced for XAMK Game Jam 2024 Fall. The game has you play as a strange
teenager, who's been dared to wander into a dark cave, and you're not allowed to turn back before you
find the end of the cave (which of course does not exist).
With you in the cave are various (three) monsters, which you can deal with in different ways: one you
can spook before it gets you, one tries to grab you from behind unless you turn to face it, and one can't
see you while your flashlight is off. The game revolves around dealing with these threats to reach as far
into the cave as you can.
This jam project got started with a few rough ideas, though the main idea that we kept was a dark cave with monsters.
We took a little while to decide on if we wanted a top-down game or a side-scroller game, but eventually landed
on a side-scroller due to monsters potentially looking much less menacing from top-down. The monsters we had
planned were so drastically different from eachother, that I felt like implementing a typical OOP inheritance
solution for their execution would have caused more harm than good, so I decided to go with a composition-based
approach instead; I'd build a few core functions into different classes, which I could then create objects for
within a proper enemy class if I needed it.
During day 1 I got the basic input- & movement systems down, as well as adding the core player actions: turning
around, toggling the flashlight, and "looking big", which in practice would be used to scare some enemies.
Day 2 was a bit more busy, as I had to program all of the enemy components, the first enemy, a way to show
enemies only when they're in the player's flashlight's area, infinitely-scrolling, parallax backgrounds, add a
spawner for the enemies, a tutorial, a game-over screen, and the base for the second enemy. I also made the UI
text display one letter at a time, with an adjustable speed!
Day 3 wasn't nearly as busy as I'd expected: adding the animations was quite simple, and coding the rest of the
enemies was a breeze due to the well-planned components I programmed earlier. I also went and added a high score
system for the heck of it. Though day 3 did have a decently-sized problem: reloading the scene caused my GameManager
singleton to forget every variable assigned to it via the inspector after reloading, even though in-editor the
GameManager still appeared to point to every variable exactly as intended. Further debugging revealed, that the
GameManager does not get destroyed and remade between scene reloads, and so it tries to refer to the previous,
destroyed versions of the GameObjects (and other variables) assigned to it. This was incredibly strange, as the
GameManager did not implement the DontDestroyOnLoad method in any way, and even destroying it manually had the
same problems pop up. During debugging I received advice from a few more experienced programmers, one even having
a degree in game programming, yet none could come up with a solution.
All this did cause the game to be released without a restart system, though I still plan to eventually solve the issue,
and release a fixed version. Despite all this, the game was submitted to the jam page around 2.5h before it was due,
so I'd call it a success, even if it was missing the replay-functionality.
Post-jam update: I managed to work out the issue with a teacher's assistance, and now have a better understanding
of the Unity event system.
The game is available on itch.io to play for free in-browser.