Home | Planet Ludum | Rules Wiki | Mailing List| Sign In/Create Account | Write a Post| #ludumdare on irc.afternet.org

Ludum Dare 16 :: December 2009 :: Theme: Exploration

LD16 Results: Top 20 | Categories | View All 121

Theme Voting: Round 1 | Round 2 | Round 3 | Round 4

GBGames's Archive

The "I Can't Get You Because You're In The Bike Lane" Excuse
Awarded by demonpants on December 17, 2008
The Photo Finish
Awarded by Doches on December 7, 2008
The Palm Of RSI Prevention
Awarded by Hamumu on August 23, 2008
Worlds Finest Juice Award
Awarded by PoV on August 9, 2008
The "Thanks for Epilepsy" Award
Awarded by keeyai on April 22, 2008
Amazing Pickle Sandwich
Awarded by HybridMind on April 20, 2008

Mineral Miner Post-mortem

Posted by GBGames
Thursday, September 17th, 2009 5:00 am

Ludum Dare #15 is over, and I already wrote that the results are in. Aside from placing well in Community, which shows how much I love participating in LD48, I also saw my overall ranking come in at around the 40 percentile. I was ranked #63, which sounds good, but there were a number of ties for previous rankings. Out of 144 entries, Mineral Miner was 87th. It’s much better than coming in almost dead last in the previous Ludum Dare (and not completely last only by virtue of two other entries not getting rated at all), but I’ve done better.

Let’s look back on this project and see what happened. First, let’s go over a summary of the game. Mineral Miner turned out to be a puzzle game in which you drive around a cavern in a tank, getting out to collect minerals. You can only collect one mineral at a time, so you need to drop off collected minerals in your tank to collect more. If you are near a monster lair and not inside the safety of your tank, a monster will come out and chase you. If a monster catches you, you lose. If you collect all the minerals, you can leave the level and win.

What Went Right:

  • Rapid Prototyping on Paper I took a free, online game design course at GameDesignConcepts.wordpress.com, and I was able to put use those skills to great effect. During the competition, I posted about my prototypes. With only 48 hours, it can feel painfully slow, but I iterated through the design, adding a new mechanic, trying it out, and deciding whether to keep or remove it, and then repeating until I had something I thought might be fun. Painfully slow? It took me almost no time at all. In previous LD48s, I’ve been known to add mechanics at the last minute in an attempt to make a game out of the code I was writing. This time, I knew exactly what mechanics I needed, and there were no real surprises here. The finished game ended up playing exactly how I hoped it would. Prototyping!
  • Quick ‘n Dirty Graphics I’m not terribly familiar with art tools, such as The Gimp, and so every LD48 I find myself looking up how to use it to create what ends up being ugly art for my games anyway. I decided that this time, I wouldn’t try to make anything fancy. If I have any images that need text, I will use the basic text tool instead of the script-fu that creates cool looking logos if you tweak parameters just right. The tank? A square with a dot to let you know which way is the front. The driver? A yellow circle. Hey, it worked for Pac-man. I was able to focus more of my time on making the game because I wasn’t frustrating myself with trying to create halfway decent artwork.

    Screenshot-Cavern Game

    CavernGameCollisionDetection

  • I Made Sound Effects This is my fifth Ludum Dare, and only the second time that a game I made had sound effects. Because I had a game that pretty much worked the way I expected it to, I had time for some polish. I made a list of sound effects I thought I would need, used sfxr to create the beeps and boops, and wrote the code to tie it all together. Adding sound really makes a big difference to a game, and I was glad that I could do so for this one.
  • Faster Build Times and Lighter Distributables Because I had been doing some work on my Vampire Game, work that involves using TDD from the first line of code, I also did some work on my build scripts. Going from a 10 minute build time with a distributable that is already 10+MB due to including source libraries to a build that finishes in seconds and is less than 2MB is amazing for productivity, especially as it comes down to the final hour of the competition. Everything happened so much faster, keeping me focused on game development instead of getting distracted as I waited for a build to finish. Now, it isn’t as if my builds always took 10 minutes, but going from checked out source code to a complete build would. Once the libraries were built with my old system, compiling and linking would still take some time, much longer than the time it took with my new build scripts. Plus, one of the complaints I would get from previous competitions is that my game package was so large, so that’s one complaint I did not see this time around. B-)
  • Simple AI Goes a Long Way I remember taking a few minutes to think about how I wanted the monsters to interact with the level. Should they obey the walls and other obstacles, like the player has to? If so, that would take a bit of AI programming. I don’t have much experience with AI, and I didn’t want to take the time to learn it for this LD48, so what did I do? I made the monster head towards the player every step, ignoring the environment. I could explain it away. It’s a monster. Maybe it climbs walls like crazy? The big surprise was how well it looked. Besides making it move towards the player, I also made the monster randomly move horizontally or vertically to do so. Combined with the sound effect when it comes out of its lair, the twitchy looking monster moving really fast at the player actually feels scary.

