Ludum Dare Submission Post and Itch.io Page

I’m really happy with how this one turned out! It’s only my second time submitting to Ludum Dare completely solo, but I think I’ve improved a lot!

Day 1: Brainstorming Phase

I haven’t really had time to properly participate in Ludum Dare since #42 when I made Space Runner, so I was really excited about this one! I got into a voice call with one of my friends who really likes brainstorming with me and we came up with a decent amount of ideas in the 15 minutes after the theme (keep it alive!) was announced:

  • You are tasked with raising / caring for a pet
  • There is a fire and your job is to keep it lit so that the monsters that dwell in the dark can’t reach you
  • Some type of rescue game
  • You’re on your way to the store and you have to avoid sick people to keep yourself alive
  • You are the healer in an MMO dungeon party and you need to keep your team alive
  • Literally anything involving necromancy (we were thinking of combining this one with the pet one)

We decided to cut out the pet concept, fire, and rescue because we couldn’t really think of a fully fleshed out idea for those that didn’t sound boring and basic. We also decided to cut the virus-related one out because we wanted it to be more lighthearted. Then were were left with MMO Healer Simulator and necromancy which we were leaning towards anyway since we are both huge MMO nerds (I usually play healer or DPS and he’s usually a tank).

Beautiful MS Paint sketch of how I wanted the game to look

The player would be the healer in a classic 4-person dungeon party fighting a boss. They would have 5 different abilities activated by the corresponding number keys (1, 2, 3, 4, 5) and be able to swap between targets using tab-targeting. The abilities were planned as follows:

  1. Basic Attack - does damage to the selected enemy and restores a bit of the player’s mana (which does not restore naturally)
  2. Basic Heal - heals the selected party member and costs some mana
  3. Heal Over Time - heals the selected party member over a short period of time and costs some mana
  4. Debuff / Cleanse - will either debuff the selected enemy or cleanse the selected ally (couldn’t decide which so I was going to put it off until later) and costs some mana
  5. Ultimate - will heal, cleanse, and grant a small heal over time to the entire party and costs all of the player’s mana

Finally, I decided the game over conditions should be either 1) the player dies or 2) the entire team except for the healer dies. Then, I called it a night and prepared myself for a long day of coding.

Day 2: Base Game

I opened up Unity 2020.2.0a7 and started working. When I tried to write my first script, I realized that there was a problem. My editor wasn’t auto-filling! After about an hour of frustration I ended up just downloading the editor I used to use (Visual Studio 2019). After that small hiccup, I think that this was probably the fastest I’ve ever gotten all of the base mechanics done.

Tab targeting wasn’t too hard to add. I just made an array of all targetable entities and had the player cycle through it every time tab was pressed. The order of targets is healer, tank, DPS 1, DPS 2, and enemy (Actually, there is a problem with this because I used FindObjectsWithTag() which will not give the correct order on some machines). I figured the tank would need the most healing focus and that the player would only be attacking the enemy if they needed mana or if their party had high health.

The health system and mana system were classes which kept track of the health and mana of each character. They also made adding health and mana bars easier. These were just colored rectangles that adjusted their horizontal scale with the percentage of health or mana the specific character had. To create these, I referred to unfinished LD 43 game in which I learned how to make health bars using Code Monkey’s health system tutorial.

To make character stats easier to keep track of and manage, I used Unity’s Scriptable Objects. This let me make assets that stored values for things like health, mana, cooldowns, etc. that I could just attach to a script and easily access.

As a break, I drew some quick sprites and reused a tile-set that I had made for pixel art practice:

Old Player Sprites Old Enemy Sprites Tileset

Since I figured that the enemy should be giving a majority of its aggro to the tank, I gave him a taunt ability. This was a lot easier than my original plan of making the boss randomly chose targets and having them have a certain chance of getting selected. However, I will probably look into a better method in the future since it is quire hard if the tank dies (or maybe I’ll just balance the stat sets better lol).

Unfortunately, my code got way more messy as I went. I realized that skills 3 and 4 would probably take up too much time and add a lot of extra complexity to the game, so I decided to cut them out. The ultimate ability no longer made sense one I cut out 3 and 4, but then I remembered the necromancy theme from the brainstorm session and transformed the ultimate ability into a resurrection.

Abilities 1, 2, 3

Day 3 & 4: Polish!

These two days kind of blurred together, so this is definitely not in order. I finished up the death and resurrection system and then went on to fixing some bugs and adding some more finishing touches to make the game look and feel a litter better. First, I made some updated sprites:

New Player Sprites New Enemy Sprites

Next on the list were the main menu, pause menu, and game over screen. I mostly build them the same way since I watched the Brackeys’ pause menu video around a year ago and I just haven’t had the energy nor the willpower to change how I make them.

To randomize the enemies, I actually just changed what sprite and stat set the Game Object used. I’m not sure if this was the best way, but I figured it would save a lot of time instead of having multiple Game Objects or prefabs.

The music was pretty difficult since I’m not a composer and know nothing about music theory. I just messed around on Beep Box and eventually created the main menu music and the in-game music.

I’m not super experienced with animations or the Unity animator, so I probably didn’t add my animations in very effectively. I added animations to party member and enemy attacks as well as a screen shake whenever an enemy died. There is also a bouncing X that shows up when anything dies. However, this causes some issues with the target indicator and doesn’t always play fully when an enemy dies. I also made some main menu animations as well as a nice transition from the game to the menus.

Originally, I was planning on adding in some concrete numbers such as spell costs and mana & damage popups, but I ran out of time. Hopefully, I will have time to make an updated version of this where I clean up the code and add in some more features to make the game more engaging. I might also port it to mobile as was suggested in one of my Ludum Dare comments.

 

Thanks for reading about the creation of MMO Healer Simulator! Also a big thank you to everyone who left comments on my Ludum Dare submission! I will be compiling a list of the suggestions if I am able to make an updated version!