Content: Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Background: Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Pattern: Blank Waves Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Welcome to TerraFirmaCraft Forums

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

  • Announcements

    • Crysyn

      Only help if you can be helpful

      Hey All, A topic has come up of late in the IRC channel in regards to the general feel of the forums and the community that supports them. Things have progressed further than I would have liked with out this being addressed more publicly because I would much rather have snubbed this out sooner rather than later.. but I have been busy. Here is the general rule I would like people to follow: Wheaton's Law "Don't be a dick." Those of you from the IRC channel know that this is the only rule I ask people in there to follow and we generally have a good and lively time chatting about all manner of things. This is basic rule that just about everyone understands and I am going to expand it to the forums from here moving forward. If you can not help people in a helpful and polite manner then I simply ask you to stop. Now I generally take a back seat to moderating the forums as I like to participate in the suggestions forum fairly heavily at times and would rather do so as a forums user than a moderator. But I am also fairly well known for being the person who constantly puts their foot down and so I am stepping up and doing so on here. If you find yourself unable to respond to a message politely then I ask that you do not respond. This mostly focuses on the increasing level of hostility found within the Suggestion forum as well as the Server forum. I do not care if this is the 30th some odd time you have seen someone make the same suggestion. Or even if the new post on an older topic is one entry above the old one. I expect the members of this forum to respond politely to the user, new or old, and point to the older topic if it applies and even go the extra step to suggest they either add in new information or to summarize the outcome of the previous discussion based upon the new post's entry into it. That is what we are here for, that is why I close most topics instead of deleting them, so that they can be found and referenced down the road. The next topic is the slew of derailment attempts I have seen as of late. If you want to have fun and joke around that is what the off topic forum is for and pretty much anything goes there. I do not expect to read a suggestion thread and have to go through 3 pages of image memes people have shot back and forth. Quite simply this is a waste of my time to read and then have to clean up. Now for the summary. I am going to start taking a more active role, especially in policing the suggestion forum, and handing out warn levels to people whom I see doing this. These will be indiscriminate and applied not to just the first person who derails or is impolite on a topic or response, but to everyone whom follows the lead of that person. As I do not like doing things with out giving you all warning this post shall serve as that warning. If you have a desire to bring this topic up with me then I invite you to do so on the IRC channel. Lets raise the level of quality and grow the community. Let us not descend into the quality often found on the minecraft or league of legend forums. There is simply no need for that here. Be passionate about things, just do not be abusive.
    • Kittychanley

      Offline Servers

      Recently I've seen a few server listings showing up on the first page of the Servers forum that have been closed for an extended period of time, but have recently gotten a reply from a new member who didn't realize the server is offline. To help prevent this from happening in the future, it would be greatly appreciated if you could use the report function on the original post of any servers that have been confirmed as offline, so that the topic may be locked. If you are the admin of a server and plan on taking the server offline, please use the report function on the original post of your topic to let the TFC Staff know that the topic should be locked. If you are the admin of a server that has a locked topic, and would wish to bring the server back online, please use the report function on the original post of the topic to let the TFC Staff know that the topic should be unlocked. As always, please remember to follow rule #3 of the servers forum and update your topic title to contain the version of TFC that the server is currently running. You can do so by editing the OP, and then clicking on "Use Full Editor."
Andeerz

Questions Regarding the New Block Physics Demo

31 posts in this topic

Greetings esteemed forum goers, particularly Bioxx!

I am quite happy to see a meaningful simulation of structural physics making it into TFC2!!!  :)  After watching the recent video you (Bioxx) tweeted, I was left wanting to ask you a few questions about what you plan to implement and how.  So far, here is what I have.

I see that a given block type has a set number of other blocks it can laterally support over the air. 

  1. Is this affected by the amount of blocks supported total in addition to the distance?  In other words, if I build a beam five blocks long off of some block that can support 5 blocks laterally, and then stack a million blocks directly on top at the very end, will the structure fall apart?
  2. Alternatively, if I build with this same kind of block a beam 5 blocks out and then build laterally off of the end block, will the structure collapse?  If not, how much can you build off of it?
  3. Can the amount of blocks supported be modified by making arches?
  4. Will this representation of strength be configurable?
  5. Is there a limit to the amount of blocks that can hang down from a block over the air (given that it is a block that obeys this kind of physics you will be implementing)?

