Dungeon Creation and Beautification

Published July 08, 2010
Advertisement
With most of the foundational art assets completed I'm shifted my focus on Dredmor toward producing content for the game. In particular I'm polishing the dungeon tilesets and creating new dungeon objects (as the game items have actually been finished for a long, long time).

Tilesets

Let me take a moment to explain how Dredmor tilesets work (and used to work, and how they will work). Here's a cut from the first dungeon's tileset:



Imagine this image is cut into 32x32 tiles; These are the basic building blocks of Dredmor's dungeons. The bright green areas are colorkey-green, which means that those areas are transparent in the game. The short walls at the bottom with transparent parts are the bordering walls for liquids; animated liquids are drawn, then these tiles are drawn over them. You can see that there are two types of wall, one with large bricks and one with small, and two colors of floor, dark and light. The funny thing is (and confounding to me) only the large-brick wall and dark floor are used - the multiple versions are a holdover from the old dungeon creation system. These are going to have to go, though I'll definitely recycle the graphics somewhere or other.

In our old version of generating dungeons there were multiple wall types and floors could either be "lit" or "unlit" according to some semi-random system or other which only Nicholas knows about. (His is an arcane art.)

Rooms

At some point we changed from some kind of traditionally roguelike random dungeon generation (which had varying success in Dredmor; I believe the objection was that the dungeons felt too generic) toward defining room templates in XML which are, in turn, randomly assembled into a dungeon layout.

Here's the starting room of Dredmor:



As you can see "#"'s are walls, "."'s are floors, "d" and "D" are doors. The doors may or may not be used as doors, and additional secret nooks are generated. There's a little more to it than just this, like liquids, specially defined decoration objects, and hard-coded objects (like the Entry Staircase you see there).

Aside, I was annoyed at typing rooms out in characters that are taller than they are wide so I made a quick Python app to convert pngs to room code. Here's the same room as an image:



This makes it much easier for me to crank out room patterns because I pretty much think in Photoshop anyway.

Decorations

I mentioned special decoration objects: If you have played the Dredmor beta, you will notice that rooms all have randomly generated titles like "The Disquieting Chamber of Fruit". Using XML definitions, we can tag dungeon decoration objects to be used in rooms with the associated word in their title. In "The Disquieting Chamber of Fruit" you would be able to find the carving of fruit you see on the right:



There are also penguins.

As I recall, we had intended the random room name generation to only apply to certain rooms, but the results were so fun that we give every room in the game its own name and the possibility for unique decorations. There is also the option, as described before with the entry stairs, to script a particular decoration objects to appear in a room template - the combination of this allows for all kinds of strange possibilities.

My job, then, is to provide sufficient graphical grist to the churning vortex of weird that shall be the Dungeons of Dredmor.

And Old Mess


This issue with how liquids bordered walls has been bugging me for over a year but I couldn't think of how to explain it exactly to Nicholas. Then something else would always come up and I'd get distracted with drawing pictures of breadfruit or animating a pillar of living fire... Finally my aesthetic revulsion built up to the point where I just sat down and drew what I meant, as here:




It took Nicholas just a couple minutes to correct -- I had a fixed .exe nine minutes after requesting the change. After so long, just like that?I should have asked for this earlier.

[Posted to the Gaslamp Games blog.]
0 likes 4 comments

Comments

ID Merlin
Sometimes, programming goes like that. Other times, it doesn't. After all, it *is* an arcane art.
July 10, 2010 10:06 AM
Ashaman73
DoD looks really great, congrats on your great progress. As far as I can see, this is a two man project, isn't it ? I and a friend are making a similar game in the sense of a dungeon crawler, but with a different focus (when your game would be rogue our game would be dwarven fortress).

Quote:Original post by dbaumgart
As I recall, we had intended the random room name generation to only apply to certain rooms, but the results were so fun that we give every room in the game its own name and the possibility for unique decorations. There is also the option, as described before with the entry stairs, to script a particular decoration objects to appear in a room template - the combination of this allows for all kinds of strange possibilities.

We have similar ways to generate our dungeons, the generation of decorations are included too. Instead of applying a theme of decortions to a single room, we choose to apply themes to sections of the map. This is done by a simple waypoint search algorithm:
Just place points with (random) decoration themes over your map, apply to each point an influence range. Then for each room do a graph search(nodes=rooms) to the next valid point. If the number of nodes in the path to this points is less than the influence range of the point, apply the according theme/name to the given room.
This way you have sections of connected rooms with the same decoration theme and name.

An other thought on names for each room. To avoid acclimatization of room names, it is always nicer to discover a special room with a funny name and decorations instead of running through dungeon with too many point of interests.
July 11, 2010 02:07 AM
dbaumgart
ID Merlin:
Ah, the programmer's craft is fickle as it is powerful. They are sorceries not to be trifled with.

Ashaman73:
Hey, thanks for the kind words!

Team:
We've actually got a three person team - myself for art, a lead/tech programmer, and a gameplay programmer - with a couple more guys to support web and business development. And there's a sound and music guy, and then a handful of contract artists who came before me, and connections who have provider pieces of code and support ... It takes a village. Or something.

DF:
The randomly generated content of Dwarf Fortress has actually been a huge inspiration for Dredmor. So likewise, it's very cool to see other projects inspired by aspects of DF. (Actually, looking at what you have so far, I'm reminded a bit of Morrowind; I just loved that game.)

Decor/themed sections:
Hmm, you've got a very interesting approach; more ideal, naturalistic.
Unfortunately for Dredmor, we're way too close to finished to upset the course of the game (and we badly need to ship a product!).

And I do recall that our original intention with named rooms was to only use it in special cases. I'm trying to remember why exactly we did not stick with the original names as a special case - I think we enjoyed the names too much, and the size of our text pool versus the numbers of rooms in a particular game means that it might actually work. We do need to avoid over-saturating the joke, of course, so it is something we think about ...

But it comes back again to the fact that we need to ship the game. From an ideal perspective, the design can be polished for a long time, but at some point after two years, or five years for our lead programmer, we've got to step back and tell ourselves that it's done.

... until the expansion pack! :D (Our trick is to take any ideas and tell ourselves that we'll put it in the expansion - maybe we will, maybe we won't, but it helps fight feature creep.)
July 12, 2010 02:35 PM
Ashaman73
Quote:Original post by dbaumgart
DF:
The randomly generated content of Dwarf Fortress has actually been a huge inspiration for Dredmor. So likewise, it's very cool to see other projects inspired by aspects of DF. (Actually, looking at what you have so far, I'm reminded a bit of Morrowind; I just loved that game.)

I'm always happy to see other dungeon crawler in development. And it is really funny to see other teams trying out the same thing, like your "attack queue" approach mentioned in your team gaslamp blog. We established a similar approach... atleast for a few days :-)

Quote:Original post by dbaumgart
(Our trick is to take any ideas and tell ourselves that we'll put it in the expansion - maybe we will, maybe we won't, but it helps fight feature creep.)

Yeah... feature creep :-) We tried the same, but it didn't worked (currently I'm implementing features previously moved in version 2.0), but on the other hand our game is just a hobby project without any ambitions to sell it.

Quote:Original post by dbaumgart
Unfortunately for Dredmor, we're way too close to finished to upset the course of the game (and we badly need to ship a product!).

Being too close to a finished game isn't that bad,isn't it ? I wish your team good luck and even greater success with DoD.
July 13, 2010 12:32 AM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement