My thoughts on a cave in system.
Keep the 7x7 area mechanic.
\Whenever a tile changes state from full to empty, have the tile above check if it has more than x buddy tiles directly adjacent in a 2d space(?). If it doesn't it begins to cave in. 2 or 3, I think.
You could even get tricksy and make certain rock need more/less buddy tiles.
Blocks, for example, might get support in the 3d area to some extent.
Expand the role of supports. A regular support can prevent tiles directly below (hanging arms) and above from collapsing. You can give a tile a state, say "secured", that prevents caveins. You could also add a 'large' support that can support any tile in the adjacent 24-tile 3d area. This would let players (with sufficient supports) build dome structures and the like.
I think keeping the collapse system simple for now would be a good idea... you could put mist over top and near collapsing tiles and spawn random rubble wherever you figure 'below' to be. Just destroy everything that collapses. You could always plug in a fancier system later.
You might also want to create 'scaffolding' to let dwarves get at vertical construction projects.
Anyone spot any obvious flaws? I've thought it over a bit and I patched all the ones i spotted.
I apologize if I'm stealing/missing anything.. i haven't read quite the whole thread or all of the dev stuff
[ August 14, 2007: Message edited by: Shoe ]
[ August 14, 2007: Message edited by: Shoe ]
In the hanging arms scenario, lets say it was a statue of stone only. The bottom of the arm would realize it had no support and insufficient neighbors, so they would mist and create rubble at the bottom. Then the upper arm would lose its support, realize it has no support and insufficient neighbors, and poof. The shoulders may or may not poof, depending on their neighbors and variables.
To actually create a hanging arm you would have to use supports as part of the arms. For visual purposes, it might be nice to later extend the system so you could re-wall supports as 'reinforced tiles' that looked like rock. In such a system you would first construct a support skeleton and then rewall it.
[ August 14, 2007: Message edited by: Shoe ]
*edit*
After doing a little sketching, the weakness of the system i outlined seems to be that rock vertically diagonal to other rock wouldn't be support. For example, lets say you had a solid 3x3 block, and one tile on top in the center. If you hollowed out the center of the 3x3 tile, the tile on top/center would collapse, despite having a big ring of ring to theoretically rest on. Perhaps a second check for vertically diagonal supports? Starting to get more complicated. eh.
[ August 14, 2007: Message edited by: Shoe ]
Hmm, another hole.
Let's say you construct a line of blocks. If blocks required only 2 horizontal neighbors, they could theoretically extend out into infinity so long as you put supports on the end tiles. And if you used 3 neighbors, you could extend a 2xinfinity line. Blah. If you required 4 neighbors, you couldn't do an infinity line, but other structures might not be stable enough.
You would have to implement a 1x7 or 2x7 check similar to the 7x7 check.
Blah. I'm deathspiraling, and noone has even disagreed with me yet.
Gonna back off for a bit and see if I can think up a more elegant solution to the infinite line and natural dome problems.
[ August 14, 2007: Message edited by: Shoe ]