"Introduction"
Now that we have good falling graphics, gravity can be a part of the game. What I suggest is using a system with two factors: Strength and Weight.
"Strength and Weight"
Basically, a block has a certain strength and weight, which work together to find out if things fall. This makes engineering a new challenge in minecraft, since your roof won't just stay up.
"Connections"
A block's strength determines how much weight a connection can hold up. The weight determines how much strength a connection needs to stay up. A connection is where two blocks meet, across, not on top of or below. The amount of weight a connection can hold is called it's integrity, it is calculated by adding the strength of connecting block's together and dividing it by two.
"Connection Blocks"
If a block is being supported by another block, it can be a connection block. A connection block can support a block above and below it, as well blocks beside it as long as it's connection is strong enough. A if a connection block cannot support a block, the other block falls.
"Structural Integrity at Work"
Let's take a fairly simple structure, where [iron] is air:
[iron] [iron]
[iron] [iron]
[iron] [iron]
Let's say that cobblestone has a strength of 20, and wood has a strength of 12. So, The connection integrity between a cobblestone and wood is (20+12)/2=16. That means that that a connection between two cobblestone can hold 16 weight. Let's also say that the weight of a cobblestone block is 8 and a wood block is 4. That means that the connection between the top left hand corner and top center block can hold 16 weight. The two wood blocks have a combined weight of 8, meaning that the connection between the top left hand corner and top center block can carry 8 more weight. (16-8=8)
What happens when we a new cobblestone block to it? Let's see.
Can he have more roof? Well, if there are two sides with 16 integrity each, making a total of 32. The weight of the wood is 24 (6*4) so the answer is yes. However, he doesn't want to because someone might come along and place blocks on it so it's too heavy and falls in.
Corner reinforcements would be more useful for larger buildings. A corner reinforcement would act combine the integrity of the blocks. For example, the roof above would be able to support 32 weight; which is 8 (another four) wood blocks, including the connection blocks on the cobblestone.
(Thanks Lordofq for this suggestion!)
'Above and Below'
[iron] [iron]
[iron] [iron]
[iron] [iron] [iron]
Cobblestone and rock have very high strength, rock more so since it is packed solid and doesn't have mortar between tiles, but they also have very high weight, making them less suitable for roofs. Wood has high strength and less weight making it useful as well.
Above, the cobblestone + wood combination has a strong integrity (16) and but too much weight. (5*4=20) What can be done? Changing one wood to a cobblestone might work, making it look something like:
[iron] [iron]
[iron] [iron]
[iron] [iron] [iron]
Let's see. The cobblestone to cobblestone connection has 20 (20+20=40 40/2=20) integrity, but the extra weight (4*4+8=24) means that this isn't able to hold. How would it fall? Well, since only what needs to fall falls, it would end up looking like this:
[iron] [iron]
[iron] [iron] [iron]
[iron] [iron]
And if this structure looked like this:
[iron] [iron]
[iron] [iron]
[iron] [iron] [iron]
[iron] [iron] [iron]
Same weight, same strengths, it would fall like this:
[iron] [iron] [iron]
[iron] [iron] [iron]
[iron] [iron]
[iron] [iron]
Because it isn't possible for only one block to fall.
"Closing"
There's my idea in a nutshell. It's quite simple, but sounds complicated. A computer could do all the math much easier. Determining strength and weight factors would based on common sense. Gravel wouldn't be strong but rather heavy, dirt would be in-between, and all others based on real life factors. Players wouldn't have an effect on block weight.
Very well thought out. System seems a little weak on cobblestones part. What about solid logs? I'd assume they'd be a great support but a bad roofing.
Would adding corner/wall supports (like below) help any?
Side cut view.
If I understand correctly, this system would make the wood in the corner count as a new pillar adding more strength than it should. I like the idea itself a good deal, but I think the numbers themselves need a little balancing.
Also, keep in mind that the strength and weight ratio's wouldn't be the same. Obviously balancing them out would have to happen, I just pulled some out for examples.
I think, later on down the line, this would be very, very welcome. I personally love the idea, but at the moment Notch just seems to be getting as much **** in as he can without really tweaking how the game itself plays. Which isn't a problem, as once we have a ton of stuff, suddenly adding a new gameplay mechanic would be hilarious. Towers would crumble, mines would collapse...
I have recently tried programming a block-based structural integrity simulator. It is a lot harder than it sounds, and I was working in 2D, not 3D.
The approach I took was very similar, and ended up being nearly impossible to code in a fast manner. Even if a given connection can support a certain weight, and every block has its own weight, figuring out how the load distributes is very complex.
Also, the whole "it only breaks off what it needs to" is undo able. It would break at the point at which the weight exceeds the limit. Trying to figure out a different point to break it so it remains stable is infeasible. In fact, even finding that point, which would be needed to figure out if it breaks at all, becomes extremely difficult to do in a way that handles non-standard geometry.
Furthermore, I don't think minecraft needs this anyways. A lot of the fun is in building things. All this would do is limit what you can build. Now you can't build the epic cathedral because the ceiling will collapse. The improbable castle would fall apart. Would it be more realistic? Perhaps. Would it be funner? I highly doubt it.
Yeah, definitely as a not right now thing. Maybe as an expansion or optional gameplay feature. I'd love to just be able to do survival mode without something this extensive, but also I'd like it with this... I mean, I like how this sounds, but I don't want the game to become dependent on structural engineering entirely.
Nah, I think you could get away with the whole cathedral thing if you jimmy-rigged some rafters into it, supported by diagonal stacks of wood or stone or whatever leading into a nearby wall.
A cathedral's ceiling is normally arced to begin with. Minecraft can carry the aestheic appeal of an arc(if its large enough), but not the structural advantages of them. Same with domes. For a building game, these would be necessary, but if they are counter-producive, it is bad. Instead of distributing force, they would put all of it on the first block out, making it weaker than a corresponding flat roof.
there was a big thread about this several months back which I found very interesting. The original post had some issues, but the suggestion I eventually devised, and what others added, I think adressed this question well, and may even handle some of the issues Mystify has been pointing out. There are some challenges still (such as the apparent impossibility of stalactites) but maybe we'll figure out a solution.
Now that we have good falling graphics, gravity can be a part of the game. What I suggest is using a system with two factors: Strength and Weight.
"Strength and Weight"
Basically, a block has a certain strength and weight, which work together to find out if things fall. This makes engineering a new challenge in minecraft, since your roof won't just stay up.
"Connections"
A block's strength determines how much weight a connection can hold up. The weight determines how much strength a connection needs to stay up. A connection is where two blocks meet, across, not on top of or below. The amount of weight a connection can hold is called it's integrity, it is calculated by adding the strength of connecting block's together and dividing it by two.
"Connection Blocks"
If a block is being supported by another block, it can be a connection block. A connection block can support a block above and below it, as well blocks beside it as long as it's connection is strong enough. A if a connection block cannot support a block, the other block falls.
"Structural Integrity at Work"
Let's take a fairly simple structure, where [iron] is air:
[iron] [iron]
[iron] [iron]
[iron] [iron]
Let's say that cobblestone has a strength of 20, and wood has a strength of 12. So, The connection integrity between a cobblestone and wood is (20+12)/2=16. That means that that a connection between two cobblestone can hold 16 weight. Let's also say that the weight of a cobblestone block is 8 and a wood block is 4. That means that the connection between the top left hand corner and top center block can hold 16 weight. The two wood blocks have a combined weight of 8, meaning that the connection between the top left hand corner and top center block can carry 8 more weight. (16-8=8)
What happens when we a new cobblestone block to it? Let's see.
[iron] [iron] [iron]
[iron] [iron] [iron]
[iron] [iron] [iron]
Does it hold? The connection can hold 16, already has 8 on it, and gets another 8, so just barely.
"More Examples"
'Fred's Roof'
Fred is building a house with rock walls. He wants to have a large roof, so he builds it with wood is it isn't to heavy:
[iron] [iron] [iron] [iron] [iron] [iron]
[iron] [iron] [iron] [iron] [iron] [iron]
[iron] [iron] [iron] [iron] [iron] [iron]
Can he have more roof? Well, if there are two sides with 16 integrity each, making a total of 32. The weight of the wood is 24 (6*4) so the answer is yes. However, he doesn't want to because someone might come along and place blocks on it so it's too heavy and falls in.
'Reinforcement'
[iron] [iron]
[iron] [iron] [iron]
[iron] [iron] [iron]
Corner reinforcements would be more useful for larger buildings. A corner reinforcement would act combine the integrity of the blocks. For example, the roof above would be able to support 32 weight; which is 8 (another four) wood blocks, including the connection blocks on the cobblestone.
(Thanks Lordofq for this suggestion!)
'Above and Below'
[iron] [iron]
[iron] [iron]
[iron] [iron] [iron]
Cobblestone and rock have very high strength, rock more so since it is packed solid and doesn't have mortar between tiles, but they also have very high weight, making them less suitable for roofs. Wood has high strength and less weight making it useful as well.
Above, the cobblestone + wood combination has a strong integrity (16) and but too much weight. (5*4=20) What can be done? Changing one wood to a cobblestone might work, making it look something like:
[iron] [iron]
[iron] [iron]
[iron] [iron] [iron]
Let's see. The cobblestone to cobblestone connection has 20 (20+20=40 40/2=20) integrity, but the extra weight (4*4+8=24) means that this isn't able to hold. How would it fall? Well, since only what needs to fall falls, it would end up looking like this:
[iron] [iron]
[iron] [iron] [iron]
[iron] [iron]
And if this structure looked like this:
[iron] [iron]
[iron] [iron]
[iron] [iron] [iron]
[iron] [iron] [iron]
Same weight, same strengths, it would fall like this:
[iron] [iron] [iron]
[iron] [iron] [iron]
[iron] [iron]
[iron] [iron]
Because it isn't possible for only one block to fall.
"Closing"
There's my idea in a nutshell. It's quite simple, but sounds complicated. A computer could do all the math much easier. Determining strength and weight factors would based on common sense. Gravel wouldn't be strong but rather heavy, dirt would be in-between, and all others based on real life factors. Players wouldn't have an effect on block weight.
Would adding corner/wall supports (like below) help any?
Side cut view.
If I understand correctly, this system would make the wood in the corner count as a new pillar adding more strength than it should. I like the idea itself a good deal, but I think the numbers themselves need a little balancing.
@Lordofq
Yes, it would, I'll add something about that now.
... beautiful.
The approach I took was very similar, and ended up being nearly impossible to code in a fast manner. Even if a given connection can support a certain weight, and every block has its own weight, figuring out how the load distributes is very complex.
Also, the whole "it only breaks off what it needs to" is undo able. It would break at the point at which the weight exceeds the limit. Trying to figure out a different point to break it so it remains stable is infeasible. In fact, even finding that point, which would be needed to figure out if it breaks at all, becomes extremely difficult to do in a way that handles non-standard geometry.
Furthermore, I don't think minecraft needs this anyways. A lot of the fun is in building things. All this would do is limit what you can build. Now you can't build the epic cathedral because the ceiling will collapse. The improbable castle would fall apart. Would it be more realistic? Perhaps. Would it be funner? I highly doubt it.
viewtopic.php?f=1&t=9301&start=30#p133080