Category Archives: Uncategorized

How to make a malicious random number generator

Nethack players, really experienced Nethack players, know that nothing is more cruel and unusual than the Random Number Generator. It is capricious and can either grant you great powers and wisdom (I remember being astonished at finding Grayswandir on level 4 of the Dungeons) , or can instantly kill you (“An endless stream of snakes flows from the fountain! The water moccasin hits… you die…”)

As part of our ongoing work with beta testing, we discovered that users never really felt compelled or pushed forward to keep moving, or to find some sort of pace. We looked at this, and decided that our best approach would be to implement something similar to the Director system that Valve uses for Left 4 Dead. For those of you who haven’t seen this, L4D measures player “experience intensity”, and then spawns mobs or allows for cooldowns based on this information. It’s crude, but it works. We therefore decided to try lifting it, with reasonable success. If your gameplay experience is not intense enough – i.e. you’re not Having Fun, the game will ratchet up the monster spawns in your area. If you’re having too much Fun, the game will give you a breather. We also track reward in the same manner; we will spawn more rewards if you haven’t been rewarded frequently enough, or we wlil spawn a really big reward. Similarily, if you’ve been getting too many items the item supply may dry up a little.

So, yes. We really *do* have a random number generator that cares. Is this entirely in line with the Roguelike philosophy? Maybe, maybe not. At the heart of the game the spawns are still random. We simply generate the contents of a room only when it first becomes visible and bias how many items/how many monsters are in a given room, as well as the spawning of other things (new monsters spawned post level creation, quests, et cetera.) So far it’s working out well and it will be interesting to see how we proceed from here.

Posted in Uncategorized | Leave a comment


Some quickies:

– Dredmor 0.8: I have three bugs remaining to get to 0.8, and 17 in total. This is the first time I’ve been *near* the single digits camp in over a month. Exciting.

– We got a lot of web traffic recently due to David’s Goblin Camp article. It looks like it got picked up by Something Awful, a Russian website of some sort, and also the Temple of the Roguelike, who were kind enough to give us a plug on Twitter. They describe Dredmor as follows: “Dungeons of Dredmor is an upcoming graphical Roguelike with impressive style/video trailers. One to watch for!” Thanks for the praise, guys. We’ll send you some exclusive screenshots or something. This reminds me, I need to make another video trailer.

I’m particularily pleased, actually, that some of the SA folks thought we were worth checking out. I can’t say quite how much of Dredmor has been inspired by Boatmurdered, but I think that we can directly blame Boatmurdered for the fact that you can find rooms with names like “The Theatre of Cake”, as well as the ridiculous randomly generated artifact system. At one point we had runic names for artifacts too, but that… seemed to fall by the wayside a little. I’m not sure what happened to that. I might re-enable it. More interestingly, I remember the original Jeff K. nonsense from back in 2000 when I was working for Loki Software. So, yeah. Looking forward to the first Dredmor Let’s Play.

{ read this article }

Posted in Uncategorized | 3 Comments

Talk, Talk, Talk

I am giving a talk on the material that I wrote about for Game Developer Magazine – plus expanded content! – tomorrow (today, I suppose – Thursday, whatever day that is)  at the Vancouver Erlang Meetup Group meeting. Page here.


Concurrency is a thorn in the backside of modern game programming. Not only do we have to consider the interaction of concurrent processes across multiple CPU cores, but modern game development involves looking at concurrent interactions between the CPU and one or more GPUs, where parallelization and scheduling is not necessarily something that we can control. As a result, the modern game developer not only needs to wrap his brain around concurrency, but he must deal with additional issues such as vectorization and how to deal with a processor that wants to pretend that everything in the entire world is a triangle. Join Nicholas for a riveting, exciting, and horrifying look at the state of the art in concurrent thought, see why everybody might start doing functional programming in the next five years, and understand why game developers across the world are desperately ripping off the good ideas from Erlang and haphazardly reimplementing them in C++.