I hope my questions are clear...

In any case, I am very excited by this and look forward to where it goes.  If you are looking for any sort of inspiration, by far the best Minecraft mod that simulates structural physics is/was the Block Physics mod by id_miner on the Minecraft Forums.  Enviromine and all the others don't really do a good job with their attempts.  The only problem with that mod was that it was not updated past 1.6.4, or at least not correctly.  The 1.7 and 1.8 versions were updated by others, and they both made mistakes that make certain structures impossible that should be possible.   

2

Share this post


Link to post
Share on other sites

Honestly, the more complicated that I make the structural systems, the more I want to simplify it. I've been working on a somewhat simplified version of block weight and structural collapsing due to being overloaded but, the more that I make it work, the more scenarios pop up where it no longer functions correctly, so it may be tossed entirely.

 

This sole feature isn't the entirety of TFC2 so at some point I'm going to have to decide to limit whats there so that I can move on to other areas. I also don't want to release something that I'm not happy with just to say that X feature is crossed off.

 

My goal is to give the player simple rules to follow where they have to think just a bit more when building. I don't want the player to have to be a structural engineer to figure out how to build a house. That said if I can make load bearing work, I would love to have some version of it. Just don't get your hopes up.

2

Share this post


Link to post
Share on other sites

What's wrong with the system in TFC1? If it ain't broke, don't fix it? Sad to hear about features getting nerfed here and there.


Oops, i should watch the video. 

 

Link for others: 

Edited by Terex
2

Share this post


Link to post
Share on other sites

Ya, I was kind of wondering about the system too.  I'm not sure what it's adding to gameplay.  It's good to have a way to address natural cavern collapses.  But I've been wondering if this will make support beams obsolete, since it seems to have much greater support range.  Personally I feel like the support beam system is more interesting.   I do love the rubble though, how it behaves more unpredictably.

 

I'm really unclear how exactly the system determines where the 'ground' is.  Does there have to be a solid column all the way to bedrock?  or will deep subterranean caves cause unexpected collapses once they receive a block update?   Or does it simply check for a  certain volume of solid blocks, like 5x5x5 or something, and assume that's solid ground?  Regardless of if that 5x5x5 is hovering in air?  It seems like the whole thing is really fraught with complications, and I'm not sure what the gameplay benefit is.

 

What if caves were addressed by making a second class of natural stone - 'cave ceiling' or something (similar to how there is naturally generated living logs, and then player-cut logs), which only generates immediately above air blocks?  And this second type of natural stone is immune to collapse?  The player can't tell the difference, and it acts in all other respects just like normal raw stone.  I assume that's better than using metadata?  This would keep caves and interesting natural overhangs from collapsing due to player mining activity.  But if the player breaks through the ceiling, the stone above will be in danger of collapse, because only stone blocks that naturally generate immediately above air blocks are 'cave ceiling'.  I'm not sure how practical this is, in terms of world gen.  I don't know if caverns are in effect 'dug' through the solid ground?  Which comes first, the stone or the air?  If the air is 'hollowed out' of the stone, then theoretically each air block checks above it for a stone block and if there is one, it changes it to 'cave ceiling'?  That cave ceiling block can then get vaporized by another generated air block, which turns the next block above to ceiling?  This keeps from having to have a fancy way to figure out where the ceiling ends up?   But in any case, assuming it's technically feasible, it seems like this would address the problem of hidden cave collapses, but still keep support beams a necessary part of mining.

 

Just a thought.

0

Share this post


Link to post
Share on other sites

Actually the way it works is fairly simple.

 

When a collapsible block receives an update it begins a recursive scan to test if it is properly supported. First it checks the block directly beneath itself. If it is solid or marked specifically as a support block, then we exit out and assume that the block is fully supported (this prevents unnecessary scanning for a block which gets ticked in a clearly solid location). If this block is not supported vertically, then it begins the recursive scan horizontally and then vertically. So each block N/S/E/W is added to a list to be scanned. Each of those blocks then performs a vertical test. This time if this block is supported vertically, we add the lower block(y-1) to the list and don't bother checking horizontally, otherwise we check each horizontal block to make sure that it can support this type of block, and then add them to the list. This continues until our Y level reaches reaches a predetermined depth or we run out of blocks to scan. The scan is also limited horizontally to whatever the horizontal support range for a block is.

 

