Ludum Dare 48-Hour Game Development Contest Timelog

by Michael "LoneCoyote" Springfield

INTRO

Well, I've decided to enter the Ludum Dare 48-Hour contest again this year. This will be my second LD48 contest. I failed to finish last year's contest entry in time, and I'm not sure I'll be able to finish this year's entry due to a lot of other commitments I have during the weekend of the contest. Still, it's hard to resist joining in the fun of the contest, so I'll do what I can during what time I can spare for it. Who knows? If I can come up with a simple enough idea I might be able to crank it out in a few hours.

FRIDAY - 16 APRIL 2004

10:15pm EDT Just arrived home and I'm ready to get settled in for a few hours of programming. Checked the Ludum Dare website and saw that the theme is: Infection. I've got a few ideas perculating, but right now the game design is rather vague. I want to come up with something simple, because I will probably be able to devote only 20 or so hours to working on the game.

I plan to spend the next few hours working on the basic framework for the game - writing code to handle video, input, bitmap loading, and so on. Hopefully, I'll get a clearer picture of what kind of game I want to make as the evening wears on.

So, I'm going to make some coffee, put on some music, and fire up Visual C++. Back in a while.

10:45pm EDT Here's the basic idea for my game: The action will take place in a maze-like environment populated by robots. At the beginning of a round, a single robot infected with a computer virus is introduced into the maze. It wanders around looking for other robots to infect. (It infects other robots on contact.) The player controls a "guardian character" charged with the task of protecting the uninfected robots and stopping the spread of the infection by shooting (and destroying) the infected robots. The player's character must also avoid coming in contact with an infected robot. Scoring might be based on how many robots the player is able to save from infection.

SATURDAY - 17 APRIL 2004

4:00am EDT My progress has been much slower than I anticipated, but I'm having fun. Here's what I've gotten done so far:

  • Win32 module -- main window creation, event loop, Windows message handling.
  • Game module -- top-level functions for initializing, running, and shutting down the game.
  • Log module -- implements a simple log file - useful for debugging.
  • Video module -- provides some wrapper functions for DirectDraw.
  • Image module -- provides functions for bitmap (sprite) management.

Still have some work to do on the Image and Video modules. Will also need to implement a module for handling keyboard input. Then I'll begin creating the game art and implementing the game mechanics. Probably won't have time to implement sound.

I'm calling it a night. I'm off to bed for some sleep.

11:15am EDT I've changed the design of the game (now called Infectrons) a little bit. Instead of robots, the game world is populated by these blue cell-like thingys. At the start of the game, a single infectron is introduced into the world and begins to roam around. If the infectron contacts a cell, it turns the cell into an infectron. The player controls a disinfectron, which can turn infectrons back into normal blue cells on contact. The goal is to disinfect the game world.

This morning I created the title screen for the game (see screenshots page) that contains some basic instructions for playing the game. I've also created all the bitmaps I need for the game. Later on today I will work on coding the actual game mechanics.

Since I'm going to be seriously lacking for time to work on this game, I've streamlined the game code I worked on last night - cut out some of the "bells and whistles" I'd originally planned to implement. The game code is now in two source files: one for the game and one for managing the log file. I'm thinking about ditching DirectX and doing the game just using Windows GDI. I'll may do a DirectX version if I have time, or I may just go with SDL instead.

SUNDAY - 18 APRIL 2004

2:10am EDT I've just spent about four hours working on the game, and things are going well. I decided to stick with DirectX, but I'm only using it for graphics/video stuff (that is, I'm only using DirectDraw). I've managed to get part of the game working. So far, the game does the following things:

  • Does game initialization (starts the log file, initializes DirectDraw, loads bitmaps).
  • Displays the title screen on start up.
  • Initializes the first level of the game, which consists of 10 cells, 1 infectron, and the single disinfectron that the player controls.
  • Runs an incomplete version of the first level of the game. The cells and infectron glide smoothly across the screen, and when they reach the edge they wraparound to the other side of the screen. The player can move the disinfectron around using the arrow keys.
  • Shuts everything down when the ESC key is pressed.

I put up a new screenshot of a game in progress.

My next step is to implement collision detection among the cells, infectrons, and the disinfectron. Cells and infectrons will bounce off each other when they collide. Also, any cell that collides with an infectron will get changed into an infectron, and any infectron that collides with the disinfectron will get changed back into a cell.

I also need to do some work on how keyboard input is processed. Right now, the disinfectron can move up, down, left, and right, but not diagonally. I want the game to be able to handle two key presses simultaneously. For example, the player should be able to press both the up and right keys to move the disinfectron along a diagonal vector.

I'm also planning that the game levels get progressively harder. The first level starts with 10 cells and one infectron. Each successive level adds two more cells to the mix. For example, level six will begin with 30 cells. I may also increase the starting number of infectrons every few levels.

Looks like I might be able to finish this game in time! So far, I estimate that I've put in about 14 hours on the project.

Well, that's all for tonight. I'm going to bed.

12:45pm EDT The game is now playable! Got keyboard control and collision detection working. Collision detection is kind of weird at times - causing the cells to freeze and stick to one another - but most of the time it works. I still need to do some fine-tuning to the game - work out a few minor bugs and make improvements to the game balance. The game starts out pretty easy but can get very difficult in a hurry. I'm trying to figure out how to keep the game from degenerating into frustrating sessions of chasing infectrons around without catching them.

I also would like to add a few more features, such as displaying the current level and elapsed time. Maybe work out some kind of scoring system based on the time it takes for the player to disinfect a level.

4:25pm EDT I've spent about four hours working on the game this afternoon, and that's all the time I can spare on it. It's finished, but it still could use a lot more work to make it better balanced and fun to play. As it is now, it's not very fun. But at least it's playable, and that was my main goal for this contest, especially since I failed to complete last year's entry.

The executable and source code for the game is now available from the downloads page.

The game tends to be ridiculously easy during the first few levels. Then around level 15 it starts to get challenging. When a number of infectrons appear on the screen, the game starts getting a bit too difficult. So, there's a lot of game balancing that need's to be done.

The infectrons now actively seek out the blue cells. When a blue cell is turned into an infectron, it will continue on it course for a short while before it begins to seek out other blue cells.

I've noticed that collision detection sometimes doesn't work right. The game is kinda buggy, so expect some occasional strange behavior.

So, I'm done. I estimate that I've spent a total of 18.5 hours making the game. I'll probably write up a postmortem later.

I look forward to playing some of the other entries. See ya next time!

Source: lonecoyote.home.mindspring.com archive

Found a bug?
Tell us on Discord