Help Mr. Digger dig as far as possible into the earth. Pick up the shovel to start digging. Pick up additional shovels to speed up digging speed. Avoid the enemies as you dig. Get hit three times and the game is over. Enter your name for the online leaderboard.
Press left and right to move. Press space while standing still to dig downward. Hold left or right and press space to dig horizontally.
Press Up to jump.
- Green – moves back and forth horizontally
- Light Blue – moves in random directions
- Orange – moves in a circle pattern
- Red – shoots projectiles at you.
It’s been a while since I’ve written a Ludum Dare post mortem, but I decided to write one this time since it is LD48. Ludum Dare was originally referred to as LD48, due to it being a game jam to be completed in 48 hours. After doing so many of these, sometimes the post mortems started sounding like I was saying the same thing over and over again, which is why I haven’t written one in a while.
This is my twenty-third submission to Ludum Dare. I started back in April 2013 when the theme was Minimalism and I created a game called Amish Brothers. It was a simple game of collecting sheep, but it was my first ever Unity game. Learning Unity has opened some doors for me in life. It was one of those things that I never was taught in school or college, where I just had to pick it up on my own. For this 48th edition of Ludum Dare, I decided to use Unity again, which is now on version 2020.1. When I started with Unity, it was version 4.5 and things like GUIText and GUITexture have now been deprecated and no longer exist (I’m really starting to sound like an old-timer now).
So this Ludum Dare’s theme was revealed to be Deeper and deeper. The classic arcade game Dig-Dug came to mind, and I didn’t have any other ideas. I decided to make a game in the style of Dig-Dug. Another inspiration was the digging levels in the USA version of Super Mario Bros 2.
One of the first decisions I had to make was to either use a Projection camera or Orthographic camera. Projection is nice to really make it look 3D, but Orthographic is good to keep all of the ground units the same size. I decided to go with Orthographic this time, however some of the 3D shading properties can still be seen. Otherwise, a player probably wouldn’t be able to tell the difference between a 3D orthographic game and a regular 2D sprite based game.
I think I did a good job implementing the basics of Dig-Dug, with adding my own spin on the game. I considered my Chicken Little game for Ludum Dare 46 to be successful, based on the number of scores that were submitted to the leaderboard. Therefore, I decided to make another game that was quick and simple to play, that would yield a varying range of scores based on how deep you dig. As with the Chicken Little game, I used my custom leaderboard code, which handles submitting the player’s name and score to my website. It works well, but it allows players to enter any alpha-numeric name and the score is validated based on a hash of the name, score, and key. If someone has enough time on their hands, then can probably figure out how to break it. However, I do like giving the player the ability to enter anything (aside from the words in the “bad words” file) for their name, which is like the old arcade and pinball machines. If the player has to create an account to submit a score, then they probably won’t bother.
The ground blocks are basic Unity GameObjects. When you press space to dig, it uses a one unit ray to check check if there’s a block below, and removes it if it exists. I also spawned a particle effect for the dirt being dug. If the player is holding left or right while pressing the dig button, then the ray will be horizontally left or right instead. Looking at it now, I probably would not have made a button specially for digging, and just perform the dig function whenever the player presses down, left, or right.
Unlike the arcade Dig-Dug, I had shovel collectibles spread throughout the game. The first shovel sits on top of the ground, and must be picked up first before digging. This is sort of a throwback to picking up the wooden sword in the original Legend of Zelda. Each additional shovel increases the digging speed. I used the clamp method to set a maximum digging speed (or minimum delay between digs) so that the dig delay never reaches zero.
There are four types of enemies in the game. Unfortunately, due to lack of time they all look the same, just with different color textures. I did model everything in Blender, so I could go back and add animations in a future release. However, the enemies do have different movement patterns, but very simple ones. One enemy moves horizontally to the left and right. Another moves in random north/south/east/west directions (similar to the Octorok in the original Legend of Zelda). Another enemy moves in a circular pattern. The last enemy is stationary, but shoots projectiles at you. The enemy speed also increases based on your current depth (they move faster the deeper you go). This is to ensure that the game doesn’t go on forever. I used proper object oriented style when making this game, by having one Enemy class, which has the basic attributes of the enemies, then four subclasses for each enemy type that control the different movement patterns and shooting. This way, I only had to write the collision code once for the enemy. Another difference from Dig-Dig is that there is no way to attack the enemies, and you can only avoid them.
I decided to allow the player to have three health before ending the game. I could have made it so that the game is over after one hit, but I liked giving the player a chance to recover after making a mistake. I also added a grace period (now called I-frames in the speed running community) before they are damaged again. I simply changed the color of the player’s material to red during the invincible period. I think not having a dig animation for the player is probably the biggest flaw in the game.
The ground blocks are spawned one group (10 total if I remember correctly) at a time. Once the player digs near the bottom of that group, another group are spawned, and the camera is moved downward. The camera also follows the player upwards when jumping. One fix that should probably be made is to limit how high the player can jump. However, I do like having the ability to trace your path backwards to the start. When the game is over, all of the block types are destroyed, the camera is moved back to the start, and the game is reinitialized.
As with most of my games, I used GarageBand for composing the music. I have a MacBook Pro specifically for composing music, then I transfer the files and generated song file over to my primary development PC using a shared folder. This process has worked good for me over the years. This time, I didn’t make any custom sound effects and just used BXFR, which is good for making 8-bit sound effects.
I took two photos outside of my house, which I used for the dirt texture and the rock boundaries. I modified those images a bit in Gimp, to give them more of a uniform color.
There were a few other things I considered for the game but just didn’t have the time or gumption to implement. The first idea was lantern powerups. Underground would be dark, but only a small portion could be seen using a Unity spotlight. As the player would collect more lanterns, the radius of the spotlight would increase, allowing the player to see more of the area around their character. I also considered adding gems, which would look pretty, but I didn’t have any other idea for them aside the score. Since the player’s “score” is how far they have dug downward, I thought adding a gem score would add unneeded complexity. Maybe if I developed the game further, gems could be used to buy powerups or other things.
I appreciate everyone who has played the game and submitted a score to the leaderboard. See everyone in October for Ludum Dare 49!