So for example if we have a pillar made of stone bricks that is 3 blocks tall, and we build a platform of stone bricks around the top block, any blocks within a 5 block circular radius would be supported as long as they have a valid path back to the pillar (since stone bricks all have a 5 block range). This satisfies the horizontal range, and the pillar, if it is built on solid ground would most likely fill the vertical requirement.

 

Keeping the ranges fairly small makes sure that we aren't scanning hundreds or thousands of blocks multiple times per tick. 

 

As far as the cave stone, I actually thought about doing that, but this works perfectly. The main issues that I'm having have to do with load bearing. If I get rid of that, I can make the current setup work quite well. I'm hoping that I don't have to it as its actually kind of fun to make a support beam or span of horizontal bricks collapse due to too much weight.

 

As far as purpose... I like to add things that I find fun to code. But besides that, the tfc1 system was sloppy and the code was confusing as all hell. This is actually was easier to navigate for when I inevitably have to come back to it in 6 months.

 

Mining collapses are a whole other beast. To offset the obvious nerfing of support beams due to naturally supported ceiling, I'll be implementing mining related caveins in a new way that should hopefully compliment the current system. 

 

Also I really hope you guys aren't afraid of Earth Tremors.

2

Share this post


Link to post
Share on other sites

Thanks for all the info. I'm really liking it! :) Lots of new possibilities i didn't realise before.

1

Share this post


Link to post
Share on other sites

For what I seen on the video it will make buildings a lot more realistic, no more floating bridges. So if you need to build a bridge crossing a river you will need to have pillars every 10 blocks, or 12 depending on how you count.

Looks like different materials have different properties, So maybe wood blocks should allow for more then 5  blocks as it is a lighter material.

I actually like the challenges that it will create when working on big projects.

2

Share this post


Link to post
Share on other sites

I assume the blocks, no matter what type, have infinite compressive strength, but as shown, variable shear strength for lateral support. Kinda like 7 days to die.

1

Share this post


Link to post
Share on other sites

hmm that tfc2 seems quite promising now with that new blocks physic and world generation

Edited by landryx
1

Share this post


Link to post
Share on other sites

This new mechanic reminds me a lot to 7 days to die (7d2d). That said, 7d2d structural integrity showed some weird behaviour when it comes to structural load. What works fine in simplified examples may appear weird when used in complex buildings with mixed materials. Structural integrity is a highly discussed "feature" / "bug" in 7d2d.

 

I like the current attempt a lot: "My goal is to give the player simple rules to follow where they have to think just a bit more when building" - thumbs up!

Edited by McOrigin
0

Share this post


Link to post
Share on other sites

This new mechanic reminds me a lot to 7 days to die (7d2d). That said, 7d2d structural integrity showed some weird behaviour when it comes to structural load. What works fine in simplified examples may appear weird when used in complex buildings with mixed materials. Structural integrity is a highly discussed "feature" / "bug" in 7d2d.

I don't doubt that it is very buggy in 7dtd. In my rather modest experimentation with it here, it is just too much to handle. So for now I've stripped out all of that code. There are just too many variables when we're dealing with a voxel world.

2

Share this post


Link to post
Share on other sites

Also I really hope you guys aren't afraid of Earth Tremors.

am i the only one who noticed this? lol. 

 

EARTHQUAKE!!! lmao

0

Share this post


Link to post
Share on other sites

Speaking of bridges, does this mechanic handle massive structure like this one (arches are between 25 and 30 blocks in diameter, the longest horizontal stretch is about 5 blocks) :

 

n5driKd.png

 

0

Share this post


Link to post
Share on other sites

Wow, that's very impressive!

0

Share this post


Link to post
Share on other sites

I'm trying to figure out some ways to make that feasible, we'll have to see.

0

Share this post


Link to post
Share on other sites

After tweaking the settings a bit i was able to build this http://prntscr.com/aj2476

 