What Went Wrong:

  • Distractions I have two cats, and both of them have been featured in previous LD48s, so I won’t focus on their antics too much. My home office wasn’t in a usable state, so I was out in the kitchen or living room. The cats love distracting me from productivity, and LD#15 was no exception. The one thing I did my hardest to control was external obligations. Anytime someone wanted to make plans with me for the weekend of LD48, I would politely tell them that I was busy. And it worked! I was able to focus almost entirely on eating, sleeping, and LD48ing…except for the Chicago Fire game.

    Chicago Fire vs D.C. United

    I won tickets to the Fire vs D.C. United game, which happened to be the same weekend. They were really good tickets, too, and so I made an exception. In practical terms, I lost a good chunk of Saturday. I was able to get the game finished, but having an extra hour or two would have been good for tightening up the graphics and audio. On top of knowing that, the Fire lost, so it wasn’t even as fun a game to watch from the 2nd row as it could have been.

  • The Sound Effects Were Very Rough By far the biggest complaint from people playing my game is that the audio hurts. I was able to get audio in within the last hour of the competition, but I didn’t have time to adjust it. I knew that some of the sound effects were loud and obnoxious, especially the one that plays when you bump into walls, but I couldn’t dedicate the time to tweaking it. The deadline was looming, and I still had a few more programming tasks to complete.
  • There’s Only One Level Right before the end, I realized that I did not have a victory condition. I had programmed a way to lose if a monster caught you and also if you tried to leave the level without collecting all of the minerals, but someone will eventually collect all of them. What then? Ideally, I would have added code to load the next level, created that level, and kept going. In fact, Level 2 is in the distributed game, although it is a copy of Level 1 and there is no code that knows about it. I was thinking about taking Level 1 and breaking it up into at least three levels, with each level introducing new puzzles and getting progressively more difficult. Three doesn’t sound much better than one, but it would have made a big difference. The player would have felt that progress was being made, and the later levels could introduce the trickier ways to deal with monster lairs.
  • Level Loading Bug I could not figure it out in time for the deadline, and I still haven’t looked at it since, but every so often, the level loading code would choke on the data, bringing the game to a halt. Sometimes shutting down the game and rerunning it would work. The data came from a text file, and my code is supposed to load a single character at a time, mapping the value to a tile. Sometimes, however, it would choke because a single character variable would have a value that is two characters long. For a time, I was dedicated to fixing it, but with only 48 hours, a good chunk of which I couldn’t make use of, I decided that since it wasn’t a show-stopper, I would keep going. I really wish I could have figured out why that bug was there. Besides ruining the perceived integrity of the game, I know at least one person didn’t review it due to this crash.
  • Making a Puzzle Game I didn’t set out to make a puzzle game. I didn’t want to worry about creating a lot of content. One level might not be such a problem if the level was varied and fresh each time you played. I could have created a procedural level generator, but I never built one before. I didn’t want to spend time learning how to do so, nor did I want to spend the time tweaking the algorithm to make nicer levels even if I did end up accomplishing it. Out of all of the ideas I came up with, the game I liked the most ended up being a puzzle game, which unfortunately meant I was either going to spend a lot of time making clever levels or finish a game with hardly any levels. It ended up being the latter.

