I love getting the chance to see these type of optimization mods put out, and putting them all together can create a mighty fine game
I personally really want to use it with Ships mod (tbh one of the big the reasons why I'm starting with finite water lol) since who doesn't love sailing their ship on the ocean?
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
I personally really want to use it with Ships mod (tbh one of the big the reasons why I'm starting with finite water lol) since who doesn't love sailing their ship on the ocean?
Nice idea! I think I might try that combination at as well.
Update: Made some significant optimizations in a few parts of the data pipeline. I will probably release an open alpha for people to play with when I finish patching up my placeholder hacks, put in a couple more placeholder hacks, and do a bit of refactoring. Probably... 2-3 days.
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
@1.8 Mmm, it should make life a lot easier. So will +6months of computers getting better. Performance is a massive concern for me, and when you are dealing with hundreds of thousands of blocks at once, a tiny inefficiency in the wrong spot can really slow things down.
On a different note, the threading changes are stable. Now the mod attempts to use the server thread for general stuff, along with one thread for "rapid equalization", one thread for priority updates, and one thread for trivial/distant updates. Four threads of squid destroying power. Unfortunately this will not hugely benefit less monstrous systems (aka 5 year old single core Pentium laptops) running on "tiny" view distance (as a CPU has a finite number of clock cycles, more threads will only help to distribute load and jitter a little bit), but it will work significantly better if you have a few spare cores in your rig.
Now the water works pretty much properly, and I changed the light opacity from 3 to 1 so it should be a little more 'transparent' than regular water (though I haven't looked to see if this change has any effect on anything). Lava is also significantly more destructive than its vanilla counterpart.
I plan to release a pre-beta kind of thing at some point tomorrow, after I get the chance for a "heavy optimizing and cleaning" session. Probably... 24 hours on that, since I have to sleep for a few hours and I have a lecture or two in the morning that I really should go to (absolutely 100% nothing to do with the fact that it's "free-beer-and-sausages-friday" lol).
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Water that isn't blue and near opaque (without needing a shader mod)? Double yay!
I just noticed that in the declaration, it uses setLightOpacity(3), so I simply changed it to setLightOpacity(1). I have no idea if it actually changed anything lol (ideally it should be closer to 1 light per 10 blocks, opacity 0.1F, but fp light levels are not allowed).
In other news, I've just spent 2.5 hours extreme-cleaning my code. With any luck, I will be able to reduce the engine itself to less than 1000 lines of code
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
I just noticed that in the declaration, it uses setLightOpacity(3), so I simply changed it to setLightOpacity(1). I have no idea if it actually changed anything lol (ideally it should be closer to 1 light per 10 blocks, opacity 0.1F, but fp light levels are not allowed).
In other news, I've just spent 2.5 hours extreme-cleaning my code. With any luck, I will be able to reduce the engine itself to less than 1000 lines of code
Sounds great! Thanks for keeping us updated on your progress, friend.
My goal is first to make finite water that is playable and functional. I might add something like waves and tides (if I can figure out an efficient way to do it) at some point, but I think I would need to rewrite the terrain generator quite a lot before the effect would be something resembling reasonable, so...
In other news, I just have to figure out why the water displacement stopped working after optimization, and then I will release a pre-beta proof of concept thing for everyone to play with.
UPDATE: I would have released an alpha by now, but I'm getting a bizarre crash for "biome is already decorating" while loading a world, which doesn't make sense since the code shouldn't be telling chunks to load, nor does the crash happen in my dev environment, which makes it an utter pain of a bug to try and squish.
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
ok looking forward to it.. anyway does this mod generate lots of lag? (if added with 10 or more mods xd )
(some mods add sound of tides/wave.. but the water looking like it is just stand there make me feel wierd hopefully no need to wait till the computer faster enough...)
ok looking forward to it.. anyway does this mod generate lots of lag? (if added with 10 or more mods xd )
(some mods add sound of tides/wave.. but the water looking like it is just stand there make me feel wierd hopefully no need to wait till the computer faster enough...)
No lag. There is a performance cost, as with all mods, but whether it will lag depends on how good your computer is, and what mods you are using [i.e it doesn't lag at all using no other mods on my pretty average laptop, i5-3210M].
The water updates in two parts. First, a small area around the player is updated (default 4 chunk radius). Then the server will spend some time updating the chunks in a larger radius (default 16 chunk radius), but it will stop at a user defined minimum or when the system is behind. Additionally, it uses multiple threads for calculations, meaning that if you have a good processor (like an i5 or i7), it will use most of your cores. This means that the workload is spread around fairly well, and since calculations are threaded, a lot of the work will often not occur on the same CPU core as the lag-inducing calculations of all your other mods.
As for tides and waves, it might be possible to make it work, it might not. I just don't want to sacrifice any performance for something that serves no real function.
Update: Almost finished with the open-alpha release. One or two more things I need to test and a few tiny bugs to iron out, then I will upload something for you guys to play with. As it stands, the mod should be fully playable within vanilla and most forms of modded MC now, with full blocks being possible to scoop up with buckets (FULL blocks -> you may have to break a block under the surface of a pool of water, allowing the new space to be filled completely, before you can pick up the water or lava).
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
ok.... actually i just giving idea about the tides and wave... anyway... keep on your good work
the thing im afraid is scare this mod don't work well with other mod thats all... anyway if possible make them work well to as many big mod as possible
The fact that Forge 1.7.10 has asymmetric chunk loading (i.e. all cores can be used in chunk loading) I'd think would help a lot for performance, something like this would probably be laggy on older versions.
The fact that Forge 1.7.10 has asymmetric chunk loading (i.e. all cores can be used in chunk loading) I'd think would help a lot for performance, something like this would probably be laggy on older versions.
Hmmm, the chunk loading itself isn't that relevant to the mod. Sure the mod relies on the blocks that end up being loaded, but only when it tries to interact with them at some arbitrary point after they have been loaded (aka when another block tries to cause a flow event). From then on everything is handled from my own code (as in, the vast majority of everything that occurs in my code branches out from a single server tick event in my main class. I don't even use the vanilla setBlock methods anymore lol). Of course a better chunk loading system will always be better for everything that relies on it, but if anything, the fact that it uses more threads just means that my threads have more competition while trying to do their work :'(
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
I personally really want to use it with Ships mod (tbh one of the big the reasons why I'm starting with finite water lol) since who doesn't love sailing their ship on the ocean?
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Nice idea! I think I might try that combination at as well.
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
You're a good man Charlie Brown.
Byte-code hacking Vanilla code to replace absolutely all vanilla water and lava with my better version? Check.
Which means that the biggest TODO has now been crossed off of the list.
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
I plan to release a pre-beta kind of thing at some point tomorrow, after I get the chance for a "heavy optimizing and cleaning" session. Probably... 24 hours on that, since I have to sleep for a few hours and I have a lecture or two in the morning that I really should go to (absolutely 100% nothing to do with the fact that it's "free-beer-and-sausages-friday" lol).
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
I just noticed that in the declaration, it uses setLightOpacity(3), so I simply changed it to setLightOpacity(1). I have no idea if it actually changed anything lol (ideally it should be closer to 1 light per 10 blocks, opacity 0.1F, but fp light levels are not allowed).
In other news, I've just spent 2.5 hours extreme-cleaning my code. With any luck, I will be able to reduce the engine itself to less than 1000 lines of code
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Sounds great! Thanks for keeping us updated on your progress, friend.
we need a beach
I was hoping someone would spot that (it was a typo, I noticed it a while ago but I decided it was better how it was :D)
Maybe in 5 years when computers are faster
My goal is first to make finite water that is playable and functional. I might add something like waves and tides (if I can figure out an efficient way to do it) at some point, but I think I would need to rewrite the terrain generator quite a lot before the effect would be something resembling reasonable, so...
In other news, I just have to figure out why the water displacement stopped working after optimization, and then I will release a pre-beta proof of concept thing for everyone to play with.
UPDATE: I would have released an alpha by now, but I'm getting a bizarre crash for "biome is already decorating" while loading a world, which doesn't make sense since the code shouldn't be telling chunks to load, nor does the crash happen in my dev environment, which makes it an utter pain of a bug to try and squish.
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
(some mods add sound of tides/wave.. but the water looking like it is just stand there make me feel wierd hopefully no need to wait till the computer faster enough...)
No lag. There is a performance cost, as with all mods, but whether it will lag depends on how good your computer is, and what mods you are using [i.e it doesn't lag at all using no other mods on my pretty average laptop, i5-3210M].
The water updates in two parts. First, a small area around the player is updated (default 4 chunk radius). Then the server will spend some time updating the chunks in a larger radius (default 16 chunk radius), but it will stop at a user defined minimum or when the system is behind. Additionally, it uses multiple threads for calculations, meaning that if you have a good processor (like an i5 or i7), it will use most of your cores. This means that the workload is spread around fairly well, and since calculations are threaded, a lot of the work will often not occur on the same CPU core as the lag-inducing calculations of all your other mods.
As for tides and waves, it might be possible to make it work, it might not. I just don't want to sacrifice any performance for something that serves no real function.
Update: Almost finished with the open-alpha release. One or two more things I need to test and a few tiny bugs to iron out, then I will upload something for you guys to play with. As it stands, the mod should be fully playable within vanilla and most forms of modded MC now, with full blocks being possible to scoop up with buckets (FULL blocks -> you may have to break a block under the surface of a pool of water, allowing the new space to be filled completely, before you can pick up the water or lava).
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
the thing im afraid is scare this mod don't work well with other mod thats all... anyway if possible make them work well to as many big mod as possible
Hmmm, the chunk loading itself isn't that relevant to the mod. Sure the mod relies on the blocks that end up being loaded, but only when it tries to interact with them at some arbitrary point after they have been loaded (aka when another block tries to cause a flow event). From then on everything is handled from my own code (as in, the vast majority of everything that occurs in my code branches out from a single server tick event in my main class. I don't even use the vanilla setBlock methods anymore lol). Of course a better chunk loading system will always be better for everything that relies on it, but if anything, the fact that it uses more threads just means that my threads have more competition while trying to do their work :'(
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.