I came across this brief overview1 of generating ASCII representations of dungeons, and decided to take a stab at a Scala version of the same.
The basic idea is (1) generate some random walls, and then (2) apply some rules to transform this into a reasonable-looking closed cave over a few iterations.
I ended up tweaking a couple of parameters (wall-wall distance, number of iterations) a bit differently, here’s how it looks:
➜ sbt [info] Loading project definition from /home/agam/code/caves/caves/project [info] Loading settings for project caves from build.sbt ... [info] Set current project to hello-world (in build file:/home/agam/code/caves/caves/) [info] sbt server started at local:///home/agam/.sbt/1.0/server/4e9ac60073a7ab62e5f4/sock sbt:hello-world> run
Iteration zero: random walls
###################################################################### #...####..#.#..#.#......#...#.#..#..#...#.####....##...#.##.##....##.# #..#####.###.#..##..#....#.##.#...#.###..#.#...##.....###..#..##.....# #....#......##..#.#....###..##....#....#....#.....##...##.#..###....## #...#....#...####.#.###.###.#.#.#...#..##..##......#..####.#..#...#### #.......#.#..#...#....###.#.###.#...####.#..#.####..###.#..#####.#...# ##.#.....#.....###.#.#....#.....###.#..##..##.........#.#....#.#..#..# ##...#####..#####.#...#...#..#.#.....##.....#.#.....#......###.#....## #..###..#..#...##.#..##..#.#..#..###...#.#...#...##..#...#.#...#...#.# #...#.#####...#....######..###..#..#..####.###.#..#..##....#.##.#...## ###..###........#.#.#...###...###.#.#.##.....#.##.#.###.#.#.##..#..#.# #....#.##.....#.#.##..##.#..#.##...#.#.##...#.###...##..##........#### #...#.#.......###..##.#####...#.##...#####.##.##.##.#..#...#.##..##### #.#..##..###..##.......###..###...##..#.#...#...###..#.####..##.##.#.# #.#.###.#..###.#........#.#..#.##.##..##.#.#.#..#.###.##.##.#####....# ##..#.....####.#.#.##...#.#...###.##..#...#...#.###..#..#...#.#.....## ####...###.#..#.##.#.#.........##.###.#.#..#.#...#...#.#..#..##..##.## ##.#...#..#...#.##......###.###.......#.#.#......#.#..#.#.##..#...##.# ###....#..#......#.......##....###..##..##.#..#..#.#....##..#..#.#..## ##..##.....####.####.###.##...#..#..#..##.......##.##.....#.###..##..# #.......##....#......#........#...####.##..#.##.#.#...#...#.##.#..#..# ##...........#....###...#.##...#........#..##..#.........##.......#### #....##.##..##..#...#...##......#...####....##..#..#....#..####....### #....#.#.....#...#..#..#.#####....#.........#.#..#..#.#.###......#...# #.#.#..#..##.#..##.#..#...###...#.#.##.###...#..###.#.##.#...##.##.#.# #....................................................................# #..##.##.#.#.##..#..###.#.#.....###.#.#.#....#...#...#.....#....#.##.# #..##..#.#.....#..####..#.#...##.##..#.###.##..#......#....#.#.#...### #..#####.#..###..##.##..#....#..........#.#.#...#....#..##.#....####.# #.#.##....#.#.##.#.#.#.##.....#....###..##.#..#.......#.##...##..##### #..#........###.####.....##....##..#.#.##..#.##..##...##.#.##.#......# #.....###.#.##.#..#####...##..............###.######......##......##.# #..###...#..#####..##....##.#.##...##.....#.#.#..##...##.........#.#.# #...#..##.#..##.##.........#..#.....#.#..#.#.###......##...#.#...#.### #.....#.##..###.#...#.....#...##.#...#.#.#..#...#...###..#.###..##.### #...#..#.#..##.##...#....#....##.##..#.#..#........###.#..##...##....# #...##...#.#.#...#...#...##...#.#.###.....##.#.##.#.#.#..#.#.#...#...# #.#........##.#...##..##...##.....###..###.....#.........#.#.#.###...# #.#.##.....#..#..#....#.###.###..##.#.#....##..#.#..##..#.#.#####....# ##...#..##..#.###.##.##.###..#.#......#.#.####.#.####.##...###...#...# #.###.###.#....#.##..#.#.#.##.#.#...#...##..#...#.###...#..##..#.##.## #.#..##.....#...#....#.#.#.#.###.####.##........###.#...##.##..##.#.## #..##..#..#..#........#....####.#..##.#........#...#.#..#....#.#...#.# #.#.##.#..#.#####.#..##.##..##..#......#..#.#..##....##.##.###.#...### #...#...#....##.#..#.#.##.####.#.#..#.#.....#.#.#...#...#.##.####....# #...##.######.##..###.#.###..#.......###.#.###..#.#.#.##.##....#####.# #....##.###......#.....#..#...##.#.#....#......#.#.##...#...##.#####.# #.#.#..#..#..###...######.#.####..#.#..#...####.##....#....#..#...##.# ###.##.##.##......####..#..##.#..#.....###.##.#...#....#####....#.#..# ######################################################################
Iterations 1-4: Coalesce larger islands
###################################################################### ######################..############################..################ #####################...#######..###################..###########...## ##..##......##########.#######........########....##..##########...### #....#.......##################..#....########.......###########....## #..##..#.##....###############...#....########.####..###########.##..# ##......##..#.##########.####......##.###..###.#..##.......#####.##..# ##......##..###########...###.##............###......#..#..#####..#.## #..##..####...##########...####...#.#....#..###...#...#.#...####....## ##....####.##....########..#####.#.#.....##.####..#..###....####.#..## ##....###..##....#########...####............####...#####..........### #..#####...#......########....###...#..##....####...#####.##......#### #...###...#....#...#######.#.####..#...##..#..####....######.....##### ##..###.......###......###..########...##..##..####...################ ##..##..#..######..#....##...#######...........#####..###########...## #####...###############...##..######..#..##.##..###....#########....## ####....####.##########.......######..##....##...##..#.########...#### ####..##.##.....###.........#..####........#..#...#..#..#######...#### ###..##.........###...#..####..###...#...###..#.....##...######....### ##..##..##.###...##..##......#......#...#........#..####..#####.#...## ##.##...#.#...##......##...#.##..##....##.....##.##...##..####..##..## ##.#.....#.....#...##.........####..#..##.##......##.......###..#..### #.....#..##.##..##..#...#.................###..#....#......###..#...## #..##.##..####..##..####...#####.#####..#....##.##...#.##.#.....##..## #..#...#..........#....##..##.#.....#...###..#...###..#####..##...#..# #........##..##..#.........#.........#....#..##..##.#.....#..##..#...# #.........#...#.....##...###..#..##..##.......#...#..##.............## #.....#...#......#####...##..##.###........#...####..##.#..##..##..### #....#####.......#####......##.......#..#..#......#....###..#...###### #.###............####..##...#..##...##..#.....#....#...###...#...##### #..#...#..#......#####.#...#...####..#.##....######.#.......####..#### #........#........####.#..##......#...##...#.#######.#...###..##..#### ##.###....#........##.##...#..#..#.#......#.#######...#.#.........#### #..##....#...#..##....##..##..#.....#...#....#####...###....##....#### #..#...##...#####..#..##...#..##.....##.#...........###....##..##..### #...#.#.#...#####..##....#....##......#...###....#.####..####.......## #....##.##..####...##......#...#...#......##..##.#......#####....##..# ##.#....#....##........#...##....###..#.#................##########..# ###........#.###..#.....######....#..###...##........##...########...# ####.....##...#####..#..######..#..........##.##...####....#######...# ####..#..#.#...###..#...#########.......###..#....####..#..#######..## ######.#....#.....##......########.##..###..##.....##...#...#####...## #######..#...#....#..#.....######..##..##...#..##...........####..#### ######...#...###...........######..#.....#.....##.#..#.....#####...### ##.###..###..###..##...#..######..#..##..##..#.......##...#######...## #...########..#..###.........###..#...#..#...#.....####.##..########## #....######..............#...###..##.#..........#...........########## ##....#####...##...###......####.................#...............##### ############..###########..#######.....########..##.#..#####....###### ######################################################################
###################################################################### ######################.############################################### ###############################..################################..### ##..###.....###################......##########...##############...### #...##.......##################.##....#########.....############....## #..##...##.#..################..####..##########..#..#############...# ##..##..##...#################......#..##..#####.##.......########...# ##..#...##...##################..#..##......###..##..#.....######...## ##..#..####...#################..##.###.##..###...#...#.##..#####...## ##....######....##################...#...##.####..#..####....###....## ##...####.#####..##########..####..##.....#..####...#####..#..#....### #...####...#..#...#########..####..##..#..#..####....#######......#### #...###..##....#...########..#######..###..#..####....#######....##### ##..###.......###......###...#######...#...#...####...################ ######.....#########....##...#######..#..##....####.#.###########..### #####....#############...###..######..#..#...#..###...##########...### ####....################......######..###...##...##....########...#### ####..#..##....#####...#.......####..##....#..##....#...#######..##### ###..##.........###.....#####...##..##....##..##....##...######....### ######.....###...#...##..#####......#...#..#..###....##...#####..#..## #####..##..#..#...#...#......##...###..##........##...###.####..##..## ####...........#...#...###......##....##...##.....##...#...###......## ####..#..#..#...#...#..##.#.....###...#....##..#....#......##..##...## ####..##...###.#.#.#...##..###...###.#..##.....##......####......##.## ###.###.#.....#..##.#..#...##.##....#...##..#....##.#...###..##..##..# ##..##..##.#..##.....#.#..##...#.....##..#.###...###.#.......##..#...# #..#......###.##....##...###.....##..##.#.....#####..##...##........## #..#..#....##.#...####.......#...##.....#..##..####..####..#...#...### #.....####..###..#####.###..##......#...#.###.......#.####..#.....#### #..##.###..#.##..########...#..##...##...#.............##....#....#### #..#......##..##.#######...#...###....##..#...#####.#.....#...##..#### #.....##..##..##..######..#.#.#...##..##..##.#######.#...###..##..#### #....##...#........#####...#.....###......#.#######...#.##........#### #.##.....##..........###..##..#.##..##..##...#####...###.....###..#### #..#.....#...###.#....#.###..###.#...#.##...........###....##..##..### #..#.##..#..#####.##.#...#....##..#...#....##.#..##..#...####.......## #....##..#..####...####........#..##.....#.#..######..#..#####...#...# ##..##.##...####.......#...##..#..##..#.##............#..#########..## ###....#.....#####..#...######....##.##.....#..##....##...########...# ####..#..##...####..##..########.....##........##..####.#..#######...# #######..###...###...##..########.......###.#......###..##.#######..## #######.....#.....#..##...#######..##..###..##..#......###..#####..### #######.....##...##..####..######..##...#...#..#####..#.#...####...### ######.......##........##..######....#....##......#........#####...### ###########..##...###..#....####..#..##..##.####..#..#..#..######..### ##..#######..#..####.######..###..##..####..##.##..#######..########## ##...######..#......###..##..###..##..#.........#...#........######### ###..######...##...#####....#####...............................###### ############.############..#######..#..########..####..#####...####### ######################################################################
###################################################################### ###################################################################### #################################################################.#### ##.####.....#######################..###########..##############...### #..###.......######################...##########...##############...## #..###..#.##.######################...##########.....#############...# ##..##..##...#####################.....##..#####..#.......#########..# ##......##...#####################..........###..###.......#######..## ##.##..####...####################..###..#..###...#......#..#####...## ##....######...###################..##.#.#..####...#.####....###....## ##...########....################..##.....#..####.#.#######....#...### #...########.#....###################..#..#..#####...#######......#### #...#######........########.########...##..#..####....#######....##### ##.####.......###......###...#######..##...##..####...################ ######.....#########....###..#######......#....####...###########.#### #####..#.#############...###..######....##...#..###.#.##########..#### ####....###############.......######...##...#....#..#..########...#### ####..#..##....#####...#.......####...##...#.....#..#...#######...#### ######..........###.......###...##...#....##..##....##...######....### ######.##..####..#...##....###......#...##...###.#...##..######.##..## #####..##.##..#...##..#......##....##..##........##...##..####...#..## ####.....#.....#...#...##.#..#.........#...##..#..###..#...###..#...## ####..#...#.#...#...#..###......###..##....##.##....#......##..#....## ####.###...#.#...#..#..##....#...##..#...#.....#.....#...##.......#.## #########.....#..##.........###.........##..#........##.##...##..##..# ######...#....##.#....##..##..##..#..#......##...##..##......##.##...# #####......#..##....##....#...#..##..##.#.......###..###..##..#.#...## ####.........##...####...#...#...##..#.#...#.##..#...####..#...##..### ####...##...###..########...##......#...#..####...#...###..##...#.#### ####...##....##..########..##...#...#....#.........#...#.....#....#### ###.#.....#...##.#######...#...#...#..##..#...#######.#...#...##..#### ##...##...##..##..######.....##...##..##...#.#######.....###...#..#### ##...###..##...#...#####..#..#...###......#.#######.....#.#.......#### ###..................###.##...#.###..#..##...#####...###......##..#### ###.....##...###.##...#.###...####...###.#...........##....#..##...### ##...#...##.#####.####...#.##.#####...#....##....##.......###....#..## ##..###.....####...###..#......#####.....#.##.#..###..##.#####..##..## ##.....##...#####......#...##....###....##..#..#......#..#########..## ###.....#....#####......######....#..##..#..#..##....##...########...# ####.....##...####..##..########..#..##.....#..##.#####...########...# ######..###....###...##..########.......##..#......###..##########..## #######.##..#....##..###..#######..##...##..##.........###.######..### #######.....##....#...###..######..##..#.......##.##.#.....#####...### ########.....###.......##..######.....#...........#..#.....#####...### ##########...##...##..####..####.........##.###.....#####..######.#### ###########......##########..###..###.#.###..#.###..######..########## ###########........#######...###...#.##.........##...........######### ###########...##..#######...#####..............................####### ##################################.....########..####..#####..######## ######################################################################
###################################################################### ###################################################################### ###################################################################### #######.....########################################################## ######......########################.############..################### ######..#....######################...##########.....################# #####...##...#####################..#..##..#####..#.......############ #####...##...#####################..##......###..###.#.....#######.### ####...####...####################..###.##..###...#.........#####...## ###...######...###################..##..##..####.....####....###....## ##...########.#..####################........####..########.....#..### #...########.##...###################..#..#..#####...#######......#### #...#######........#################..##..##..####....#######....##### #######.......###......#############..##...#...####...################ ######.....#########....############.#....#.#..####...################ #####...##############...###.#######.....#..##..###...##########.##### ####..#.################......######..###...##...#..#..########...#### ######...##....#####...##......####...##...#.......##...#######...#### ######..........###.....##.##...##...#....##..##....##...######....### ######.#...#.##..##..##.....##..#..##....##...#..#...##..######.##..## #####..##.#.#.#...#..##...#..##.#..##..##........##...##..####..##..## ####.....#.....##..#...####..#.........##..##..#...#...##..###..#...## ####......#.#...#..##..###..#...###..##....##.###.###......##..##...## ########..####.....##........#...##.##..##.....#.........#..........## ########.#.......##...##..#...#.........##..##....#.....###..#...##..# ######..###....##.....##..##..##.....#...#..##...##..........#...##..# #####....##...##....##....#...#..##..##..##......##.####...#..#.....## ####..#...#..##...#####..#...##..##...##.....###.....####.##...##..### ####..##..#..##..########...##..##..#...#...###.......###...##..#.#### ####...##.#..##..########..##...#...#....###...........#.....#....#### ###...........##.#######..#....#......##..#...#########...#...##..#### ##..###...##..##..######..#..##...#...##.....#######.....####..#..#### ##..####..###......#####....##...##.#....#...######.....#..##.....#### ###....#.............#####......###.##..###...####..#####.....##..#### ###.....##...###.....######....####..##....#.........##.......##...### ##..##...##.####..########..#######..##....##.#...##......###.......## ##..##......####...######......#####....#..###.#..##...#.#####..#...## ##..##.##...#####......######....###....##..#...#.....#..#########..## ###....##....#####.#....######....#..##..#.....##....##...########...# ####....##.#..####..#...########.....##....##..##...###..#########...# ######..###....###...##..########.#......#..##..#.......##########..## #######..#..#....##..###..#######..##..####..#..#.##....#########..### #######...#.......##..###..######..##.##..#....#..##..#...######...### ########..#..###......###..######.....#......#.......###...#####...### ##########..####..##.#####..####..#......#..###..#..#####..########### ###########.#.....########...###..##.##.####....##...#####..########## ###########.......########...###..#..##.......#..#..#........######### ############..##.################.............................######## ##################################..#..########..####..#####.######### ######################################################################
Iterations 5-7: Coalescing smaller islands
###################################################################### ###################################################################### ###################################################################### #######....########################################################### ######......#####################################..################### ######.......###################################.....################# #####........############################..#####..........############ #####...##...############################...###...#........########### ####...####...############################..###...#.........#####..### ###...######...#######################..#...####.....####....###...### ##...########....####################........####....######........### #...########......###################........#####...#######......#### ##.########........#################...#......####....#######....##### #######.......###......#############...#.......####...################ ######.....#########....############...........####...################ #####....#############...###########.....#......###...################ ######...##############.......######.........#.........#########.##### ######.........#####...........####...##................#######...#### ######..........###.....#.......##.........#...#.........######....### ######...........##.................#......#..#...#......######.....## #####...#...#.................#.....#...#.................####...#..## ####...........#........##.....#....................#..#...###...#..## #####..........#....#.......#..................#....##..............## #######.....##...................##..#.........#.....#........##....## #######.....#.....##...#.................................##..........# ######.....................#.............#...#...................#...# #####.....#.....#...##....#...........#...#......##...##............## ####..............#####............#...#.....##..##...###..#.......### ####...#.........#######.....#...#..#.................###.........#### ####....#..#.....#######........#.........##..........##......#...#### ###..............#######..#............#...#..######...........#..#### ##...##.......##..######......#..............#######........#.....#### ##....#....#.......######...##...#...........######......#..#.....#### ###.................######......###......#....####......##.....#..#### ###......#...##..#..######.....####...#..............#.........#...### ##..........####...#######.....####...#.............#.....###.......## ##..........####....#######.....####........#......#.....#####......## ##...#......#####......######....###.....#...#....#......########...## ###..........#####......######........#..............#...#########...# ####..........####......########......#.........#....#...#########...# ######.....#...###.......########............#..........##########..## #######..........##.......#######.........#........#.....########..### #######................#...######..#..##..#....##.........######...### ########.....##.......###..######....................###...######.#### ##########...##......#####..####.....................####..########### ###########........#######...###..#......#####...##..####...########## ###########.......#########.####...#..#......................######### ############..###################............................######### ##################################.....########..####..############### ######################################################################
###################################################################### ###################################################################### ###################################################################### #######....########################################################### ######......#####################################..################### ######..##...###################################.....################# #####........###################################..#.......############ #####...##...##################################...##.......########### ####...####...############################.####.............#####.#### ###...######...#######################......####......###....###...### ##...#######.....####################....#...####..#.######........### ##..########.#....###################..#.##..#####...#######......#### ###########........#################......#...####....#######....##### #######.......###......#############..##...#...####...################ ######.....#########....############..#...#.#..####...################ ######....############...###########.....#...#..##..#.################ ######..#..###########........######..#..#...#.....##..############### ######..#......#####...##..#...####...#..#......#...#...########..#### ######..#.#.....###....#..###...##....#....#...#.#...#...######....### ######.....###...#..##.......#......#..#...##.#...#..##..######.....## #####..##...........#...#.....#..#.##..##..#...#.#........####..##..## #####..##.#....##..#...#.###...#.......#..#............##..##....#..## ######....#.....#....##.....#.#......#...##.##..##..#..#............## #######..#...#...........#...#...##.##..........##..#.....#..###.#..## #######.#...###...##...##...#.#.##.....##...#.......#....##..#...#...# ######...#.....#...........#...#..........#...#..............#...#...# #####....##.#..#....##...##...#...##..#...#...#...#........#..##....## ####..#.....##....#####..#...#........##......#..###...#..##...#...### ####..#.......#..#######....#...#..#..................##..#.......#### ####....###......#######..##...##.###..#..##.............#...#.#..#### ###......#..#....#######..#...........##..#...#####.##..#...#..#..#### ##...##.....#..#..######.....#......#..#.....#######.#.........#..#### ##...#.#...#...#...######...##......#...#.#..######.......#.#.....#### ###.....#.#.........######..#...##.......##...####...#..#......#..#### ###.##...#...##..#..######..#..####..##...#..........#.#.......##..### ##...#..#...####....######.....####...##...#...#......#...###.......## ##.....##...####.....######.....####....#...#.##..##.....#####......## ##...#..#...#####..#...######....##......#........#...#..########...## ###.....##...#####.##...######.......##..##.#..#.....##..#########...# ####....#.....####..##..########..##..#.....#..##.#......#########...# ######....##...###...#...########..#..............##..#..#########..## #######..##........#......#######.....#..##.##...........########..### #######..........###.......######..#..#..#..#..###........#######..### ########......#..#....###..######..##.#........#......##...########### ##########...##......#####..####..................#..####..########### ###########........#######..####..#...#..#..###..##...##....########## ###########.......##############...#.#.......................######### ############..###################...........................########## ##################################.....########..####..############### ######################################################################
###################################################################### ###################################################################### ###################################################################### #######....########################################################### ######......#####################################..################### ######...#...###################################.....################# #####........###################################..........############ #####...##...##################################..####......########### ####...####...#################################.............########## ###...######...#######################......####......###....###..#### ##...#######.....####################........####....######.......#### ############..#...###################....#...#####...#######......#### ###########........#################..........####....#######....##### #######.......###......#############..##...#...####...################ ######.....#########....############...........####...################ ######..#..##########....###########.....#..#...##....################ ######......#########.........######..#..#..##.........############### ######...#.....#####...#.......####.................#...########..#### ######..........###.....#..##...##...............#.......######....### ######......##.......#..............#...#...#.#...#..##..######.....## #####.......#.................#....#..............#.......####...#..## #####....#.....##.##.......#...#..#...#....................##....#..## ######....#..........##..#...............##..##.....#.##............## #######......................#......#...........##.....#............## #######.......##..##...#........#..##..#........#...#....##..#..##...# ######...#.................#...#.........###........##...............# #####....#..#...#...##....#...#............#..#................#....## ####...#.....#....#####......#........##.....##..##....#...##..#...### ####..#.......#..#######..........................................#### ####.....#.......#######..##...##..#......##.........#..##........#### ###......#..#....#######..#....##..#...#......#####.#...#...#.##..#### ##....#.....#..#..######...............#.....#######...#...#......#### ##.....#.......#...######....#......#........######........#......#### ###.......#.........######..#...##.......#....####......#.....#...#### ###..#....#..##..#..######..#..####...#...#.........#..#.......#...### ##..........####....######.....####....#...#..............###...#...## ##..#.......####.....######.....###...........##..#......#####......## ##...#...#..#####......######....#...#...#........#..#...########...## ###..........#####......######........#..#..#.........#..#########...# ####...#......####...#..########...#...#.......#...#..#..#########...# ######.....#...##....##..########..#...............#..#..#########..## #######..####.............#######........#..#......#.....########..### #######...........##.......######.....#..#..#...#..#......############ ########......#..#....###..######..#..#..#.....#......##...########### ##########...##.#....#####..####...#.....#............##...########### ###########........#############......#..#..##.#.###....##..########## ###########.......##############...#.##..............#......########## ############..###################..........................########### ##################################.....########..####..############### ######################################################################
Iteration 8: prune out isolated walls
###################################################################### ###################################################################### ###################################################################### #######....########################################################### ######......#####################################..################### ######.......###################################.....################# #####........###################################..........############ #####...##...##################################............########### ####...####...#################################.............########## ###...######...#######################......####......###....###.##### ############.....####################........####....######.......#### ############......###################........#####...#######......#### ###########........#################..........####....#######....##### #######.......###......#############...........####...################ ######......########....############...........####...################ ######......#########....###########............##....################ ######.......########.........######...................############### ######.........#####...........####.....................########..#### ######..........###.............##.......................######....### ######...................................................######.....## #####.....................................................####......## #####......................................................##.......## ######..............................................................## #######.............................................................## #######..............................................................# ######...............................................................# #####...............##..............................................## ####..............#####............................................### ####.............#######..........................................#### ####.............#######..........................................#### ###..............#######......................#####...............#### ##................######.....................######...............#### ##.................######....................######...............#### ###.................######......##............####................#### ###..........##.....######.....####................................### ##..........####....######.....####.......................###.......## ##..........####.....######.....###......................#####......## ##..........#####......######............................########...## ###..........#####......######...........................#########...# ####..........####......########.........................#########...# ######.........##........########........................#########..## #######...................#######........................############# #######....................######.........................############ ########..............###..######..........................########### ##########...........###########...........................########### ###########........#############............................########## ###########.......##############............................########## ############..###################..........................########### ##################################.....########..####..############### ######################################################################
This was my first “procedural generation” of any kind, so … I’m quite pleased 🙂. The repository is here2 at Bitbucket.
#topublish