What I Learned:

  • Rapid Paper Prototypes Work My game design skills are sorely lacking, but I’ve been able to practice what I learned in the game design concepts course, and it really paid off with Mineral Miner. I’m not claiming that it’s a fantastic game, but it did rank #45 in the Fun category, putting it in the top 50%, and #27 in the Innovation category, which puts it in the top quarter! It feels good to know that the game design I prototyped early on before writing a single line of code came together, and the comments for my entry showed that people saw a lot of potential in my game. Everything I wanted to put into the game, I learned from minutes of drawing on paper and messing around with tokens. I didn’t need to have a game engine coded up to explore, discard, and introduce mechanics, which means I saved a lot of time that would otherwise have been wasted on code that would get thrown away and changed needlessly.
  • Quick ‘n Dirty Graphics and Audio Can’t Be Permanent My art and audio work was minimal and saved me a lot of time, allowing me to work quickly at getting the game play up and running. Unfortunately, my overall rating got hurt here. I was near the bottom in the Graphics category at #104 and surprisingly a little better in the Audio category at #77. I was hoping for time near the end to replace crude art and sounds with better ones, but it didn’t happen. On that note, even if it did happen, it wouldn’t be more than marginally better since I don’t have the practice and skill with my art tools. One suggestion was to use images of my prototype work, and I agree, the drawings look much nicer.
  • My Pacing Still Needs Work I felt much more confident about my entry this time around, but I still found myself finishing the game at the last minute. There’s very little time for polish when the complete game forms only an hour before the deadline! It’s especially a concern since I decided to go with quick and low-quality art in order to get the game running as quickly as possible. I probably could have set mini-deadlines for myself. 48 hours sounds like an incredibly compressed period of time to make a game, and it is, but it’s still enough time to flounder. Early on, I have two whole days to worry about everything. In the last 5 hours, I’m in crunch mode. I could stand to manage my time and prioritize my tasks much better.

If I could do LD#15 over again, I would try to manage my time better. I could have had the prototype work done much earlier on, leaving me with more time to do the actual programming and arting. I might have been able to get more levels and variety in if I didn’t waste 5 or 10 or 20 minutes at a time wondering what to do. Still, even though Mineral Miner wasn’t a winner of Ludum Dare, I felt it was a success. I designed early on paper instead of designing with hard-to-change code, and I was able to focus on making the game I felt had a chance of being fun. People said they enjoyed the game and wished there were more levels. It was a complete game, meaning that aside from the level loading bug I mentioned above, everything that happens in the game happens because I designed it that way. In 48 hours, a complete game that provided some entertainment for others is a good accomplishment.

Hey, Almost! I found a pit bug!

Posted by GBGames
Tuesday, September 1st, 2009 8:07 pm

Screenshot-CaveBounce

Are You Having Problems With the Linux Version?

Posted by GBGames
Tuesday, September 1st, 2009 6:40 am

I saw someone having trouble getting the GNU/Linux version to compile. Is anyone else having this issue? Please post any error messages here.

If you have GNU/Linux, could you try it out and see if you have trouble with it? Mineral Miner for GNU/Linux: 1.2MB

Thanks for your help!

Mineral Miner for Windows

Posted by GBGames
Monday, August 31st, 2009 6:44 pm

Check out my official entry for a link to the Win32 version of Mineral Miner. Now more of you can play it and rate it! I didn’t have time to make in game instructions nor did I have time to make things obvious, so please read the instructions on the entry page before playing.

My Time Lapse

Posted by GBGames
Sunday, August 30th, 2009 9:38 pm

Mineral Miner – Final Entry

Posted by GBGames
Sunday, August 30th, 2009 8:10 pm

CavernGameFinal

