Thursday 11 October 2007

Level regeneration

I'll be finally getting a working internet connection this evening, which explains why I haven't been posting frequently. I'm currently unemployed, so I've been taking the opportunity to work on Unangband off-line. Btw: if anyone is looking for an IT Manager / Tech Architect in the Sydney area, preferably in the CBD, feel free to drop me a line.

This has conveniently allowed me to ignore the online bug list and work further on level generation.

I've greatly expanded Eric Bock's maze generation algorithm, which I borrowed from Sangband, to allow maze walls and paths of any width; and added a dead-end filler, to allow irregularly shaped mazes. The trickiest part of this was ensuring that the outermost walls of the maze were 'outer' and 'solid' tiles to allow correct tunnel connections, without allowing the maze to be swiss-cheesed by tunnels.

I fixed a lot of generation bugs that were causing disconnected rooms, and to make room descriptions more exactly match the contents of the room.

I've also worked on improving terrain generation, so that lava, ice, water and so on are generated in more interesting ways. For example, it now possible, but risky to walk over lava without damage, provided you time your movements right. I've also tried to improve the consistency of graphics a little more, so that its easier to 'grep the matrix' as one player puts it.

I've also changed how monster ecologies work, so that parts of the ecology are confined to sections of the level. This also will improve the association between rooms and monster types, so if you run into iron thrones, chess boards and weapon racks, you know you're about to encounter warriors of some kind.

That'll probably be it for level generation for the moment with just a couple of fix-ups. I'm going to add some maze theming so that mazes look appropriately 'crypt-like' or 'cave-like' depending on the level they are generated on. I'll also change trap generation slightly, so that you have to find traps first if they are themed to be a particular type.

If you have any requests for further changes to the way levels are generated, please let me know.

No comments: