Robo Ramblers's Time log
Time Log For Robo Ramblers
Third 48-Hour Game Development Competition
Introduction
This is a diary of my progress as I attempt to develop a game for the Third 48-Hour Game Programming Competition at Ludum Dare (http://www.ludumdare.com). This game will be written in C/C++ and developed for a Windows platform using DirectX 7.
I'm using a pre-coded game framework (posted at http://www.ludumdare.com/user/598/game_framework.zip) as a starting point for the game. The framework creates a main window, implements simple file logging, and provides wrapper functions for DirectDraw, DirectInput, and DirectSound.
All times are GMT-5.
Friday - 04 April 2003
21:15 The game theme (just announced) is "Preparation - Set it up, let it go." Thinking ...
21:30 Came up with an idea that I'm excited about. The game screen is essentially a 2D top-down maze. The object is to get a given number of creatures through the maze from a single starting point to one of the exit points. You do this by placing "markers" to instruct the creatures what route to take through the maze. Once you place your markers, you release the creatures and watch them follow your markers. If you've set everything up right, they should all reach the exit point(s) without running into any barriers.
The maze will contain barriers that can only be passed under certain conditions. For example, perhaps a gate will only let creatures of a certain color through. In this case, you must first direct your creatures to a "paint node" that will paint them the correct color to get through the gate.
My plan for the next few hours is to first add some more code to my basic game framework, then nail down the specific components of the game and the gameplay mechanics before starting on the artwork.
21:47 Came up with a name for the game: Robo Ramblers. The creatures in the game will be robots who can't navigate for themselves.
22:27 Finished updating my game framework. I made some changes to the Video and Input modules and added the System and Surface modules. The System module performs intialization / de-initialization and updates the game each cycle. The Surface module manages general-purpose DirectDraw surfaces.
Now starting to work on the game design.
23:58 I've decided to implement the maze as a tile-based map. This will facilitate the loading of mazes from data files. Each tile will be 32 X 32 pixels. I've already made a few of the tiles - those for the floor, walls, basic directional markers, and gate switches.
Going to take a break to watch Star Trek: Voyager on TV. :)
Saturday - 05 April 2003
02:54 I've finished most of the tiles for the game. I used the tiles to make a test maze in Microsoft Paint just to see how it would look in the game. Here's the test maze with the directional markers already in place:
04:10 I've finished all the game tiles and the robot sprites. I'm not fully satisfied with the look of the robots, but since I've only got a few hours to finish this game they'll have to do. Maybe I can go back and redo the robots if I have time. Here's what they look like:
The only artwork left to do is the in-game cursor and title screen stuff. I think I'll take a break before I do anything else.
06:40 Got all game graphics done. Here's the title graphic:
Now I can concentrate on coding the game. Starting on that now.
07:15 The game now displays a simple title screen on start up.
08:00 Getting away from the computer awhile to go get breakfast. Will probably work on game logic on paper while I'm out.
11:50 Back from breakfast and a morning of shopping. I was able to work out some coding plans and the game logic over breakfast. Here's my plan for the next several hours:
Write code for loading game graphics at startup, and releasing game graphics at shutdown.
Write code to load a map (maze level) from a text file. Make a sample maze data file to test.
Write code to display the map and a sidebar area where the available markers will be listed.
Implement game set-up logic - enable player to place markers in the maze using keyboard commands.
Implement game play logic - enable robots to navigate the maze:
Insertion of randomly-colored robots at the starting point.
Collision detection with walls, gates, and other robots.
Detection of markers, paint nodes, and maze exits.
Removing robots from the maze at the exit points.
Detection of win condition.
The game will be played in two phases: the set-up phase and the "go" phase. Here's the pseudocode for the set-up phase (to be performed each cycle):
Clear out the back buffer.
Draw the maze.
Draw the side bar & game text.
Process input events.
And here's the pseudocode for the "go" phase (to be performed each cycle):
Clear out the back buffer.
Draw the maze.
Display game text.
Are all the robots in the maze? If not, see if a robot can be inserted at the starting point.
Check to see if robots are on a marker, paint node, or exit point. If so, update them accordingly.
Move robots - do collision detection with walls, gates, and other robots.
Draw the robots.
Well, I'm gonna see how much coding I can get done this afternoon.
12:45 The game now loads all graphics at startup, and releases them at shutdown.
14:24 Woohoo! The game now loads a maze map and displays it correctly.
15:47 Here's the first in-game screenshot. This is at the beginning of the set-up phase of the game.
16:00 Taking a break - going out to get some dinner.
19:25 Back from my break. Had a short nap. Feel good and ready to work for several hours more.
Sunday - 06 April 2003
01:15 Still going. The last few hours have been the toughest so far. Encountered a lot of bugs that took a lot of time to fix. For a while I thought that I had hopelessly fouled up the source code, but I finally managed to fix everything and get the set-up phase of the game working. It's not working perfectly - there's some minor glitches with the mouse control - but it's still playable.
The source code is turning out to be a mess, and it's because I'm trying to code things as quickly as I can - just hacking things up - without regard to good programming practice. When this competition is over, I plan to go back and clean up the source code before doing any further work on this project.
Hopefully the next part of this project - getting the robots working - won't be as hard as the last few hours were.
02:37 I've made a little progress with the "go" phase of the game. The game now draws the first robot at the starting point. Have yet to do code to move and update the robot. I'll work on this later. Right now I've got to go to bed. My brain is turning to mush.
09:50 Back to work on the game. It looks kinda 50-50 whether or not I'll be able to finish by the deadline. I'll keep pluggin away until it becomes obvious that I won't finish in time.
10:47 I've written the code for updating the robots, but it's not working. The main problem is that the game code has become so convoluted that it's gonna be a Herculian task to sort out all the bugs. So, with some reluctance, I've decided to drop out of the competition.
I'm not really disappointed, because this has been a fun experience and I've learned from it.
This exercize has reinforced to me the importance of well-designed code. I coded much of this game on the fly without much forethought to design, and it's now - late in the project - that I'm paying the price for it. If I'd reserved more time at the beginning of the project for code design, perhaps I could've finished. The main reason I didn't plan my code design first was that I was afraid I'd spend too much time designing and not have enough time to finish the code. I guess it's a balancing act.
I've also gained a new appreciation for what professional game developers go through during their crunch times. The past day or so has been fun but intense. I wouldn't want to keep up this level of coding intensity for weeks at a time.
I'm still planning to finish Robo Ramblers, but I'll be taking my time - starting over and doing it right. This will also allow me to throw in all the features that had occurred to me at the beginning of the competition but got discarded due to lack of time - features such as teleporters, water traps, crates, math-oriented puzzle items, etc. Anyone interested in following this project should check my home site http://lonecoyote.home.mindspring.com for updates.
I may write a postmortem detailing my thoughts and lessons learned during this experience, but right now I'm just gonna go out and enjoy the rest of this day.
Good luck to all my fellow contestants. I look forward to playing your games. See ya at the next competition.
LoneCoyote, signing off.
Copyright © 2003 Michael Springfield. All rights reserved.
Read the site terms.