Realistic Water Terrain Boat

I’ve scoured the devforum for hours now looking for a solution, but I’m out of luck, so I’m gonna ask here. Can someone help me make a boat that can realistically float on terrain water? I don’t mean just an unanchored part in water, I mean actual boats like in Sea of Thieves where the boat rocks back and forth/side to side based on the water height below it. Help would be appreciated, because every devforum post I’ve found on this is too vague, or people never respond after their first answer making it impossible to follow and ask questions for. Thanks.

1 Like

It is extremely frustrating for me too that roblox water by default doesn’t have wave physics, and there is no way around it.

If you want to make boats float on water in a realistic manner, that’s not possible on terrain water. We have some hacky methods such as Sampling Terrain Water Height at Any Position

But, they are also not 100% accurate and tend to increase in inaccuracy over time, and at the end look complete shit with the wave being desynced, because we don’t have access to the wave clock.

Anyway, as I was saying, you can always try to make custom water with mesh deformation and then make your boat float on it using BodyMovers. But, it will be laggy and the water will look shit, even with PBR textures, because you can’t animate the texture.

TL;DR

If you want to make boats have good physics and the water to look good too, IT IS NOT POSSIBLE IN ROBLOX.

If you still have a question regarding custom water, feel free to dm me or search the devforum, although there aren’t many resources regarding this.

Thanks for responding. I did attempt to follow this tutorial, but like I said its lacking because the guy does provide the boat he made, but the script is extremely minimal and there are literally functions he doesn’t provide, which I wish he just provided a .rbxl file instead of not even providing all of his script

Edit: people also asked him about the functions and such later and he didnt respond

Its alright, it does require extensive knowledge.

I suppose you are having problem in angling the boat. For that I would recommend something like this:

local xVector = (leftPos - rightPos).Unit
local zVector = (frontPos - backPos).Unit
local yVector = xVector:Cross(zVector)
BodyGyro.CFrame = CFrame.fromMatrix(Vector3.new(), xVector, yVector, zVector)

leftPos, rightPos, frontPos and backPos are the wave heights at the respective corners of the boat btw, their vector3s.

I will help you further if you want.

1 Like

I don’t know how to even set up the boat in the first place, I don’t know where I would get the positions from

I think your best bet might be to create artificial sway motion, perhaps by scripting varying mass in an invisible part?

I did this to a small extent in my float plane, but I used a vectorforce pointed up that just fires in an interval and range of force to create a rocking motion. It more like the type of motion you’d get in a pond or lake vs an ocean though.

No offense, but in that case I don’t think you have the knowledge required to do this.

Yeah, thats because there are no good resources to help me in the first place… I could barely even find one post that had a model with a skinned mesh ocean, let alone a whole way to make a boat

the boat is a free model? just make your own tbh