Level generators
There doesn't seem to be much attention given to how dungeon layouts affect gameplay, which as a shame as they are pretty important to it. The recently added Zot generator seems to be motivated entirely by aesthetics - most of the levels created play almost identically to each other due to its obsession with open space. I'd like to go over the existing level generators and discuss the problematic ones.
layout_forbidden_donut:
- Code:
############################################# #################
#..#........#....#..........#.......#....#..###....#..........#
#..................>...............#....#.............>.......#
#.............................................................#
#.............................................................#
#.............................................................#
#.............................................................#
#.............................................................#
#..........................#..................................#
#..>........................#.....##..........................#
#.........#################################...................#
#.........# #.......?...........#
#........## #...................#
#.........# #...................#
#.........# #...................#
#.........# #...................#
#.........# #...................#
#.........# #...........@.......#
#.........# #...................#
#.........# #...................#
#.........# #....?..............#
##........# #...................#
#.........# #...................#
#.........# #...................#
#.........# #...................#
#.........# #...................#
#.........# #...................#
#.........# #...................#
#.........# #...................#
#.........# #...................#
#........## #...................#
#........## #...................#
#.........# #...................#
#.........# #...................#
#.........# #...................#
#.........# #...................#
#.........# #...................#
##........# #...................#
#.........# #...................#
#........## #...................#
#......<..# #...................#
#........## #...................#
#.........#################################...................#
#......................#..................#...................#
#.............................................................#
#.............................................................#
#....................................<........................#
#.................................................>...........#
#.............................................................#
#.....<.......................................................#
#.............................................................#
#........#............#......#.....#...#.....##.....#.........#
###############################################################
layout_cross:
- Code:
#####
#...#
#...#
#...#
#...#
#...#
#..>#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
##############################...##############################
#.............>...............................................#
#.............................................................#
#...............................<.............................#
#..........................<............................!.....#
#.....................................................?......$#
#......................................................g..r?.g#
#.............................................................#
#.............................................................#
#.......................................................)>....#
##############################...##############################
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#...#
#####
#########
##.#.#.#.##### ####
#.........##.###..##
##.....#.##........#
##.........#........#
#.........##........####
##.........##........#.####
##.....................#.##
###......................#
#.....................##
##..................###
##...#...........###
##...#..........#
##....##.........##
#.................# ###
##.r...............## ##.##
### #### ##...s...............# #...#
##.###..## #....................## #...####
### #........## ##..#..................# ##.##..#####
##.## ##......#.###.........b...........## ##....<.##.##
#...####.........###.##...............### #...........#
##..##.###...#.#.####.#.................## ##.........##### ###
####...#............###.............#.......# #####......#..###.####.##
##.###...........#....###...................####.##...........#...##...#
##...#................#####.................####...##.#....#..#.........##
#........#........#...###.................##..#...######.......#...#.....#
##....#...#.............#.................##.......####.#........#.......##
#........#.......................#......###.#.......##................#.##
##........#.................<.#.........................#.............###
##....................................................................#
#....................................>.............................#.#####
##...................................................................##.#.##
#....#.....................................................................#
##...................................................................#....##
#..........................................................................#
#.........................................................................##
#..........................................................................#
#.........................................................................##
##........#......................##...................#....#..#.....#....##
#...............#........##.............#.....................##.....#...#
##..#.................#...#....................................##.....#.##
#....#...#........##.###....................###....##.#.........##.#.####
##...#......##...##### #...........#.......#.##.................######
##..#.....####### ##.###..#..#............................##
##....>....# ##.##.......##......##.......#....#.#....##
#..........## #........#.###....####.......##..#...#....##
#...........# ##.....#.#####....#.#.#.....##.............#
##.........## ##.........##..........#....###..#.........#
#.......#...# #....#......#..........#....###...##......##
##.........## ##.#.#......#....#....##.....###.####......#
##........# ##..........#.#....##.####...## ####.#...#.##
#.......## ##...................##.##....# #.....####
##.#....# #.....#........#.........#...## ##.#.##
##....## ##...........###............## #####
##.### ##....#.#....#.....###.......#
### #...#.#.#..........###......##
##..#.......#...#...........###
#...##......#...#.......#.....#####
##.#####.#...#.##..............#..##
### ####.#......#...............#
##....#...........#.....##
#..>..##.#.....#.####....#
#......##.......## ###.##
##.#...###.....## ###
####.## ###.###
### ###
#####
###########...#
#.............#
#.............#
#...r...?....##
########.....#
#.....##
#......#
#......#
##..>...#
#......##
####......#
#.........#
#.........#
#.........######
#####..........#
##..........#
#...........#
#......######
####......####
##### ##...#........#
#...# ##### #.............# #####
#...# #...# #.............####### ####...#####
###...# #...## ##..........#...##...#### #..........#
##### #....## ##....## #...........#...##......# #######..........#
#...###....#####......######...........#....#......###...##...........#
#......................................................<............###
#....................>..............................................#
####.......................<........................................##
##............#######....##.........##..................#####.....#
##...#....#### #...####........#####...............# #.....#
#####....# #...# #........# #...........#...# ###...#
###### ##### #........# ####....#...##### #####
#........# #....#...#
#........# ##...#####
#........# #...#
##.......# #####
###.......#
####.........#
#............#
#............####
#...###.........#
#######.........##
#................#
#................#
#................#
########.........#
####......####
#.........#
#.......>.#
######.........#
###.............##
#...............#
#............####
#.........####
###...#...#
#...#...#
#########
However, when it hits the 75% chance of spotty_map it doesn't work very well in my opinion. This transformation greatly increases the area of the level, taking away its most interesting feature. It's much worse for the non-boxy one (second example) but I don't think the boxy one is an improvement either. I'd get rid of the non-boxy one entirely, maybe keep the boxy transformation on 50% or 25% of levels. This should be accompanied by a decrease in weight to 2 or 3, since you don't want to greatly increase the number of real cross levels, just remove the bad ones.
layout_big_octagon:
- Code:
#################################
##..............>>>..............##
##<................................##
##...................................##
##.....................................##
##.......................................##
##.........................................##
##...........................................##
##.............................................##
##...............................................##
##..........................>......................##
##...................................................##
##.....................................................##
##.......................................................##
##.........................................................##
##...........................................................##
#.............................................................#
#.............................................................#
#.............................................................#
#.................................#...........................#
#................................###..........................#
#.................................#...........................#
#.............................................................#
#.............................................................#
#.............................................................#
#<......................#.....................................#
#<.....................###....................................#
#@......................#.....................................#
#.............................................................#
#.............................................................#
#.............................................................#
#..................................#..........................#
#.................................###.........................#
#..................................#..........................#
#.............................................................#
#.............................................................#
#.............................................................#
##.......................................^...................##
##.........................................................##
##.......................................................##
##.....................................................##
##...................................................##
##.................................................##
##...............................................##
##.............................................##
##...........................................##
##.........................................##
##.......................................##
##.....................................##
##...................................##
##.................................##
##...............................##
#################################
#################################
##...............................##
##.................................##
##...................................##
##.....................................##
##.......................................##
##.........................................##
##...........................................##
##.............................................##
##...............................................##
##.................................................##
##...................................................##
##.....................................................##
##.......................................................##
##.........................................................##
##...........................................................##
#.............................................................#
#.............................................................#
#.............................................................#
#..........................###................................#
#..........................# #................................#
#..........................###................<...............#
#.............................................................#
#.............................................................#
#>...........................?................................#
#..............................<.....###......................#
#.........................g...@.<....# #......................#
#....................................###......................#
#.............................................................#
#.............................................................#
#.............................................................#
#.........................###.................................#
#.........................# #..........>......................#
#.........................###.................................#
#.............................................................#
#.............................................................#
#.............................................................#
##...........................................................##
##.........................................................##
##.............................>.........................##
##.....................................................##
##...................................................##
##.................................................##
##...............................................##
##.............................................##
##...........................................##
##......>..................................##
##.......................................##
##.....................................##
##...................................##
##.................................##
##...............................##
#################################
#########################################
##..................@<<..................##
##.........................................##
##...........................................##
##.............................................##
##.........................$.....................##
##.................................................##
##...................................................##
##.........................S...........................##
##.......................................................##
##.........................................................##
##...........................................................##
#.............................................................#
#..........................#.......#..........................#
#.........................###.....###.........................#
#..........................#.......#..........................#
#.....................................................<.......#
#...................#.....................#...................#
#..................###...................###..................#
#...................#.....................#...................#
#.............................................................#
#.............................................................#
#.............................................................#
#.............................................................#
#.............................................................#
#.................#.........................#................>#
#................###.......................###...............>#
#.................#.........................#.>..............>#
#.............................................................#
#.............................................................#
#.............................................................#
#.............................................................#
#.............................................................#
#...................#.....................#...................#
#..................###...................###..................#
#...................#.....................#...................#
#.............................................................#
#..........................#.......#..........................#
#.........................###.....###.........................#
#..........................#.......#..........................#
#.............................................................#
##...........................................................##
##.........................................................##
##.......................................................##
##.....................................................##
##...................................................##
##.................................................##
##...............................................##
##.............................................##
##...........................................##
##.........................................##
##.......................................##
#########################################
########
######>.#.#.#
#...#>####.##
#..#>#.....####
##.##.........#
#.............##
#####.........###.#
#...#.......#.#.#####
####............#...##.##
#.#............#........####
#......................#.#.##
#######.........................#.##
##.##..##.......................##..#
###..##.##........................#..####
##.#...#..#........................#...#.#
#..##.#....#.............###........#.#..#
###......................# #........#.##.##
#..................<...###.......#...##.#
######....................................#.#####
#.#.##....................................#####.##
##.#........................................#.#..#
###.#.............................................##
##.##..........................................#...##
#..##.................>........................#..#.#
###<#...........###............................###.##
##<.............# #..............................#.##
#@##............###............................##.#.##
##................................................##.##
#.#................................................#..#
####...............................................####
#.................................................#
##............................................#.###
#..#........................................##.##
#######.#.##................###...............##
#..##.#..................# #.........#.#...#
##..#.#..................###.........##.####
###.##.#.............................#..#
#####............................######
##...........................##
#.#.........................##
#..........................##
#...................#....#.#
####.................#...#.##
#..................#.#.#.#
#.#................#######
########............#
#..#....#......#.##
###.#....#...####.#
#..#...##....# ###
####.#...#.###
#####..##
####
###########################################
##.........................................##
##...........................................##
##.............................................##
##...............................................##
##.................................................##
##...................................................##
##.....................................................##
##.......................................................##
##.........................................................##
##...........................................................##
#.............................................................#
#.............................................................#
#..............................#..............................#
#.............................###.............................#
#..............................#..............................#
#.............................................................#
#......................#...............#......................#
#.....................###.............###.....................#
#......................#...............#......................#
#.............................................................#
#.............................................................#
#.............................................................#
#.............................................................#
#.............................................................#
#..................#...........<...........#.................>#
#.................###.........<.@.........###................>#
#..................#.......................#.................>#
#.......................................................>.....#
#.............................................................#
#.............................................................#
#.............................................................#
#.............................................................#
#......................#...............#......................#
#.....................###.............###.....................#
#......................#...............#......................#
#.............................................................#
#..............................#..............................#
#.............................###.............................#
#..............................#..............................#
#.............................................................#
#.............................................................#
##...........................................................##
##.........................................................##
##.......................................................##
##.....................................................##
##...................................................##
##.................................................##
##...............................................##
##..........................<..................##
##...........................................##
##.........................................##
###########################################
#######################################
##.....................................##
##.......................................##
##.........................................##
##...........................................##
##.............................................##
##...............................................##
##.................................................##
##...................................................##
##.....................................................##
##.......................................................##
##.........................................................##
##...........................................................##
#.............................................................#
#...............................###...........................#
#.......................###.....# #...........................#
#.......................# #.....###...........................#
#.......................###...................................#
#.....................................###.....................#
#.....................................# #.....................#
#.....................................###.....................#
#...................###.......................................#
#...................# #.......................................#
#...................###.......................................#
#.............................................................#
#>.......................................###..................#
#>.......................................# #..................#
#>.......................................###..................#
#.............................................................#
#...................###.......................................#
#...................# #.......................................#
#...................###.......................................#
#.....................................###.....................#
#.....................................# #.....................#
#.....................................###.....................#
#........................###..................................#
#........................# #....###...........................#
#........................###....# #...........................#
#...............................###...........................#
#.............................................................#
##...........................................................##
##.........................................................##
##.......................................................##
##.....................................................##
##....................[..............................##
##........................$...h....................##
##...............................................##
##.............................................##
##...........................................##
##.........................................##
##.......................................##
##.................@<<.................##
#######################################
######################## ########
##....#.#...##.......#..###......##
#.......##........................##
###..................................##
##.....................................##
##.......................................#
##.##.....................................###
##...#.......................................##
##...........................................#.#
##...........................................#.####
##..............................................##.##
##............................................>..#.#.#
##....................................................###
##....................###..........###.................#.##
##.#..................## ##........## ##...................##
#.....................# #........# #....................##
##....................## ##........## ##..........<..........#
##......................###..........###......................#
#.............................................................#
##............................................................#
#.............................................................#
#.............................................................#
#.............................................................#
#.............................................................#
#................###.......................###................#
#...............## ##.....................## ##...............#
#...............# #.....................# #...............#
#...............## ##.....................## ##...............#
##...............###.......................###................#
#.............................................................#
#..........................................................>..#
#............................>................................#
##............................................................#
#.............................................................#
##............................................................#
#.....................###...........###......................#
#....................## ##.........## ##.....................#
#....................# #.........# #....................##
##...................## ##.........## ##...................##
##...................###...........###...................##
##.#.................................................#.##
##..................................................###
##.................................................#
##...............................................##
##.#.........................................#.##
##.......................................#...##
##.......................................#.##
##.#.....................................##
####..>................................##
###..............................#.##
#...#...........#<..........#..#.##
##.#.........#.@<#.#.#..##..#.####
##############################
#######
##.....##
##.......##
##.........##
##...........##
##.............##
##...............##
##.................##
##...................##
##.....................##
##.......................##
##.........................##
##...........................##
##...........###...............##
##...........## ##....###........##
##............# #...## ##........##
##.............## ##...# #.........##
##.........###...###....## ##..........##
##.........## ##..........###............##
##..........# #..........................##
##...........## ##..............###..........##
##.............###..............## ##..........##
##...............................# #...........##
##................................## ##............##
##.............###..................###..............##
##@............## ##...................................##
#<.............# #.......>.>..........................#
##<............## ##........>..........................##
##.............###..................###..............##
##................................## ##............##
##...............................# #...........##
##.....<.......###..............## ##..........##
##...........## ##..............###..........##
##..........# #..........................##
##.........## ##.........###.............##
##.........###..>###...## ##...........##
##.............## ##..# #..........##
##............# #..## ##.........##
##...........## ##...###.........##
##...........###...............##
##...........................##
##.........................##
##.......................##
##.....................##
##...................##
##.................##
##...............##
##.............##
##...........##
##.........##
##.......##
##.....##
#######
####### ###
### #.##..### ##.###
####.###.......# ##....#
####.#.#.###.....####..######
##...#...###...........#.##..#
#...###....#............###.##
#....##.#...............#.##.#
####....###...................###
#<##...#.#......................#####
####.#............................#....##
#.##..#...............................#.#
#..#.................###................###
###.#...............#####...............#.##
#....#......###.....#####..................#
### ##..........#####....#####.................##
##.###.#.........#####.....###..................#
##.#.#.#..........#####.............###..........###
#.##...#...........###.............#####...........####
#.##...............................#####..........#.#.###
##.................................#####...........###..##
#####...........###...................###...........##..##.##
##..............#####.................................#..#...#
#.###...........#####...................................##...#
##..#............#####..................................>.....#
#.##..............###......................###................#
##.#......................................#####...............#
###......................................#####...............#
##.......................................#####...............#
#................###......................###................#
###..............#####................................##......#
#................#####..................................####..#
###..............#####.................................#.#.#..#
#.#..#...........###...................###...............##.##
##..#..#...................>..........#####............###.##
##.###...............................#####.............####
#####................###............#####.........#.##.#
#.#...........>..#####............###..........##.###
##.#.............#####....###................##.###
##..............#####...#####...........####..##
#...............###....#####.............#.#.#
###....................#####..............##.#
#..#..................###.............###.##
#####................r..............#..#.##
###..............................#####
#.#...............................#
#.#...........S...............#...#
##.#..........................#####
###.###........$.<.............#
####..........<#>...#.....####
#.#..#....#..##..###...###
##..##.##..#@##...####.#
####..##.#.######.# ###
######### ###
(cont'd)