Digmania

Play online

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.

Enemy types:

  • Green – moves back and forth horizontally
  • Light Blue – moves in random directions
  • Orange – moves in a circle pattern
  • Red – shoots projectiles at you.

 

 

Post Mortem

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!

 

Released

DevSpace Technical Conference 2015

DevSpace

DevSpace Conference Overview

I gave two talks at the DevSpace technical conference in Huntsville, Alabama last weekend.  The conference was organized by frequent CodeStock speaker Chris Gardner.  I have a lot of respect for someone who starts a technical conference on their own from the ground up.  I had a great time at this conference as it was my first time speaking at a conference outside of the Knoxville, Tennessee area.  Huntsville is a very nice city in northern Alabama.  I had visited Huntsville about two years ago for a sporting event at the Propst Arena at the Von Braun Center in downtown Huntsville.  It was a great experience to return and speak at the conference center at the same location.

I stayed at the Embassy Suites, which is right next to the conference center and is connected by an enclosed bridge.  This was one of the nicest hotels I’ve ever stayed and the conference discount made the nightly price reasonable.  In the conference center, they have flags hanging from the ceiling representing all of the 50 states.  I noticed that the Georgia flag was the old blue one that was used in the late 90’s.

The first morning started out with a keynote from another speaker from Knoxville named Alan Stevens on the lower floor of the conference center.  The individual sessions took place on the upper floor.  A nice game room was provided by a local arcade shop.  I was able to take in a few games of Street Fighter II Hyper Edition, Galaga, and Star Trek pinball between sessions.  Best of all, the arcade games were set to free play.  Free T-shirts were given out by DealNews as well.

I attended sessions by fellow Knoxville Game Design member Michael Neel on Not Teaching Children Code and an Introduction to Unity.  There were other interesting sessions that I attended on network packet monitoring, functional code, REST best practices, prototyping mobile apps, and Kanban with Scrum.

Promoting Your Game with Social Media

My first talk was late on Friday afternoon.  I covered the various social media sites that can be used to promote a game and I also covered the analytics of each of the sites to measure your audience.  Many of the social media sites can be used to promote any product.  I also covered a few sites that were devoted specifically towards promoting games.  My talk did spark a lot of discussion from those who attended the session.  One person said that they found the ability to schedule a tweet in TweetDeck very helpful.  There was some interest in using the Twitter APIs and OAuth authentication.  I had written some code months ago in Ruby to pull data from Twitter using OAuth.  There was one question about when is the best time promote a new game and my best advice was continually promote through the development process so that you build a following.

Playmaker for Unity

My second talk was early Saturday afternoon on using Playmaker to develop Unity games.  Mike’s talk the previous day was a great introduction for my presentation, as it meant I didn’t have explain all of the basics of Unity and hopefully session attendees were already a little familiar with the Unity terminology.  In this presentation, I gave a demo of how to create a space shooter using Playmaker.  I had five basic steps, and I already had pre-built scenes for each step in the development process.  This made explaining things much easier, as I didn’t have to worry about doing all of the technical steps live, which can slow down the pace of the presentation.  Earlier in the week, I made a final polished version of the space shooter with models imported from the Unity Asset Store and many other special effects such as lighting, a scrolling background, and a tail renderer for the bullets.

 

Conclusion

In my opinion, the most difficult part of presenting is keeping track of time.  It also doesn’t help when your talk doesn’t end at the top of the hour, since there are usually never clocks in the room and your PowerPoint presentation in full screen covers the clock in the system tray.  The clock on my phone didn’t help, as it kept auto-sleeping after a minute.  When I’m sitting in the crowd during a session, the time seems to go by so slowly and I start thinking about how it’s going to be impossible to talk for an hour.  However, whenever I get up in front of a crowd everything seems to come naturally and the hour will fly by in what feels like just a few minutes.  I do like to cover all of my main points on my slides first, and then the remaining time will determine how in-depth I go into explaining the demo.  I did remember to bring a bottle of water with me this time, since it is really easy for your mouth to go dry while talking for an hour.

I had a great time at DevSpace, and I hope the conference continues to grow in the upcoming years.  I was really happy to be a speaker at a new conference to help get it off the ground so it will be held again for many more years to come. There is a severe lack of technical conferences in the southeastern United States, so I will do whatever I can to help establish new conferences. My only complaint was that the WiFi was spotty at some locations in the conference center.  My social media talk relied heavily on showing the different sites on the web, so I had to make sure that all of the sites were pre-loaded in my browser before I started my talk.  The projectors were a little old, but fortunately I packed my MacBook VGA adapter that I bought years ago and never used.  I definitely look forward to attending DevSpace 2016 next year!

Demolition Madness


Demolition Madness Demolition Madness Demolition Madness Demolition Madness Demolition Madness
Demolition Madness

Description

In Demolition Madness, help the construction worker climb the ladders to get to the top of the building to flip the switch to initiate the demolition of the building.  Along the way, you will come across numerous obstacles.  Use your trusty bombs to destroy the destructible blocks in your way.  You will come across foes such as snakes and birds, which will send you back to ground level.  These enemies can be defeated with bombs, but you must carefully place them as there is a countdown until the bombs explode.  Powerups are available to increase your maximum number of bombs, increase blast radius, and reduce countdown time.  Be aware that some powerups are hidden behind destructible blocks.  Two exciting levels to complete!  Can you make it to the top?

Demolition Madness is a game created with GameMaker 2 for the GM48 27th game jam.  The character sprites were created in Inkscape and animated with Spriter Pro.  The music was created in GarageBand on a Mac Book Pro.  The sound effects were made with BFXR.  The block textures and touch up for other graphics was done in Gimp.

Three powerups are available to upgrade your bombs.  Picking up the powerup with the “B” icon will increase your total number of bombs.  Your bomb stock will replenish as your bombs explode.  The blast radius will increase the total explosion area of your bombs, allowing you to destroy more blocks and enemies.  The countdown reduction powerup reduces the amount of time that it takes until your bombs explode.

There are two types of enemies, which impede your path.  Snakes patrol a row of blocks, which are eliminated with a carefully placed bomb.  Birds fly through the air, so they must be avoided when climbing ladders.

The gameplay was inspired by classic arcade games like Donkey Kong, where the objective is to climb ladders to reach the top.  The bomb mechanic and the ability to upgrade bombs was inspired by Bomberman.

Videos

 

 

Released