Veera Raita
POKT23SP

Mikey's Dare

Project Description

Participants:

  • Vivian Jutila - Artist, Designer
  • Veera Raita -
    Main-and-Only Programmer
  • 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.

    Project progression

    A screenshot of the protagonist in a dark
                        cave, faced with a creepy-looking child

    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.