Its not as grand as the above image but its a working proof of concept. Stone bricks now have a scan depth of 3 and a range of 6. Note that the '3' is actually more of a soft 4 for all intents since the block looking for support is searching for 3 blocks vertically that have a block beneath them. So within 6 blocks horizontally there needs to be a 4 vertical blocks of support.

 

think this should allow crystalcrag's bridge to work.

3

Share this post


Link to post
Share on other sites

This is actually was easier to navigate for when I inevitably have to come back to it in 6 months.

 

Mining collapses are a whole other beast. To offset the obvious nerfing of support beams due to naturally supported ceiling, I'll be implementing mining related caveins in a new way that should hopefully compliment the current system. 

 

Also I really hope you guys aren't afraid of Earth Tremors.

 

I'm not really sold on structural integrity computations in block-based games, it seems to always come down to the damn build requiring support in places where it looks hideous. That said, I like the part where you talk about cleaner code, that is always a good sign for me as a developer.

 

Aand about tremors thing. Is it like subtracting an arbitrary number from the structural integrity param and then issuing like couple hundreds random update ricks (backed up by user graphic and sound so we understand why the castle is suddenly flatter)? Or will we see some life forms?

0

Share this post


Link to post
Share on other sites

For the record, when the time comes for me to go to all the places in code that need it, I'll be making some structural stuff toggleable. 

 

As far as the tremors, I have some ideas but its all in my head atm.

0

Share this post


Link to post
Share on other sites

After tweaking the settings a bit i was able to build this http://prntscr.com/aj2476

 

Its not as grand as the above image but its a working proof of concept. Stone bricks now have a scan depth of 3 and a range of 6. Note that the '3' is actually more of a soft 4 for all intents since the block looking for support is searching for 3 blocks vertically that have a block beneath them. So within 6 blocks horizontally there needs to be a 4 vertical blocks of support.

 

think this should allow crystalcrag's bridge to work.

 

So, let's see if I understand this correctly...

For a block of scan depth 3 and range of 6, you would be able to build the following:

 

     000000     0     0     000000000000------------------where "0" is a blockand "------" is the ground

but not the following:

 

     000 000000000000--------------

Is this right?

0

Share this post


Link to post
Share on other sites

That, however, doesn't look believable. Surely second thing is more stable than the first one, no?

 

Assuming there are only those blocks that are explicitly marked, on the first picture there is a (vertical) lever arm that is not present on second picture. Shouldn't these be "swapped" in behavior or am I missing something?

0

Share this post


Link to post
Share on other sites

When a collapsible block receives an update it begins a recursive scan to test if it is properly supported.

...

Keeping the ranges fairly small makes sure that we aren't scanning hundreds or thousands of blocks multiple times per tick. 

Would it be possible to do the checks when a block place or destroy event is triggered instead of a block update?

 

The reason I ask is because we have observed several scenarios where a lot of block updates are generated which have nothing to do with placing or breaking blocks which would require a structural check. The way you describe it these updates would still cause the mechanism to trigger making it quite costly. Take snowfall for example. On our server we have observed more than a million block updates per hour just for snow. When a layer of snow forms it causes a block update to the block below it. Let's say the majority of snow falls on collapsible blocks like grass and dirt. That would require it to check ~70 blocks per tick which wouldn't add anything to the mechanic. Unless snow collapsing a roof becomes a thing of course :)

2

Share this post


Link to post
Share on other sites

I would be very dismayed if this awesome feature didn't make it into TFC2.  I always felt that it was a small but important feature missing from TFC and minecraft in general.  Enviromine's structural integrity system was okay, but I found it lacking and overly confusing in a lot of its features.  And it didn't work with TFC last i knew  :(

0

Share this post


Link to post
Share on other sites

Take snowfall for example. On our server we have observed more than a million block updates per hour just for snow. When a layer of snow forms it causes a block update to the block below it. Let's say the majority of snow falls on collapsible blocks like grass and dirt. That would require it to check ~70 blocks per tick ...

 

Wouldn't snow still count as a block placement?

0

Share this post


Link to post
Share on other sites

World generation stuff is typically registered differently from player interactions. Snow "forms", block placement is an action performed by a player or a block (mod) that places an other block but even then you can detect which is causing the placement.

There are a bunch of different events for blocks. See the Forge Event Reference here: http://www.minecraftforge.net/wiki/Event_Reference

2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now