Hope to see you there!

Posted in Uncategorized | Leave a comment


So this week has a been big for the website back-end, and my beautiful console.  Wordpress 3.0 came out and has been promptly installed.  I’m pretty excited about a couple of the features; the most notable of which is the ability to generate the navigation menu in the admin panel.  This will help me from having to make hard edits, something I LOVE!

{ read this article }

Posted in Uncategorized | Leave a comment

A Typical Evening in the Dungeons of Dredmor

We are hard at work getting a version of Dredmor (beta 0.4 for those of you keeping track at home) in fighting shape for entry in the Penny Arcade Expo PAX 10 competition. I think it’s looking pretty good. AT the very least, the judges will never have seen anything like it. (Hi, judges!)

In the process of doing this, we went through and did some playtesting this evening. Daniel and I decided to start the game with starting skills, and we’d see who would get the furthest down into the dungeon before we were slaughtered. I will let Daniel discuss his experiences (he beat me), but I had a pretty good early head start owing to the discovery on level 1 (the Crypts) of a sword that shot fireballs and put enemies to sleep. Both at once. That helped me carve my way through the dungeon, leaving a trail of flaming, spurting, asleep monster corpses in my wake, until I encountered a monster zoo on the Moonbase level. Panic and chaos ensued; heck, I thought to myself, my default weapon instantly fireballs anything around me (including myself), how bad can it be? Well, pretty bad.

I made my way to the lower corner of the dungeon (“The Oozing Hole of Lusts” – nobody’s beating that room name any time soon), working my way through a pile of Blobbies, Octos, Diggles, and Djinns. A few Deth monsters – scary looking grim reaper things with scythes – menaced me, and soon I realized that having cleared out much of the room, I was rapidly running out of hit points. Perhaps this was because my weapon tended to hit me as well as the monsters. And now Deths – who cast spells – had started to notice my presence. Trouble! I quickly decided to use some unused skill points and maybe find a skill in my skill tree that could get me out of here so I could regroup. I picked the Frenetic Teleportation spell – an early air spell that I had accumulated enough experience points to learn. I clicked – and ended up landing right next to a Zomby, who one-hit KO’ed me.

RIP Mordred, the Axemaster. His tombstone read, “He Crushed Like a Vomit.”

I am satisfied with this playthrough, in that it represents some of my goals (and the team’s goals, for that matter) with Dredmor. I had a unique experience, I enjoyed myself, and yet I still died because of my own hubris and stupidity. It makes for a quick, nasty little amusing story to tell you so that you can enjoy my experience. Next time I play the game, it will be different. What’s not to like?

Posted in Uncategorized | Leave a comment

Joga Bonito…

…morra horrivelmente (translation: play beautifully, die horribly). In other words, I’m really excited about the world cup, and wanted to find some way of injecting that in somewhere.  (My money is on Portugal, but if they fall over too much I’m jumping ship.)

I have been a huge pain in the ass to David and Nick over the last day or so.

{ read this article }

Posted in Uncategorized | Leave a comment

The Joys of OS X Development, Part II

The scene: 1996. Apple has just purchased NeXT, and programmers huddle together, cursing the devil-spawned end user. “Alas,” says one, “our mighty empire has fallen. Know now that our legacy shall live on, as a curse passed to all mankind.”

“What curse shall this be?” asks his brethren. “What artifact of our dark majesty shall we use to smite our enemies and leave them fearing our almighty glories?”

“Why,” replies the first programmer, “it shall be known as… the OS X frameworks mechanism!” All tremble.

{ read this article }

Posted in Uncategorized | Tagged , , ,
Leave a comment

The Joys of OS X Development (or: how I learned to stop worrying and love XCode)

Dear Steve Jobs:

It’s nice when a topic for a blog rant presents itself, and you don’t have to go finding it.

{ read this article }

Posted in Uncategorized | Leave a comment