I did it! I submitted my entry just in time for the end of the competition, too! And it is the first time since LD#11 that I’ve submitted a game with audio, no matter how jarring!

You can download the GNU/Linux version here: Mineral Miner for GNU/Linux: 1.2MB

I’ll try to have a Windows port up as soon as possible. Windows version: Mineral Miner for Windows” 2.1MB

Controls:
Use the arrow keys to move around.
Press the space bar to jump into and out of the front of your tank.

Collect all the minerals and return to the exit to finish the level.
You can only hold one set of minerals at a time. Return the minerals you collected to your tank to collect more.
Watch out for monsters! If you get too close to a monster lair, a monster will come out and attack you. You’ll have to find a way to stop them from coming out.

Congratulations to everyone who participated and finished a game in 48 hours!

Ahh! Real Monsters!

Posted by GBGames
Sunday, August 30th, 2009 4:50 pm

Monsters!

They chase you, and they look better at doing so than I would have thought. Now I have to implement player death.

Time for a Snack

Posted by GBGames
Sunday, August 30th, 2009 3:39 pm

This is a bowl of popcorn.

Popcorn

LOOK AT IT!

LOOK AT IT!

I prefer my popcorn plain. It is much easier to grab a bite and continue working if I don’t feel the need to wipe the butter off of my hands every time.

Progress report:
CavernGameCollection

The driver can exit the vehicle, pick up some mineral, return it, and go back out for more. He can’t pick up more than one mineral at a time.

Oh, he also can’t leave the level without the tank.

Next: adding monsters to their lairs. For lack of time, the AI will have to be very simple. It will cheat and chase the driver through walls. Hopefully they’ll look more like monsters than spheres of a different color. B-)

Collision Detection Is In

Posted by GBGames
Sunday, August 30th, 2009 1:52 pm

CavernGameCollisionDetection

See the yellow sphere? That’s the driver of the tank, out to get those blue minerals. Both the driver and the tank respect the walls of the level now. The driver can get in and out of the tank, but only from the front. I should probably do something to make it clear to the player. If I have time, of course.

I still need to implement mineral collection, and then it is time for the monster lair to hold and release monsters. After that, a way for you to stop the monsters from coming out after the driver when he’s outside of the protection of the tank.

Then sound, then better looking graphics.

If I have time, of course. B-\

Got Any Gwapes?

Posted by GBGames
Sunday, August 30th, 2009 11:13 am

Got any gwapes?

Yes, I do.

Mmm, hmm!

I’m really close to moving the player around. He can jump in and out of the tank if he’s near it. Or, he will once I figure out how to make sure that he doesn’t jump out of the tank into a wall.

Level Layout Loading

Posted by GBGames
Sunday, August 30th, 2009 9:27 am

It’s the start of a level layout, loaded from a file!

CavernGameLevel

You can see the ground, the darker walls, the green monster lair, and the blue minerals.

I hope. Anyone out there who is slightly colorblind and can’t tell the difference between the lair and the mineral? I can fix that if it matters.

Breakfast on Day 2

Posted by GBGames
Sunday, August 30th, 2009 7:04 am

Breakfast

I made myself some scrambled eggs, sprinkled with a little pepper. Together with buttered wheat toast, a banana, and a glass of orange juice, it makes a fantastic breakfast. My compliments to the chef.

Gizmo also had some breakfast with me:

Gizmo enjoys breakfast, too

Ok, after I shower and get dressed, I’m cracking down on my game development. No more Mr. Nice Guy. Since getting this:

Screenshot-Cavern Game

I haven’t done anything, and it’s time to do so. If it took me only 20 minutes to get the tank drawn and moving around, I’m sure I can probably get the rest of the mechanics in a matter of hours. I should have time to add sound effects before the end, something I haven’t done since LD#11, and then I can update the rough graphics, time permitting.

It’s times like these that I like to think of the lyrics from the hit TV show, Perfect Strangers:

No matter what the odds are this time
Nothing’s gonna stand in my way!

