First Game Jam: Slimezilla


Last week I participated in my first game jam, the Brackeys Game Jam. I've been making games for a while as a hobby, but I've recently decided to start taking it more seriously and thought completing a Game Jam would help me get in the groove.

The theme for the jam was "You're Not Alone", so naturally I had to brainstorm an idea based on that. I ended up deciding to make a Vampire Survivors style game where you play as a slime who takes on the kingdom.

Planning Stage

Rough Draft

Originally, I planned to play as a slime who duplicates as he grows stronger and becomes a powerful swarm of slimes. Every slime would have their own hp, and when its gone they would die and the swarm would shrink. For progression, I planned to have 10 waves of progressively more difficult enemies assault the player and grant one random upgrade per wave. For enemies I imagined having several different types of melee and ranged units to force the player into difficult situations. But in the end I close to use a King Slime who would absorb normal slimes to grow stronger. You would collect other slimes to gain HP and grow in size, and collect EXP from enemies to level up and gain skill upgrades.

Development Stage

Now that I had a plan, it was time to get coding. I chose to use Unity as its a tool that I am familiar with and enjoy using. My first step was to implement player and enemy movement. Using unity's Input Manager I set up vertical and horizontal movement for the player with either WASD or arrow keys, and set the enemies to follow the play until they were within attack range. I added the ability for the player to shoot slime bullets by clicking in a direction. I knew I wanted to make that automatic eventually but for now manual seemed best.

Attacking Enemies

Next I had to implement attacks. I setup the enemies to take damage from the incoming slime bullets and die after taking 5 hits, and I programmed the enemies to stop approaching the player at a set distance and begin melee attacking. Seeing enemies just pop out of existence isn't very satisfying though, so I added in a blood explosion particle effect to really sell their deaths. It was good but not quite enough. I wanted to add a white flicker to both the players and enemies every time they took damage to visually indicate the attacks and make it feel more solid. The easiest solution I found was to create a completely white material, and create a utility script that would substitute out an objects sprite material for the completely white one for a fraction of a second when executed. Then all I had to do was attach this script to the player and enemies and call it whenever they took damage, perfect!

Now that I had combat rolling, I needed to do something about the background. Currently I just had a solid green background that scrolled infinitely, but with no details it made it hard to tell if you were even moving. I wanted to setup a fantasy kingdom background to go with my back story. I had this sprite sheet laying around with a bunch of fantasy world map style sprites so I went to work in Tiled to construct a fairly large map that was both interesting, but not too distracting from the gameplay itself. Of course the map also had to be seamless so that I could tile it infinitely in the game. After putting that together I exported it as a PNG to unity. Now I had to figure out how to get it to scroll with the player. The brute force approach is to render 9 different images with the background on them around the player and just reshuffle them as the player gets too close to the edge, but I wanted a better way. I found a guide on using Quads in Unity and adjusting the offsets on them to mimic scrolling the texture and it was a perfect fit. I was able to get one large quad to just follow the player around in 2D space and scroll the texture on that quad in the opposite direction to give the impression of an infinite background with ease.

Next I wanted to start work on the UI. I added a health, experience, and slime bar to the bottom of the screen and a timer to the top so you know how long you had survived. I made each of them a unique popping color and gave the white text black shadows they would stand out. I originally had a sliding difficulty bar under the timer because I wanted the difficulty to gradually increase, but I ended up scrapping that due to time constraints.

Now that I had basic functions working for the player and the enemies, I needed to add in the slimes! I used the same slime sprites for the player, but without the crown. I made it so that colliding the player with a slime would destroy the slime and increase the players Slime collection amount. After collecting enough, the player would grow in size and the camera would zoom out a little, giving the impression of you slowly becoming a behemoth monster! I setup a little spawning script that would spawn 20 slimes at any point in time and would respawn them as they were destroyed or got too far away from the player.

Enemy Spawning

After slime spawning, I needed enemy spawning. This would prove more difficult as this was the main factor for the games difficulty. I used the same spawning logic from the slimes to spawn enemies randomly near the player. In order to increase the difficulty, I increased the maximum number of enemies allowed to spawn by 1 every second. This made the game much more busy and fun, but it did eat up a lot of ram and force the game to crash eventually. I wanted to add more enemy varieties and strengths but did not have the time to do so.

Finally, I had the last primary feature left to implement, the upgrade system. This system was designed to prove the player a special upgrade every time they leveled up, making them stronger somehow. I added a cool chest opening effect for some flare and created a popup with 3 different upgrade options. I was planning to randomly pick 3 upgrades out of a bunch to offer, but since I ran out of time I just offered 3 upgrades that the player could pick from every time. The first was magic slime scythes that would rotate around the player, hurting enemies on touch and increasing by 1 every upgrade. The second was a potion that would increase the amount of slime projectiles you fired every upgrade. The third was an experience magnet that would allow you pickup experience crystals from increasingly greater distances.

Polish

Now I had all the basic features and functions of my game running, and it was time to do some cleanup for the final submission. The biggest thing that was still missing from my game was sound. I did a bunch of digging online and in my collection of audio files and selected a bunch of different sound effects for in-game actions and a couple soundtracks for the main game loop and the menu. I also spent a little time fixing some random bugs that were affecting gameplay. My final goals for the game were to implement a death screen for the player, and an intro for the game that explained the story a little. Unfortunately I got tired and fell asleep and when I woke up I did not have the time left, so I guess that will have to wait until later. Truthfully the balancing was so bad that it was almost impossible to lose, so the ending screen wasn't even all that necessary haha.

After Thoughts

Making this game was a lot of fun and I am proud of my results, even if its not everything I wanted it to be. The game is currently available on itch.io and I plan to clean it up a little and release it on iOS and Android as well. The main improvements that I wish to make on this game are balancing the combat and skills, and adding a true ending. The enemy types could use a lot more variety, different strengths and weaknesses, adding ranged enemies, and adding waves to shake up the monotony. The skills could use a lot more variety, as well as better balancing so they don't instantly make your character OP. I plan to add these things later in the future, but I'm not sure yet when. Thanks for following along, I hope you enjoyed my thoughts on game development!

Check out the game: https://dispixel.itch.io/slimezilla

Files

Slimezilla_WebGL.zip Play in browser
Jan 29, 2023

Get Slimezilla

Leave a comment

Log in with itch.io to leave a comment.