Sunday, 21 December 2008

Bad Dungeon Design

Apologies for the lack of updates recently, this has gotten in the way.

There has been a bit of a hooplah recently over a new Dungeon Generation algorithm released into the public domain over on r.g.r.d. and touched tangentially upon over at ASCII Dreams. Here is a sample of its output:

I'm of the opinion that this is sub-optimal for roguelikes, primarily because of one main factor: geometrically, it is too deadly for any reasonable player. Leaving aside the obvious irony of this statement since roguelikes are a genre where one mistake in game-play could kill you forever, a map such as this tilts the balance of the game too far away from the RNG towards a style of game-play where the presence of even one OOD monster with extended following abilities means the level (and almost certainly) the character is a certain and complete and unavoidable write-off. A map such as this, lacking any in-level escape options, would almost inevitably lead to an overwhelming sense of frustration quite quickly, and would shortly result in whatever game used this dungeon design being deleted off the players' hard drive.

So what could be done to make this map more suitable? Not that hard actually (though I may be underestimating the difficulty due to not being familiar with the original algorithm). Each "branch" needs to be connected up with another (not just through the centre) to allow at least one alternative escape option for a player:

If this is done, I feel this could be another interesting dungeon design, one of many that roguelike authors could use.


Andrew Doull said...

I certainly don't intend this to be the whole dungeon - it was certainly my intention that rooms, or spaces within rooms in the dungeon would be laid out like this, and the dungeon itself would exhibit more connectivity. I believe the original author highlighted the possibility of ensuring additional connections as well.

In general, any dungeon partitioning algorithm with only one path is not especially interesting. You need loops, if only to be able to escape a monster which moves the same speed as you.

Dave said...

What sort of size of level are we talking about here, Andrew? Can the algorithm (again, I've still not looked closely at the code) be scaled down satisfactorily?

Jotaf said...

Judging from the algoryhm's description this would be very possible:

"The resulting patterns are "seed-centric". Because of the "no new
connections" condition, if the seed contains no loops neither does
the finished pattern. If loops are desired this condition can of
course be ignored with some chosen probability."

Pretty cool :)