Either that, or I like to listen to electronica. Either way.

Food, Fire, and Food

Posted by GBGames
Saturday, August 29th, 2009 10:05 pm

I had some time when I got to my parents’ house to pick up my father to go see the Chicago Fire game, so I decided to have some dinner:

Lemon chicken and potatoes

Lemon chicken and potatoes!

The game:
Chicago Fire vs D.C. United

Chicago Fire vs D.C. United

We had great seats. 2nd row, right at the midfield! Unfortunately, the Fire lost 1-0 to D.C. United. Whatever.

When I got home, I had a bit of comfort food: American cheese singles in Italian bread.

American cheese and Italian bread

Some Progress Is Still Progress

Posted by GBGames
Saturday, August 29th, 2009 2:47 pm

It’s not much:

Screenshot-Cavern Game

But that little box on the lower right side of the screen? It’s moving around. I figured I should have something interesting to show while the time lapse capture is running. I am now going to take a long break for the evening to watch the Chicago Fire kick D.C. United’s butt. I’ll take pictures if I find any interesting food there. B-)

Leslie Nielsen and Ludum Dare

Posted by GBGames
Saturday, August 29th, 2009 1:52 pm

automotivator picture

It’s Time for Lunch

Posted by GBGames
Saturday, August 29th, 2009 11:59 am

After getting an SDL window to open and close when I tell it to, I decided to take a break for lunch:

Peanut butter pickle sandwich

There it is. My popular famous and award-winning peanut butter and pickle sandwich. I put cinnamon on it, as well. My lovely girlfriend sent me cookies for this competition, so I had one of those. And I washed the whole thing down with apple juice.

Now to get some progress on the game development before I leave for a Chicago Fire game tonight. There are 32 hours left in the competition.

Oh, Cats

Posted by GBGames
Saturday, August 29th, 2009 11:14 am

It’s hard to type when a cat decides that NOW is the time to curl up in your lap, rubbing against your arm or face.

Diego is hamming it up

Usually Gizmo is the one who does this, but this time Diego decided to make an appearance. He really hammed it up when I got the camera out. Caption contest?

I’ve decided not to pursue Test Driven Development with this project. I can imagine that I will spend time on infrastructure more than anything, and Rule #1 of many Rule #1s for Ludum Dare is “Focus on making a game, not an engine for games.” I am still going to try to keep things focused and small, which is what TDD usually helps me with. What I won’t do is spend too much time on wrapping up hardware or libraries in testable code. I can spend hours on that alone, and I just don’t have the hours.

I just fear that the end of the contest will find me wishing I had unit tests in place because “I don’t have the hours” to not have them. B-)

I’m LD, I Prototype!

Posted by GBGames
Saturday, August 29th, 2009 9:30 am

I’m LD, and I win the fight!

After I showered, shaved, and got dressed, it was time to get down to business. Before any new code gets written, I had to make sure my ideas had a chance of being fun. First stop, paper prototypes!

Prototyping!

Here’s a close up of the first pass:
Prototype Initial Pass

I drew some walls, and I placed a few tokens down to represent minerals, the tank, and the driver. Actually, my initial pass didn’t even have walls really, but moving the tank with the driver, then moving the driver to the minerals to collect them, and then moving the minerals to the tank wasn’t very interesting by itself.

The tank, and its driver

The walls made it more interesting because now the tank can’t move past them.

After a bit, I had a more fleshed out design:

Prototype Update

Prototype Update

Mechanics and Rules

Now I have a concept of monsters, their lairs, movable boulders, and selectively destructible floors.

Hmm…now that I’ve written it out, it sounds like I’m making something that might be too ambitious for this weekend.

Oh, well. Onward!

Breakfast!

Posted by GBGames
Saturday, August 29th, 2009 7:18 am

I woke up hours later than I wanted to, but that’s what you get when you spend the first night of Ludum Dare watching videos of games and playing other ones for inspiration . B-\

I had a simple breakfast:

Part of this complete breakfast

