Now for redoing basically all of the GUIs and a heap of launching stuff so that it all works properly with the new buoyancy calculations. Then I can add blocks to control the airships better. Then I can update the ShipWorld and block management stuff (though first I might add in just added the ability to update ship geometry properly when blocks are changed)
Also, given the size of the balloon required for this tiny ship (and this is after increasing air density x10, making it 10x easier to generate positive buoyancy) I think it's clear that super-magic flight blocks will be pretty much a necessity for doing anything particularly fancy.
Nice work!!
That ratio doesn't look too far off from realism to me.
Of course, we might not actually want hyper realism in a game. I'd balance the mod for fun over realism, but just don't break the dream,build,test loop at the heart of the mod.
That ratio doesn't look too far off from realism to me.
Of course, we might not actually want hyper realism in a game. I'd balance the mod for fun over realism, but just don't break the dream,build,test loop at the heart of the mod.
You made the physics, I just twiddled it
One thing I do need some advice on, is modifying the displacement model dynamically. Firstly and most importantly, I want to make sure I am understanding the displacement system properly. As far as I can tell;
1. Find the blocks encasing the ship, group them into contiguous regions
2. BFS from each region to 'outside', to see if the region is open or enclosed
- 2a: grab all of the blocks in the enclosed region (i.e making a bubble).
3. (later) Test whether fluid has a path into any open regions, erase fluids in the world from enclosed and inaccessible regions.
From here, removing blocks should be very easy - firstly merge any intersecting regions, and secondly clean up the 3x3x3 around the block. Adding blocks is a bit harder though. I can search from the block until all of the faces connect to regions, merge any intersecting regions, then determine whether those regions are open or enclosed.
This should theoretically work, but it feels sort of like I'm missing something...
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
One thing I do need some advice on, is modifying the displacement model dynamically. Firstly and most importantly, I want to make sure I am understanding the displacement system properly. As far as I can tell;
1. Find the blocks encasing the ship, group them into contiguous regions
2. BFS from each region to 'outside', to see if the region is open or enclosed
- 2a: grab all of the blocks in the enclosed region (i.e making a bubble).
3. (later) Test whether fluid has a path into any open regions, erase fluids in the world from enclosed and inaccessible regions.
From here, removing blocks should be very easy - firstly merge any intersecting regions, and secondly clean up the 3x3x3 around the block. Adding blocks is a bit harder though. I can search from the block until all of the faces connect to regions, merge any intersecting regions, then determine whether those regions are open or enclosed.
This should theoretically work, but it feels sort of like I'm missing something...
Yeah, that's the basic idea for the displacement system.
The simplest thing to do is just re-run the entire displacement pre-calculation whenever the blocks are changed. The code is pretty fast, but it will inevitably lag on the large ships. Them much smarter thing to do is to update the displacement data structures after each block change. Your approach sounds right at a high-level, but it's been a while since I've worked with the displacement code, so I'm not seeing any immediate gotchas. If you're worried about correctness, just set up a bunch of unit tests and compare the updated structures against a full calculation.
The ShipWorld is so annoying to change lol. For example, I had to replace your TE system to make a working block setter, but since your TE system is integrated into so many other parts of the mod, well, yeah, I've basically ended up redoing the ShipWorld a lot earlier than planned.
On the bright side, when I'm done with it, my ShipWorld should work way more like a vanilla world (added chunks and chunk providers, so I can just route almost everything [mostly just minus some entity stuffs] vanilla code again), which will probably make it easier to work on the rest of the stuff the mod needs
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Well, it looks like I also have to rewrite the data persistence engine, some of the ship launching code, ship launching doesn't work between client and server yet. But apart from not being able to handle stuff between client and server, I'm pretty sure I am able to create the ship properly, which is nice (presumably with working tile entities, lighting, etc, but I can't be sure since they currently die instantly due to desync).
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
So I redid the block persistence stuffs, now the implementation is much more explicit, and imo a lot easier to use. Lighting works, but I have to look and see how to enable smooth lighting nvm that was easy. The ship supports dynamic block changes, but it still isn't passed all the player interactions properly. Also TE's somehow cause crashes even though I *copy pasted* the vanilla code, so I have to twiddle that a little bit too.
Oh, almost forgot, ships are also raised up by 127 blocks when they spawn, so when you hit 'launch', you can look up and watch them falling from the sky XD
Apart from that, it's shaping up pretty well
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Looks like you're getting a lot done on the mod. I might not even recognize the code after you're finished. If it ends up being so substantially different, you might even consider just forking the mod. If you really do end up rewriting the whole thing, I see little reason for dealing with PRs and merges and the like.
But seriously, I have changed quite a lot... There was nothing originally wrong with most of the things I rewrote and/or twiddled. But the first changes broke some things, and fixing them broke more, and so on. And I haven't even looked at redoing the [G]UI stuff yet. A separate fork might be the easiest tbh.
On the bright side... I comment everything lots?
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
But seriously, I have changed quite a lot... There was nothing originally wrong with most of the things I rewrote and/or twiddled. But the first changes broke some things, and fixing them broke more, and so on. And I haven't even looked at redoing the [G]UI stuff yet. A separate fork might be the easiest tbh.
I just started playing Minecraft, and want to use this mod. I cannot even build the raft! Watching your first video, how do you place the wood blocks on top of water!??? And then you just have to use one (1) ship block of the appropriate size?
I just started playing Minecraft, and want to use this mod. I cannot even build the raft! Watching your first video, how do you place the wood blocks on top of water!??? And then you just have to use one (1) ship block of the appropriate size?
To place blocks, you have to click the face of another block (aka solid blocks). Since things like air, water, etc, are not solid, you can't click them to place other blocks.
To solve this problem, you just have to extend out from a block that you can click (i.e, a jetty/pier from the shore, a pillar of blocks from the bottom of the ocean, etc). Then yeah, you just place a Ship Block, right click it (like a chest or a furnace) and hit launch (note: the smallest ship block iirc doesn't work with helm and sails, only with a paddle).
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Oh, almost forgot, ships are also raised up by 127 blocks when they spawn, so when you hit 'launch', you can look up and watch them falling from the sky XD
What if there is a roof where you are when you hit spawn?
(In regard to a mod that gives realistic animal genetics):
Would you really rather have bees that make diamonds and oil with magical genetic blocks?
... did I really ask that?
What if there is a roof where you are when you hit spawn?
The ship simply falls till it hits a block (or if it spawns on a block, then it gets stuck). Normally it should spawn directly overlapping the old blocks, but it doesn't, which is a bug.
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Maybe. Depends on how they are coded. No guarantees, but they may simply work by default when I'm done with the ShipWorld.
I tried to put it on ship and it would not work. I don't know if it will work after your improvement. I think maybe you need to code all the logic of that mod into the ShipWorld so that it can work. This open modular turrets mod is base on Thermal Expansion, but I'm not sure whether it's open source or not.
I tried to put it on ship and it would not work. I don't know if it will work after your improvement. I think maybe you need to code all the logic of that mod into the ShipWorld so that it can work. This open modular turrets mod is base on Thermal Expansion, but I'm not sure whether it's open source or not.
It might work on my new ships, provided it doesn't do anything too crazy. I'm doing some magical choo-chah atm, but I really need to test some stuff when I finish adding that in before I can say more.
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
It might work on my new ships, provided it doesn't do anything too crazy. I'm doing some magical choo-chah atm, but I really need to test some stuff when I finish adding that in before I can say more.
Fascinating! I'm looking forward to try your improved mod!
So, apparently the launcher can create ships on the client side, just to display the blocks... Due to some stuff that I did, letting clients create ships arbitrarily just screws things up HARDCORE with the way I'm coping with TEs (like, the client can become convinced that the ship is 20 million blocks away - 50x further than the distance to the Moon).
New approach:
Real ships can only be created on the server - clients can only make fake ships, and ask the server to make real ships.
Re the TE stuff;
Previously, every different TE had to be modded specially so that we could transform it between world and ship space. Now, whether a block is on a ship (and which ship the block is on), can be determined from nothing but the x/z coordinates. Like this, I just have to hack a few vanilla methods, and way more TE's should be able to work.
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
So, apparently the launcher can create ships on the client side, just to display the blocks... Due to some stuff that I did, letting clients create ships arbitrarily just screws things up HARDCORE with the way I'm coping with TEs (like, the client can become convinced that the ship is 20 million blocks away - 50x further than the distance to the Moon).
New approach:
Real ships can only be created on the server - clients can only make fake ships, and ask the server to make real ships.
That was some client-side prediction to hide latency and keep people from falling into the "time gap" between block removal and ship creation. If it's not working for you, feel free to replace it with something that does.
Previously, every different TE had to be modded specially so that we could transform it between world and ship space. Now, whether a block is on a ship (and which ship the block is on), can be determined from nothing but the x/z coordinates. Like this, I just have to hack a few vanilla methods, and way more TE's should be able to work.
That was some client-side prediction to hide latency and keep people from falling into the "time gap" between block removal and ship creation. If it's not working for you, feel free to replace it with something that does.
Oooh, that sounds clever. =P
The idea is, if all ships are offset by a certain amount, we can try to detect this and the is problem solved. Unfortunately, ships firstly don't seem to like being offset, secondly, each ship needs a different offset (to determine which ship is which, so we can rotate), and finally, a ship needs the same offset on both client and server.
In turn, creating ships on the client sort of... messes up the last part of ships having the same offset on client and server. That's not to say it can't work, I just need to make the other things work before I can think about it :'(
Rollback Post to RevisionRollBack
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Nice work!!
That ratio doesn't look too far off from realism to me.
Of course, we might not actually want hyper realism in a game. I'd balance the mod for fun over realism, but just don't break the dream,build,test loop at the heart of the mod.
You made the physics, I just twiddled it
One thing I do need some advice on, is modifying the displacement model dynamically. Firstly and most importantly, I want to make sure I am understanding the displacement system properly. As far as I can tell;
1. Find the blocks encasing the ship, group them into contiguous regions
2. BFS from each region to 'outside', to see if the region is open or enclosed
- 2a: grab all of the blocks in the enclosed region (i.e making a bubble).
3. (later) Test whether fluid has a path into any open regions, erase fluids in the world from enclosed and inaccessible regions.
From here, removing blocks should be very easy - firstly merge any intersecting regions, and secondly clean up the 3x3x3 around the block. Adding blocks is a bit harder though. I can search from the block until all of the faces connect to regions, merge any intersecting regions, then determine whether those regions are open or enclosed.
This should theoretically work, but it feels sort of like I'm missing something...
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Yeah, that's the basic idea for the displacement system.
The simplest thing to do is just re-run the entire displacement pre-calculation whenever the blocks are changed. The code is pretty fast, but it will inevitably lag on the large ships. Them much smarter thing to do is to update the displacement data structures after each block change. Your approach sounds right at a high-level, but it's been a while since I've worked with the displacement code, so I'm not seeing any immediate gotchas. If you're worried about correctness, just set up a bunch of unit tests and compare the updated structures against a full calculation.
The ShipWorld is so annoying to change lol. For example, I had to replace your TE system to make a working block setter, but since your TE system is integrated into so many other parts of the mod, well, yeah, I've basically ended up redoing the ShipWorld a lot earlier than planned.
On the bright side, when I'm done with it, my ShipWorld should work way more like a vanilla world (added chunks and chunk providers, so I can just route almost everything [mostly just minus some entity stuffs] vanilla code again), which will probably make it easier to work on the rest of the stuff the mod needs
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Well, it looks like I also have to rewrite the data persistence engine, some of the ship launching code, ship launching doesn't work between client and server yet. But apart from not being able to handle stuff between client and server, I'm pretty sure I am able to create the ship properly, which is nice (presumably with working tile entities, lighting, etc, but I can't be sure since they currently die instantly due to desync).
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Let there be light[ing].
So I redid the block persistence stuffs, now the implementation is much more explicit, and imo a lot easier to use. Lighting works,
but I have to look and see how to enable smooth lightingnvm that was easy. The ship supports dynamic block changes, but it still isn't passed all the player interactions properly. Also TE's somehow cause crashes even though I *copy pasted* the vanilla code, so I have to twiddle that a little bit too.Oh, almost forgot, ships are also raised up by 127 blocks when they spawn, so when you hit 'launch', you can look up and watch them falling from the sky XD
Apart from that, it's shaping up pretty well
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Wow, rewrite all the things!
Looks like you're getting a lot done on the mod. I might not even recognize the code after you're finished. If it ends up being so substantially different, you might even consider just forking the mod. If you really do end up rewriting the whole thing, I see little reason for dealing with PRs and merges and the like.
But seriously, I have changed quite a lot... There was nothing originally wrong with most of the things I rewrote and/or twiddled. But the first changes broke some things, and fixing them broke more, and so on. And I haven't even looked at redoing the [G]UI stuff yet. A separate fork might be the easiest tbh.
On the bright side... I comment everything lots?
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
could you make open modular turrets work on the ship?
Haha, yes! Glad you got the reference. Also, this:
https://twitter.com/danielwithmusic/status/733946463588208640
I just started playing Minecraft, and want to use this mod. I cannot even build the raft! Watching your first video, how do you place the wood blocks on top of water!??? And then you just have to use one (1) ship block of the appropriate size?
Maybe. Depends on how they are coded. No guarantees, but they may simply work by default when I'm done with the ShipWorld.
That is so true omg.
(also, Hyperbole and a Half, possibly the most hilarious blog ever written)
To place blocks, you have to click the face of another block (aka solid blocks). Since things like air, water, etc, are not solid, you can't click them to place other blocks.
To solve this problem, you just have to extend out from a block that you can click (i.e, a jetty/pier from the shore, a pillar of blocks from the bottom of the ocean, etc). Then yeah, you just place a Ship Block, right click it (like a chest or a furnace) and hit launch (note: the smallest ship block iirc doesn't work with helm and sails, only with a paddle).
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
What if there is a roof where you are when you hit spawn?
* Promoting this week: Captive Minecraft 4, Winter Realm. Aka: Vertical Vanilla Viewing. Clicky!
* My channel with Mystcraft, and general Minecraft Let's Plays: http://www.youtube.com/user/Keybounce.
* See all my video series: http://www.minecraftforum.net/forums/minecraft-editions/minecraft-editions-show-your/2865421-keybounces-list-of-creation-threads
(In regard to a mod that gives realistic animal genetics):
Would you really rather have bees that make diamonds and oil with magical genetic blocks?
... did I really ask that?
Okay... So... what...
(lighting almost... AO seems to be offset somehow... I don't understand why... non-smooth lighting still works fine, at least).
Also might need to do some magical mumbo-jumbo with player entities and GUIs...
The ship simply falls till it hits a block (or if it spawns on a block, then it gets stuck). Normally it should spawn directly overlapping the old blocks, but it doesn't, which is a bug.
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
I tried to put it on ship and it would not work. I don't know if it will work after your improvement. I think maybe you need to code all the logic of that mod into the ShipWorld so that it can work. This open modular turrets mod is base on Thermal Expansion, but I'm not sure whether it's open source or not.
It might work on my new ships, provided it doesn't do anything too crazy. I'm doing some magical choo-chah atm, but I really need to test some stuff when I finish adding that in before I can say more.
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
Fascinating! I'm looking forward to try your improved mod!
So, apparently the launcher can create ships on the client side, just to display the blocks... Due to some stuff that I did, letting clients create ships arbitrarily just screws things up HARDCORE with the way I'm coping with TEs (like, the client can become convinced that the ship is 20 million blocks away - 50x further than the distance to the Moon).
New approach:
Real ships can only be created on the server - clients can only make fake ships, and ask the server to make real ships.
Re the TE stuff;
Previously, every different TE had to be modded specially so that we could transform it between world and ship space. Now, whether a block is on a ship (and which ship the block is on), can be determined from nothing but the x/z coordinates. Like this, I just have to hack a few vanilla methods, and way more TE's should be able to work.
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.
That was some client-side prediction to hide latency and keep people from falling into the "time gap" between block removal and ship creation. If it's not working for you, feel free to replace it with something that does.
Oooh, that sounds clever. =P
The idea is, if all ships are offset by a certain amount, we can try to detect this and the is problem solved. Unfortunately, ships firstly don't seem to like being offset, secondly, each ship needs a different offset (to determine which ship is which, so we can rotate), and finally, a ship needs the same offset on both client and server.
In turn, creating ships on the client sort of... messes up the last part of ships having the same offset on client and server. That's not to say it can't work, I just need to make the other things work before I can think about it :'(
I believe in the Invisible Pink Unicorn, bless her Invisible Pinkness.