Ludum Dare 48-hour Contest
LudumDare hosted a 48-hour games
programming contest on July 14th. The turnout was surprisingly large
with over 50 completed games for submission. People used a wide variety
of development languages. While C was certainly popular, there were
games written in flash, java, basic, and of course, pygame. In the end
there were many more pygame entries than I expected, some people trying
it out with little experience. You can read more details about the
contest on the LudumDare
Here are all of the pygame entrants, along with a small report on how
python and pygame treated them. Each entry was publicly rated between
1-10 in 7 categories; Overall, Gameplay, Fun, Graphics, Sound,
Technical, and Complete. (A rating of 7-8 was the winner in any category)
Guardian Angel by Codexus
(waiting for submission)
Guardian is a miniature and fun game. You control a guardian
angel and eternally racing to reach deadly objects before
they reach your little friend.
Source & EXE
Go, Go, Scarecrow! by Pete 'ShredWheat' Shinners
This was a small game where the user plays a scarecrow and
attempts to defend a small farm from lots of birds. Initially
development went very slow for me. It wasn't until the final
hours that I was really got into my "Flying With Python" mode.
This is basically when I am getting working final code into my
game as fast as I can type it. For example, the animated skyline
and dancing scarecrow. I didn't think I'd have any time for these
sorts of things, but the code went in so fast I couldn't believe it.
I love programming like this, and I was glad I got to experience it again
contest. I also lucked out since my temporary artwork seemed to
be good enough for release (as I had no time to redo them)
One other thing that completely surprised me was the actual
performance of the game. I didn't get a chance to actually optimize
anything, and parts of the rendering were sloppy. I had figured it
would only run smoothly on something like my 1.3Ghz machine at home.
Imagine my surprise as I tested it out on my 300mhz NT4 machine at
work, it ran perfectly smooth. Score one for pygame and it's
ability to snap along. So many sprites with fairly complex behavior
zipping around the screen.
In the end I didn't get any time to do "play testing", so the
game doesn't really play like a game. Everything works well enough,
but I believe it's impossible to really lose, but it doesn't feel
like you are in control enough to keep yourself from getting assaulted.
I was disappointed in the fact I didn't have time to record my own
soundeffects on the microphone, I had been practicing my sounds the
Parrot by Ken 'MrPython' Seehof
It's got see through walls (Diablo style), and z-order sprite
sorting (so you can control which sprites are in front). I'm
also using an interesting approach to fonts. I render the font
in photoshop with the text tool plus any filters and effects I
happen to like. I could even make a woodgrain font if I wanted
to, or maybe scrabble style, etc., all with no extra programming.
I'm thinking of extending the concept to animated fonts too, using
the same approach. I'll post these in PyGame when I get a chance;
I'm behind on my web stuff in general right now (Pyx, etc.)
(ken went even further to create a full
"72-hour" version with much more polish. see
for that download.)
The later version also has some maze traversal code that makes
the camels smarter on higher levels, and makes it so that when
you click on any square, the parrot will go there on the shortest
path. And the speed potions help the game balance a lot.
Source & EXE
Rotector by Stuart 'loon' McFadden
This is an incredibly simple game of revolving the shields to protect
against the missiles being fired from the hovering spaceships. The
entry is a departure from the original concept which had to be
simplified in order to have a chance of finishing. One of more
interesting features that had to left out was the shields shrinking
when hit and recharging/growing over time, I think this would have
improved the gameplay by having the player balance out the use of the
One of the drawbacks of the Python/Pygame combo was my unfamiliarity
with some of the details of Python, as I haven't been using it that
much recently. The bug that points the missiles in the wrong direction
was caused by my misunderstanding of the Python casting, I had a
"float(int/int)" instead of a "int/float(int)", I'd wasted a lot of
time checking the trigonometry theory to see if the problem was there,
and had I known Python better I wouldn't have wasted that time.
On the upside the power of Python/Pygame allowed me to write short
scripts to automate some fairly tedious and otherwise time consuming
tasks, such as creating the background starfield, or by making an
image strip by using the transform methods.
The power of Python combined with the ease of use of Pygame allowed me
to develop a concept quickly while remaining flexible enough to try
out different 'threads' of that concept, but a better grasp of Python
would help to harness this power.
Nothack by Roger 'Denor' Ostrander
My game's based on the inverse of the typical RPG premise; normally
at some point the heroes have to go out and defeat some guardian to get
something important. In my game, you are that guardian.
I'd picked up Python for work a few months back and fell in love with
it. I'd known SDL for even longer, and while I'd had my eye on Pygame
for a while I'd never really come up with a project I wanted to do with
it. The 48 hour compeition seemed like a golden opportunity.
Going was slow at first, because I had to learn pygame - my
familiarity with SDL helped at times, but also slowed me down when I'd
have to stop and say "Okay, SDL does something this way, is it the same
in Pygame?" and then look it up.
As the competition continued, however, and I figured how to convert
usual C++/SDL idioms into Pygame idioms, the pace picked up rapidly.
I added two features of the game (selling items and using health
potions) in the last hour of the competition, for example.
Overall, I liked my Pygame experience. There were bugs in my game,
sure, but they weren't the kind of memory-trashing bugs that I'd
occasionally introduce into my C++ programs. On more than one
occasion, I was glad that I was tracking down mundane errors rather
than dealing with the agony of getting my pointers all in a row.
In the end, there's a lot of things I'd fix about the game. Selling,
for example, simply picks a random number for the value of an object
(so you could buy a health potion and sell it back for more).
Originally, my game had a plot. But it's still a playable and fun
game, so I count it as a success :)
Feebania by Geoff Howland
(waiting for submission)
Geoff was the excellent
host of the LudumDare 48-hour competition. He decided to
go with pygame for his "interactive administrative" game.
You may recognize some of Geoff's previous work in the
pygame example, Uberball.
Orbital Defense by Joe 'ReaverJoe' Lee
(definitely one of shredwheat's favorites. this uses opengl
to render a liquidy smooth and fun interface. waiting for
Warten by Illume
My game uses no graphics, only sound and keyboard input.
Description of game: aliens are after your baby. You need to escape from them. But you were blinded, and you only have your sense of hearing. Luckily you also have a stick! You can use it to avoid obstacles, danger. But also to hit aliens with grin
What went right:
Using python. Great language for fast programming. I could type some code in and run it straight away, without compiling. With ipython there is argument completion, and all that other goodness. I had one python session open from the start to the finish of the comp. My game was running in there the whole time.
Using pygame. Quite easy to use. Although I wish there was support for playing more than one .ogg/.mp3 at a time(an upcomming feature I hear). Even though there are no graphics in my game I used a number of its image features for my map loading.
What went wrong:
Not knowing pygame sound enough. Before this project I'd never used pygame sound that much. So I didn't know what was possible. Which lead me to waste a bit of time exploring. Of course exploring is half the fun in programming so it was fun, just time wasting