About d_m

Roguelike developer who's trying to break out of his (self-imposed) screen/curses/ASCII shell with Ludum Dare.

You can download Angband at http://rephial.org, you can hear my band Wormrider at http://music.wormrider.com and you can read my random thoughts at http://twitter.com/#!/d6


Ludum Dare 21
Ludum Dare 20

d_m's Trophies

d_m's Archive

LD25 au Montréal

Posted by
Thursday, December 6th, 2012 10:48 pm

This will be my third Ludum Dare, and hopefully my best! I’m now living in Montréal (and not yet speaking French very well) but am interesting in meeting other local people who are planning to enter.

Not sure what tools I will be using. Previously I’ve used Python + Pygame. This time I’m interested in using Scala + Slick2D, but that may be too much of a stretch since I’m still pretty new to that framework. I guess it will depend on the type of game. I’m also interested in trying HTML5 Canvas + JS but again it would be a big learning experience.

See you all next weekend!

P.S. There’s a chance that my wife and I will make a team for the Jam instead! :)

Red Rover Retrospective

Posted by
Wednesday, August 24th, 2011 5:41 pm

So, now that things have calmed down (a little bit) I thought I’d take a moment to look back on how things went for me during this LD, how the game turned out, and what I learned.


First of all, I thought this was a really fun Ludum Dare. While some people were a little upset by the large amount of attention Notch got, I thought the fact that it raised the profile of LD was fun, and I think it got people aiming a little higher (in some cases) than they would have otherwise. Also, I really liked the theme. Even though it seems so open-ended and easy, the theme is what got me into this contest. I didn’t think I was going to do it, then going to sleep Friday night I had the idea for the game, woke up on Saturday and just made a decision to start working on it. I didn’t commit as many hours as last time, which actually ended up being good I think.

The Game: Red Rover

The game itself turned out a lot better than my first. Whereas the first game had really big (over-complicated?) ideas and conceits this one was very simple. A rover driving around a lonely planet, exploring and hoping to escape its fate. Right away I knew that I needed:

  1. An overhead rover sprite that could rotate 360 degrees.
  2. Tracks in the sand to show where the rover had been.
  3. A world that wrapped (kind of simulating a small planet).
  4. An obvious but boring mission (collecting rocks) with the secret mission of escaping boredom, the surface, the planet, etc.
  5. Contrasting sensor read outs with internal thoughts and feelings.

I won’t go into too much detail to avoid spoiling the game, but I do want to point out that it’s not just about collecting rocks.


I spent most of Saturday working on getting the “feel” of the game right, including the graphics, tracks, terrain, etc. I’m pretty proud of the graphical look, even if it straddles a line between too retro (very lo-res graphics) and not retro enough (the graphics are up-sampled, and rotation/wheel tracks are done at higher-resolution). I took a break to go to an art show in the evening, and then to play cards with some friends.

Sunday I woke up and started on the plot stuff. While I definitely ran out of time on some of these things, I was able to hit all my major objectives, commit about 3 hours to writing music (I ended up not having time to write music last time) and do enough testing that things were stable and worked. It did get a bit stressful toward the deadline, and I wish I had taken a bit more time to write in-game instructions/narration. But I did get the game released on time, in a working state.


After I started play testing other people’s games I realized that maybe an introspective, open-ended exploration game with an obvious linear goal and a bunch of secret interesting goals may not be the best design for Ludum Dare. It doesn’t have a lot of the gameplay stuff people might expect (levels, bullets, power-ups, challenge, death and retry, level design, etc) and it also might seem like a really boring, simple game when in fact there is some added depth there. I tried to add to the game description page and README to clue people in to the fact that the game intentionally seemed simple, but might have more to it, but I’m not sure how well that has worked.

Another thing I learned is that I need to somehow get a copy of Windows running somewhere, even just in a VM. I failed to package my game for Windows which meant tons of people couldn’t play it. Someone named ‘jplur’ kindly created a package, although it turns out that some people had problems, and ‘Jiggawatt’ (a.k.a. ‘ointment’) ended up creating a working one using py2exe. Without these helpful souls I probably would have far fewer players/reviewers, so I’m definitely grateful to them. In that vein, if someone has a python game that they want packaged for Mac/Linux I’d be happy to try to help!

That said, I have gotten a lot of nice feedback, especially on the music and look-and-feel, both of which I felt like I lavished time on. While I will probably aim a little bit higher next time I do like the fact that I created a game that feels pretty polished and playable, even if it has retro conceits and is kind of atypical. I doubt I am a serious contender in the overall category, but I hope to do well in the audio one.

Final Thoughts

To those who felt like they ended up with a lot of bugs or a game that wasn’t very playable, I would encourage them to boil the game down to its simplest systems (e.g. the “feel” of jumping, catapault physics, etc) and spend a lot of time early on making sure it feels good. Last time I was fixing weird bugs and trying to smooth out feel right at the end, and I never really got there. This time I put more effort into those things up front and it showed. Even if your game only has one level, if that level is fun to play and feels right, people will enjoy it.

Thanks to everyone who participated in Ludum Dare, chatted with me on IRC, reviewed games, and especially those who offered packaging advice and helped package the game. I hope to release a 0.2 version with more involved plot/story/secrets, maybe some sounds, and better instructions.

