So this design piece is way overdue, but finally a comprehensive view of what I have in mind along with references to related stuff out there
In short, as opposed to meta blocks that are "fancy" blocks with bigger concepts attached to them (like Portals or simple Doors) Block Dynamics are meant to make normal blocks more "lively" by adding more metadata to them (extra values for every block). Since they're expected to exist for every block I've put some thought into making them multipurpose based on the primary block type so no substantial block space goes wasted. The two two primary new data values are:
* Secondary resource (an "amount") - would cover liquid level in liquid blocks, moisture level in dirt blocks or plants, aquifer fun in certain layers, oil in certain stone layers, natural gas in others, moisture possibly in air blocks for weather effects. etc
* Support / integrity / pressure (an "intensity" of sorts) - would cover concepts like unsupportable blocks falling down, liquid pressure allowing advanced liquid features (think lava bubbling upwards in a volcano crater, or water being pumped through pipes), and possibly wind strength/force in Air blocks for more weather effects
In addition to these two big ones you could possibly consider lighting effects block dynamics too. Likely they'll all be stored in similar ways (initially in TeraArrays and TeraSmartArrays, maybe later in fancy metadata lookups), and they'll update as world time progresses (at different intervals). So ultimately similar processing systems would hit all these things. More details on storage suggestions over at viewtopic.php?f=4&t=173
(EDIT waaaay later, updated link)
While that may sound like a mouthful, it really is more of a foundation allowing all those crazy advanced systems at some point in the future. The basic systems (like block integrity) are actually fairly straight forward to implement, there's just a lot of tweaking to get the feel right. I did a proof of concept a little ways back
http://pastebin.com/uG4iQa37 - updated Chunk.generate() snippet
viewtopic.php?f=4&t=171 - original thread with a screenie showing said snippet enabled (EDIT waaaay later, I think this is the thread this was linked to)
.... *time passes*: argh, and it is midnight. Does it show I find fewer smaller chunks of idle time these days? And I'm not alone, seems like everybody was on spring break for the crazy hectic activity earlier. Will tweak this more tomorrow
In short, as opposed to meta blocks that are "fancy" blocks with bigger concepts attached to them (like Portals or simple Doors) Block Dynamics are meant to make normal blocks more "lively" by adding more metadata to them (extra values for every block). Since they're expected to exist for every block I've put some thought into making them multipurpose based on the primary block type so no substantial block space goes wasted. The two two primary new data values are:
* Secondary resource (an "amount") - would cover liquid level in liquid blocks, moisture level in dirt blocks or plants, aquifer fun in certain layers, oil in certain stone layers, natural gas in others, moisture possibly in air blocks for weather effects. etc
* Support / integrity / pressure (an "intensity" of sorts) - would cover concepts like unsupportable blocks falling down, liquid pressure allowing advanced liquid features (think lava bubbling upwards in a volcano crater, or water being pumped through pipes), and possibly wind strength/force in Air blocks for more weather effects
In addition to these two big ones you could possibly consider lighting effects block dynamics too. Likely they'll all be stored in similar ways (initially in TeraArrays and TeraSmartArrays, maybe later in fancy metadata lookups), and they'll update as world time progresses (at different intervals). So ultimately similar processing systems would hit all these things. More details on storage suggestions over at viewtopic.php?f=4&t=173
(EDIT waaaay later, updated link)
While that may sound like a mouthful, it really is more of a foundation allowing all those crazy advanced systems at some point in the future. The basic systems (like block integrity) are actually fairly straight forward to implement, there's just a lot of tweaking to get the feel right. I did a proof of concept a little ways back
http://pastebin.com/uG4iQa37 - updated Chunk.generate() snippet
viewtopic.php?f=4&t=171 - original thread with a screenie showing said snippet enabled (EDIT waaaay later, I think this is the thread this was linked to)
.... *time passes*: argh, and it is midnight. Does it show I find fewer smaller chunks of idle time these days? And I'm not alone, seems like everybody was on spring break for the crazy hectic activity earlier. Will tweak this more tomorrow