Game Dev Adventure #6 - My First Game Jam Part 2
Welcome to the Herbster Games' Game Dev Adventure!
Before reading further, if you haven't, go back and read from part#1 of My First Game Jam experience as you want to read from the beginning to get the full ride on the fun game jam event!
Here comes the rest of the game jam! Being able to stay focus and work on a game within a short time was a great experience. With me, I have other commitments during the weekdays, so it was not an easy feat to get everything done. We had to make sure we have a clear roadmap and fix bugs as soon as possible to stay on track with our target product for the jam.
Here is the break down for the remaining days of the game jam: Day #6
Game over UI panel, allow the game to restart.
Stopping game state and restrict players from interacting with the game except for the panel or restarting.
New enemy! Necromancer and Skeletons army!
Having only one enemy type is boring, so we are going to be making a new enemy! Besides the Big Bad Demon to be running towards the player, what else is fun for an RPG enemy? We imagined units that can teleport would be super fun and decided to combine an idea of a mage and a necromancer; this new enemy would be able to teleport, summon skeletons, and fire fireballs. Having multiple types of units will be able to provide players more excitement because that would give players something different to look for when going through the rooms.
We also worked on some UI elements and creating a game over scene. At this time, players can get hit by the monsters and lose health but never really lose the game even if they get hit too much, so the game needs to have a game-over scene to be able to feel complete. Guess no one likes any game that has no way of losing, right?!
Day #7 and #8
Skills for Necromancers to summon multiple Skeletons with magic circle animation and teleportation!
Actions for the Skeletons.
Making sure all the monsters can take damage and die properly.
We only created the necromancer and skeleton prefab on day 6, so now we need to be able to have them do some actions. Knowing that summon only the Skeletons to pop out of nowhere would look quite weird, so we decided to add some indication of the necromancer summoning up the Skeletons! We found this Epic Toon FX asset on the Unity store that has a bunch of great-looking effects, and with that, we found a magic circle FX to use for the summoning. It took us only a little bit of time to understand how to incorporate the asset into our game, and it looks super awesome! The summoned Skeletons all act similarly to the Big Bad Demon but move considerably slower. Once we finished the summoning, we added the teleportation logic for necromancer as well. Now it has two moves!
The player can take damage, but what about the monsters? We need to have the necromancer and skeletons take some hits. Assigning different health values for each of them, then have them play a death animation once their health drops to zero.
Here are some videos of bugs we found during the implementation:
Day #9 and #10
Adding a fireball attack for the necromancer.
Added spike trap prefab!
Fixed some bugs.
Necromancers only teleporting and summoning skeletons do not pose enough threat to the players, so it needs an attack as well. Getting a unit to shoot fireball sounds easy, but it ended up being a little bit tricky to implement. The spell was able to damage the player, but the movement of it doesn't look right. Tweaking the function was not yet working, so we decide to work on other things first and come back to this issue later.
Besides living enemies, we also want some environmental challenges. With the limited time we have for the game jam, only having one environmental challenge seems to be okay. Between various options, we selected a spike trap to be the one. Implementing the spike trap was interesting, as that involves the understanding of how to put prefabs as a brush to the tilemap. Unity3D does make it easy to implement, so it didn't take us too long to understand how prefabs on tilemap work. We left the control of the timing for spike coming up and down to be a variable, so they don't have to all pops at the same time. After getting the traps done, I decided to create a silly start scene with spike trap animation on it, to be a little goofy.
Following the fun, we always need to take care of some tech debt as well. A bug we found was some things keep disappearing on the screen from time to time, and we figured it relates to the prefabs having inconsistent layer order, so it just needs some changes to bring all the objects to their specific layer.
Death for the necromancer and skeleton.
Added door and its animation.
Currently, the necromancer and skeleton disappear when they die without any animation to indicate their death, so we decided to create a death animation for each of them. While we were making the animation, we ran into some hiccups. Making animation in Unity is an art of its own, and we only know a little bit of how it works, which took us some time to figure out why things were not working, but the problem we had did get resolved.
For the game, we know we want at least multiple rooms, and players should be able to get to another scene once they clear out the room's objective. Therefore, we added a door prefab to the game to allow players to go through them once the monsters get all cleared out.
Fixed the fireball movement bug and added fireball exploding animation.
Necromancer now uses different skills randomly.
Another new monster: Swampy Slime!
We left off the bug fixing for the fireball on day #9 because we couldn't figure out the issue. However, it needs to get resolved before we can move forward with the necromancer skills. It ended up being some miscalculations on the way we wrote the movement of the fireball, and we had to rewrite the entire piece of code for it. Now that the bug is gone, we can finally work on the fun part - EXPLOOOOOOOSION! Seeing fireball explode is fun, don't you agree? Now we got it working, so the only thing that's left for the necromancer is to make sure it selects between summoning and shooting fire when it acts. We made the necromancer chooses randomly between 1 or 3 fireballs or to summon skeletons at any given point in time. Now everything is done with the necromancer. Harray!
With only two enemies, we still think it is not enough, so it's time to make our third enemy! This time we want a ranged character to add to our enemy collection since we already have Big Bad Demon and the skeletons chasing the player. It turned out to be a slimy enemy we called swampy slime, and it shoots out multiple green projectiles in a fan shape. This slime also gets scared when the player moves too close to it. It would run away from the player when that happens. Now it should be enough for our enemy collection for at least the game jam!
Players now start in a random room.
Set up spawn points in each room.
Restructure the room data class structure.
We restructure the room data class structure so that we can set up spawn points in each room for a random enemy generation as well as to further enhance some of the logic for the game. Instead of presetting, players can now start the game in a random room, and all the future stages would all be randomized.
Make enemy generation randomly alter between all random or all the same enemies.
Counting how many rooms are cleared and display when the game is over.
Final day for the game jam! There are a few things we needed to finish up before calling it a day. Most of the items are to make the game feel more polished and to be feeling like a complete game. Since we don't have much time left, we want to make sure only the necessary stuff to fix and improve are the ones we work on this day.
The first thing we need to check is to make sure the whole game flows from start to finish. We enhanced it to check on the amount of enemy left in the room, and open the door once all enemies are dead, then having the player able to walk into a new randomized room.
The second thing we need is to improve the UI and UX a little bit more, so it doesn't feel dull to look at the overall scene. We added a symbol on the screen to show how many rooms the player has cleared, change all the fonts in the game, and make the game over screen look better. Now everything looks great and good to go.
The night was still young when we finished improving the UI and UX, so we decided to add one last feature to the game to make it slightly more fun, to have dead enemies drop hearts at a random rate to allow players to pick up to restore health. That add-on let players decide how to spend time in the game, to whether or not to grind out extra hearts as times to be safer for the rest of the journey. Since the game is to see how many rooms the player can clear within 5 minutes, there is a limited amount of time to be wasting on not clearing rooms. It adds variety, and we thought it was a fun little extra.
After all this hard work, we finally finished the game! We named it Dangerous Dungeon, and Jacob wrote a piece of original music to put in the game for background music. Here is the link to the game on itch.io, so go ahead and check it out!
We are both glad to take up the challenge and participate in My First Game Jam this time, and be able to create a game we are both proud of showing to anybody. Little did we know that we could accomplish so much within the two weeks period we had while taking care of all our other responsibilities. In the end, it was 100% worth our time and effort to be working on something as fun as this game. Game development is not easy and will never be easy, but it's always fun to share the joy with others through any project we create. Even if only one person likes our game after trying it out, that would already be a big win for us. Hopefully, you would enjoy it as well!
If you want any more detail regarding my experience for the Game Jam or want to let me know you like what I wrote, please feel free to drop me a question or comment below.
If you like what you read, please share this post, subscribe to our mailing list, follow our social media pages, and join our discord channel! Soon, I will be starting to work on some Unity tutorials for casual games as well as sample coding tutorials for Unity. Stay tuned! Thank you, and until next time!
"Have Fun. Be Happy. Be Inspirational!"