![]() |
#1 |
Knight
Join Date: Sep 2010
Location: England
Posts: 958
![]() |
Making dungeon generation more interesting
So, v4 having finally given me the push to figure out how to compile on Windows and start doing some proper coding, this is one of the big things that I'm interested in.
My current project is implementing loading of room layouts from an edit file, similar to the way vault.txt works, so that rooms of any irregular shape or design can be generated easily and new ones can be added without any coding required. So far I've got this functional but the rooms are a bit sparse; I'm working on ways to be able to add monsters/treasure/traps from the edit file without making the positions as rigidly fixed as in vaults. I'm trying to keep things as flexible as possible, to prevent the need for creating many very similar templates for basic variations on the same room. I've managed to implement random doors, and I'm thinking about adding optional walls that are generated 50% of the time, so that a single template would produce multiple possible room layouts, like this: Code:
template possible results D:###1### ###+### ####### ###+### ####### D:#.....2 #.....# #.....+ #.....# #.....+ D:#.....# #.....# #.....# #.....# #.....# D:#xxxxx# => ####### OR ####### OR #.....# OR #.....# D:#.....# #.....# #.....# #.....# #.....# D:2.....# #.....# +.....# #.....# +.....# D:###1### ###+### ####### ###+### ####### I'm hoping that by the time I've got this done, I'll know enough about what I'm doing to do a similar thing with a layout file for pit designs, so monster pits could appear in different shapes and sizes, and perhaps have different layouts according to type. (e.g., cavern type rooms for animal nests, more structured fortifications for orcs pits, etc.) So what other stuff would people like to see done to make levels more interesting? Rooms with themed selections of monsters and/or treasure are certainly something else I'd like to do, but I suspect that's a bit beyond my grasp of the code at the moment... |
![]() |
![]() |
#2 |
Veteran
Join Date: Sep 2010
Posts: 1,246
![]() |
I've doing something new in the next version of FayAngband.
Rooms that are adjacent to each other, with touching outer walls, are joined into one. This results in interestingly shaped giant halls. (This is even more cool in FayAngband, because I'm going to have themed rooms with furniture.) |
![]() |
![]() |
#3 |
Swordsman
Join Date: May 2009
Posts: 294
![]() |
Two thoughts:
Can you make exterior doors use the usual system? Maybe mark appropriate edges as "suitable for external connections" and letting the normal corridor generator do its stuff? It might help add variety to have a "stretch this room by copying the previous row/column" mechanism. |
![]() |
![]() |
#4 | ||
Knight
Join Date: Sep 2010
Location: England
Posts: 958
![]() |
Quote:
Code:
D:############### D:%.............# D:%.............# D:##########...## D: ###...### D: ###...### D: ###...### D:##...########## D:#.............% D:#.............% D:############### Code:
High-Elf #
Lord #
Warrior #
LEVEL 50 #
Exp 72383137 #
AU 1001986 #
\}=="~[ ) #
Str! 18/130 :#
Int! 18/100 # %###%%#%%%##########
Wis! 18/20 #########%%%## # ..]...#
Dex! 18/140 % # %%#% .....#
CON! 18/130 ##########%##$%#### # #%########@..##
CHR! 18/140 ..# % % ###...###
..# #######%% ###...###
Cur AC 60 ..# ###.].###
HP 876/ 876 ..# ##...#############
### #.............'..#
#.............##.#
################.#
### %########## #.#
..# %.........# #.# ###
#.######### %#.........##############'###### #
2050' (L41)
Quote:
One wild idea I did have, though, is the idea of creating randomised lesser vaults from these room layouts. It probably wouldn't be too hard to give each room a suitability rating (to define whether it should be used as a base for random vaults - open cavern type rooms like the zed room above shouldn't - and decide risk/reward level) and step through the squares adding monsters and a random chance of traps or treasure based on crunching those numbers for existing vaults. Not sure how successful that idea would be, but it might be an interesting thing to try out. |
||
![]() |
![]() |
#5 |
Angband Devteam member
Join Date: Aug 2008
Location: Philadelphia, PA, USA
Age: 40
Posts: 1,516
![]() |
So I have a bit of time to poke around at your code (and hopefully merge it to v4) but I thought I'd quickly clarify corridor generation.
There are two different mechanisms for generating corridors. 1. The original Angband corridor generator. I haven't really modified this code yet. It respects % versus #, tries to turn in interesting directions, and can sometimes accidentally connect rooms with itself. 2. The code for ensuring dungeon connectedness. I wrote this to use with caverns, and have plugged it into the end of generation as a failsafe. It does not respect things like % versus # and doesn't really worry about "messing up" the way rooms look. It's goal is to connect all floor tiles, with a few exceptions to keep from messing up vaults. Hope this clarifies things a bit. I think there is room for improving #1 so it produces better (or at least different) kinds of hallways, and there is also probably room for improving #2 so that it pays a bit more attention to room types. |
![]() |
![]() |
#6 | |
Knight
Join Date: Sep 2010
Location: England
Posts: 958
![]() |
Quote:
![]() |
|
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Over-engineering dungeon generation | RogerN | Variants | 41 | April 8, 2019 07:20 |
Making levels interesting without just adding more loot | EpicMan | Development | 26 | July 6, 2011 22:29 |
Artifact generation: some interesting stats | PowerWyrm | Vanilla | 26 | June 20, 2011 19:34 |
Disconnected dungeon generation | Derakon | Vanilla | 41 | January 6, 2011 00:25 |
Edit File For Dungeon Generation? | Zero | Vanilla | 3 | January 9, 2008 19:17 |