Sphere Postmortem

This article describes how my entry in the Third Ludum Dare 48-hour Game Programming Competition came to be. The compo took place from April 5th 4:00 AM to April 7th 4:00 AM (CET).

Well, I missed the second 48-hour Game Programming Competition, but despite the low ranking of the first try (16th if I recall correctly), I decided to give it another shot this third time around. Hey, it's not about winning, but about having a good time, right? WRONG!! This time around I was determined to make a better, more playable game, by doing the following:

  • Not focussing on graphics quality.
  • Not 'wasting' time doing sound.
  • Allocating a lot of time for level-design and play-testing.
  • Creating a game that has the 'fun' embedded in the levels, not in AI.
  • Not creating a two-player game (see my previous attempt).

Preparation??

With those premises stated, let's take a look at the theme. This time around we had a pain-in-the-ass theme called 'Preparation - Set it up and let it go'. Obviously a 'The Incredible Machine'-like game would fit this category quite well. A problem with this kind of game is that the UI-heavy setup phase and running/tweaking the simulation takes a lot of work. And it's been done before of course. Some more ideas from the log: (sic)

  • give instructions to autonomous something (using lua??) according to events??
  • limit time to setup things
  • blow shit up (blast corps)? pass the fire/frame along?
  • water flow -> maybe even mingle different kinds of water -> stay ahead of the water
  • buid stuff
  • prepare against break-in or some other kind of attack
  • nuke a site first, then send something through it
  • ode to ODE

I honestly can't remember what I had in mind for half of them. I chose 'Ode to ODE' because I wanted to learn more about physics and had a vague idea about a midget-golf-like game.

Tools

The following tools were used this time around:

  • Microsoft Visual C++ 6.0
  • Microsoft DirectX 9: DirectGraphics, DirectX AppWizard, DirectInput
  • Discreet 3ds max 4
  • JASC Software Paint Shop Pro 6
  • ODE (Open Dynamics Engine) (a physics engine)
  • Lua 5 pre-release (an embeddable scripting language)

Time table

I really was too busy pounding away at the code to keep up with the log, especially at the end. Anyway, here's what I could salvage:

Apr 5, 04:00 Theme: preparation

Apr 5, 04:50 Game: scripted trigger-controlled environment stuff with some real-time action

Apr 5, 04:59 Started typing first code

Apr 5, 05:20 Have graphics, now start da ODE physics

Apr 5, 06:30 Woo 'dem physics are hard

Apr 5, 07:22 Got a falling sphere in ODE

Apr 5, 10:24 Got some shut-eye

Apr 6, 01:30 Sleep

Apr 6, 07:00 Awoke, showered

Apr 6, 15:23 totally forgot the log, now doing levels / textures

(and after that I forgot the log again :-)

All in all I guess I spent 7 hours eating and sleeping and the remaining 41 hours working like a madman. You can imagine I was exhausted when I finally went to sleep at 6 AM on Monday.

Stuff that went right

1. Focus on gameplay

I actually had fun playing the game myself. Designing the levels was a chore, but made for a game that's actually entertaining for more than 10 minutes. I playtested the levels and ordered them in ascending order according to the average number of tries I needed to complete a level. I also guarded for the 'expert player' effect: making the first levels too hard because otherwise they'll be boring for you. They won't be boring for novice players. I think there's a lot of room still for improvement and extension of the concept.

2. The use of ODE and Lua

I had never anticipated I could integrate Lua and ODE into the code that fast. Granted, I have experience with Lua, but even then things went extremely smooth. ODE was much more difficult, but in the end the realistic physics turned out to be the main attraction of the game. Lua enabled me to quickly play around with different kinds of levels and concepts.

3. Completeness

Despite having no sound, I think the game is pretty complete (eleven levels and one tutorial).

Stuff that went wrong

1. DirectX 9 not widespread

Almost everyone I know had to install DirectX 9 prior to playing my game. This caused truckloads of problems of course (drivers, crashes, 3D devices disappearing and whatnot). This problem will probably solve itself over the next few months.

2. Control

I really would have wanted to have some more direct control over the ball (more like Super Monkey Ball maybe), but that would have been kind of in violation with the theme.

Curious little details

  • I decided to create an installer and uninstaller for the game. This caused quite a batch of mixed reactions: most people that competed in the 48h compo really disliked it, but 'normal' people really enjoy the ease of setting up the game.
  • DirectInput Action Mappings: stay the hell away from this! The auto-generated key/mouse/joystick setup dialog must be one of the most ugliest and clumsiest in gaming history (sorry Microsoft). Otherwise DX9 just got better.

Source: nebula.student.utwente.nl archive

Found a bug?
Tell us on Discord