I was inspecting the chasm at my latest site, when I noticed how horribly unnatural they appear. Sure, the bottomless pit has some (minor) variation in it's size and shape, but the regular chasms look like someone has had a bit too much fun with a giant laser cannon; straight, boring sides, and a uniform (infinite) depth.
Thus, I got to thinking; what if chasms and similar features instead had varying depths and shapes, so not all such features drop into the bottomless depths, but may instead ramp off or curve over.
e.g. a chasm from the side would look like this
__| |____
_| |___
| |
\ _______/
\_ ____ _____/
\__ ____/ \ ____/
\ / | /
########### #######################
instead of the current
| |
| |
| |
| |
| |
| |
| |
#####################################
Where # of course represents the actual chasm floor tiles.
Basically, what I'm thinking with this is that it will eventually merge chasms, pits, and random caves as a single feature, controlled by the same procedural generation rules. Where sections of this underground cavern reach the map bottom, the tiles are marked as chasm.
If these generation rules then used a series of player definable settings (say toggleable in the world gen menu) to control the shape of the feature, such as say,
[DEPTHMIN] and [DEPTHMAX] to control the height range the object appears in, where 0 is the map bottom, 15 is the middle, 30 is the ceiling (this needs some work, but I don't think Toady's code allows for negative values, so I'm not sure how to do it).
[SIZEX][SIZEY][SIZEZ] to determine cavern size (all with min-max values). It should be noted by the way that I don't mean X and Y as the fixed directions (like I do with the Z), but rather just referring to any two arbitrary, perpendicular, directions in the horizontal plane.
[SLOPEMIN][SLOPEMAX] to determine the angle of the feature walls (where say 0-127 is an overhang, 128 is vertical, and 129-255 is a standard positive slope).
Also, maybe [BRANCHING] (splits into multiple directions) and [TWISTING] (feature changes direction occasionally) tags would be necessary to get lots of those little nooks and crannies.
Thus, the current features could be replicated by values like
[DEPTHMIN:10]
[DEPTHMAX:20]
[SIZEXMIN:50]
[SIZEXMAX:150]
[SIZEYMIN:3]
[SIZEYMAX:8]
[SIZEZMIN:15]
[SIZEZMAX:15]
[SLOPEMIN:128]
[SLOPEMAX:128]
[TWISTING]
for a chasm, and
[DEPTHMIN:10]
[DEPTHMAX:20]
[SIZEXMIN:15]
[SIZEXMAX:50]
[SIZEYMIN:15]
[SIZEYMAX:50]
[SIZEZMIN:15]
[SIZEZMAX:15]
[SLOPEMIN:100]
[SLOPEMAX:156]
for a pit, while a regular cave would be
[DEPTHMIN:0]
[DEPTHMAX:15]
[SIZEXMIN:50]
[SIZEXMAX:250]
[SIZEYMIN:1]
[SIZEYMAX:3]
[SIZEZMIN:1]
[SIZEZMAX:4]
[SLOPEMIN:128]
[SLOPEMAX:128]
[TWISTING]
[BRANCHING]
Allowing the player to save a few varieties of these settings would be nice, but it isn't exactly gamebreaking to go without.
Anyway, comments?