Knowing that I want to participate in the Ludum Dare 2010 Swimsuit Calendar, I’ve been trying to lose weight. While I haven’t been pursuing my push ups routine in some time, I can still eat right. Go Lean with almond milk, 2 bananas, and a glass of good ol’ reliable orange juice start my morning right.

Ideas Based on Caverns

Posted by GBGames
Friday, August 28th, 2009 10:12 pm

I came up with a few ideas for this theme:

  • Spelunker clone
  • Dig Dug clone
  • Explore randomized caves
  • Dig out your own cavernous bunker
  • Use regular flooding in the cave in some way
  • Alien cave explorer
  • Gold/Tin/Mineral miner
  • Hide from killers who are chasing you
  • Cube farm caverns

I vaguely remembering a cave level from the NES game Thunderbirds, but I don’t want to fire it up and play through it to completion to find out if I am remembering it correctly. Maybe what I think I remember about it is better anyway. B-)

I have spent some time thinking about these ideas, and what got me most excited was one involving the driver of a tank in a cavern. Think of Teenage Mutant Ninja Turtles for the NES, when you could drive around in the van, and imagine that you’re underground, searching for important items. The tank will protect you and can destroy things, but you need to get out of the tank every so often, leaving you vulnerable yet more maneuverable.

I’ll be prototyping some of these ideas on paper to see what is the most interesting.

The Theme is Caverns

Posted by GBGames
Friday, August 28th, 2009 8:03 pm

Caverns, eh? I believe I actually voted for that one. I’m wondering if we’ll have at least one Spelunker clone in the running. It would probably be up for a Towlr award as well. B-)

I plan on starting my night by coming up with some ideas and prototyping the heck out of them. Good luck to everyone!

GL HF

Posted by GBGames
Friday, August 28th, 2009 7:50 pm

Only 10 minutes left until Ludum Dare #15! I hope everyone is ready to rock! Good luck, have fun!

Win32 build is now available

Posted by GBGames
Tuesday, April 21st, 2009 1:13 pm

I fixed the build scripts and libraries so that it can create Win32 builds again.

It’s still not much, but if you are interested in judging it for the compo, check the link at:
GBGames Presents a Very Unfinished Game: Walled Off

I do plan on finishing this project so that it has some semblance of game play. I really liked what I was going for and feel pretty down about how little I accomplished.

Time lapse

Posted by GBGames
Sunday, April 19th, 2009 8:31 pm

Until the embed code works, here is a link to the video: http://www.youtube.com/watch?v=LmcCyGY5IGg

It’s not very exciting, so I made it short.

  • Recent Comments

  • Recent Tweets (Tag: #LD48)

  • Categories

  • Meta

  • Recent Trophies

    The "Ludum Dare Entry in SOWN" Award
    Awarded by PoV on January 26, 2010
    The "Ludum Dare Entry in the IGF" Award
    Awarded by PoV on January 26, 2010
    The "Ludum Dare Entry in the IGF" Award
    Awarded by PoV on January 26, 2010
    The "Funnest Looking Animated GIF Ever" Award
    Awarded by PoV on January 26, 2010
    The "Breakfast With Awesome Thing" Award
    Awarded by PoV on January 26, 2010
    The Official SonnyBone 'RAD GAME' Award
    Awarded by SonnyBone on January 3, 2010
    The Madk Award for Excellence in Graphic Art
    Awarded by madk on January 2, 2010
    The Official SonnyBone 'RAD GAME' Award
    Awarded by SonnyBone on January 1, 2010
    The 'RAD TUNES' Award
    Awarded by SonnyBone on January 1, 2010
    The Official SonnyBone 'RAD GAME' Award
    Awarded by SonnyBone on January 1, 2010
    The "I Wish I Could Draw Like That" Award
    Awarded by SonnyBone on January 1, 2010
    The "I Would Pay Money For This" Award
    Awarded by SonnyBone on January 1, 2010

  • All posts, images, and comments are owned by their creators.