Take care, and dare to Ludum Dare! :)

Waiting to submit

Posted by
Sunday, August 21st, 2011 7:19 pm

So, I did finish “Red Rover” and it’s in a much better state than my first LD submission was. I even have a title screen that explains keybindings!

Not sure when I’ll be able to get the submission page working, but the game is available here: http://plastic-idolatry.com/redrover-0.1.zip

I guess I’m in after all!

Posted by
Sunday, August 21st, 2011 8:29 am

So, I didn’t think I would have time to do Ludum Dare this weekend, but I ended up starting anyway.

I’m making a game called Red Rover… it’s about a robot planet explorer. You can pick up rocks to get points, explore the planet, etc. That’s all I want to say about the plot for now. I’m using Python + Pygame (again)… but I think I will fare a bit better than I did last time.

At this point I have the level/terrain/movement code all done as well as most of the graphics!

screenshot of Red Rover game

Yet to do:

Caption/Score display
Title screen
Some secret things I can’t talk about :)

Hopefully I’ll make it!

Reflections on LD48

Posted by
Sunday, May 1st, 2011 10:42 pm

So, this was the first year I participated in Ludum Dare. I had an idea for a dungeon relay race, where adventurers were passing gear back and forth to beat the clock. Coming from Angband, I was thinking about this in a turn-based, grid kind of way with procedurally-generated levels, etc. I thought I might try to do some graphics though, to make the game more accessible to people. I was kind of nervous about being able to finish in the time, especially since my idea for the game kept expanding outward.

48 hours later, I managed to (barely) finish the game (Quengon: Dungeon Relay), or at least, the parts of it I could get done in 48 hours. Toward the end I started feeling a lot of pressure and disappointment: I had planned to create a bunch of different types of monsters, but ended up only having orange goblins because I didn’t have time to draw more. I had a lot of different items that I wanted to make but failed to, and there were a lot of basic things I should have finished that I didn’t (the most egregious was not rotating weapons depending on what direction the elf attacks from). Leaving the sound effects and music to the last minute meant that the sound effects aren’t great and there is no music. And I failed to create a lot of in-game content to help players understand what’s going on.

That said, I did manage to finish the game (even with a 9 hour break to play a show), and the game seems to work pretty well (I haven’t seen any crashes yet). Given that I came in with very little preparation (a few PCG algorithms taken from Angband and Pygame) and that I don’t have any experience doing programming with SDL/Pygame I was glad that I managed to get something built. Also, I was really worried about the art, but actually I think my pixel art ended up being OK. I’m already thinking about “the next one” and while I don’t think my game will win any awards I think it’s something people will be able to play (assuming I can figure out how to package it for Windows/Mac tomorrow).

In retrospect I would have been better off with out using PCG to generate dungeon levels, since most players don’t see that many anyway. I could have used that time to place items and layouts in a more interesting and narrative way. Tons of little things I have heard over the years (don’t use square tiles, don’t make your tile the base unit, etc) were born out in my experience. I made sure to get 7-8 hours of sleep a night, although again I wish I had carved a few hours out of that.

My biggest regret is not leaving an hour for playtesting at the end. I ended up making the 7 items and 3 power ups in the game a bit too rare, which means that the decision of which items to pass on (or not), which is supposed to be a central piece of the game, kind of gets side-lined. I may try to do a post-LD release where I create a splash, an instructions page, a death screen, fix the sounds and fix the rarities.

Thanks to everyone who helped put this on and participated, especially those hanging out on IRC!

Procedural Content Generation Algorithms/Code Disclosure

Posted by
Friday, April 29th, 2011 5:53 pm

With LD nearing, I figured I should disclose some of the source algorithms I might use. Basically, I’ve written a lot of procedural generation routines for Angband (where I’m a dev, and which is open-source) and I might reuse some of those algorithms. Angband is in C and I will be using Python so I won’t be taking any code directly, but I just wanted to let people know that level generation code, etc, is available.

I’ve also ported some name-generation code over into Python and have the source here for anyone to use. It’s pretty straight-forward… you give it a big list of “appropriate names” and it builds a Markov chain to randomly generate new names which “probably” have the same feel. It’s pretty nice. The code is at http://plastic-idolatry.com/ludum/namer.tgz and it’s public domain.

If I get any more code ported to Python before the contest starts I will post it here also (and in fact, I would be happy to share any procedural generation stuff I port even after the contest has started).

Good luck everybody!

EDIT: I also ported some labyrinth generating code, available at http://plastic-idolatry.com/ludum/maze.tgz. Got it finished just under the gun! (9:50 Eastern US time)

Roguelike in 48 hours?

Posted by
Tuesday, April 26th, 2011 1:54 pm

This will be my first Ludum Dare. I will be trying to figure out the graphics side of things as I go… I will probably use Python as I know it pretty well and it’s (somewhat) cross-platform. If I need nice graphics I may use Pygame (because it seems relatively friendly) although I’m not totally decided. Do people have other suggestions? Pyglet? Love? Something with SDL?

I have some experience developing roguelike games (one of the current developers of Angband), so depending on the theme I may try to hack one of those together quickly. Or I might try to write a text adventure, or something totally different…

Good luck everyone!

[cache: storing page]