I’m not too sure if you understand that I’m trying to say, so my idea is to do this in a local script
Clear all water
Create a ball of water at the position of the player’s camera
Clear all water above sea level
and boom you’re good to go, if posible you should try to make the ship float on water
and for swimming, you can just make water around the player’s character as well
take a part and let it follow the players x,z position
when the player is inside it (you could detect it with region3) parent a posy position or something similer to the players root part. so he keeps (floating)
you can apply effect like bloom and color correction to the lighting as well and axtivate them when tje camera is under water aka in thw region 3
Alright listen, asking people to make assets and scripts for you is against the rules of developer forum, but I did make the script, next time please try your best to make the script youself.
Also, change the WaterSize variable to make the water bigger.
And make sure that there is a part called “WaterRef” in your workspace.
Put this script in a LocalScript in the StarterPlayerScripts
--Configuration
local WaterSize = 40;
--Services
local RunService = game:GetService("RunService");
--Assets
local Terrain = game.Workspace:WaitForChild("Terrain");
local WaterRef = game.Workspace:WaitForChild("WaterRef");
--User
local Player = game.Players.LocalPlayer;
local Camera = game.Workspace.CurrentCamera;
local Character;
local HumanoidRootPart;
--Variables
local CreateSize = Vector3.new(WaterSize, WaterSize, WaterSize);
local ClearSize = (CreateSize * 2);
--Functions
local function GetWaterRefTop()
--Get the top position of the water ref
return (WaterRef.Position.Y + (WaterRef.Size.Y / 2));
end
local function ClearWater(Position)
--Create the region
local Region = Region3.new((Position + (ClearSize * -1)), (Position + ClearSize));
--Clear all water neaby
Terrain:ReplaceMaterial(Region, 4, Enum.Material.Water, Enum.Material.Air);
end
local function CreateWater(Position)
--Create the water
Terrain:FillBlock(CFrame.new(Position), CreateSize, Enum.Material.Water);
--Cut off all water above the sea level
Terrain:FillBlock(CFrame.new(Position.X, (GetWaterRefTop() + (WaterSize / 2)), Position.Z), CreateSize, Enum.Material.Air);
end
RunService.RenderStepped:Connect(function()
--Get needed assets and variables
Character = Player.Character;
if Character then
HumanoidRootPart = Character.PrimaryPart;
end
local CameraPosition = Camera.CFrame.Position;
CameraPosition = ((CameraPosition * Vector3.new(1, 0, 1)) + Vector3.new(0, GetWaterRefTop(), 0));
--Clear all water near the Camera and the character
ClearWater(CameraPosition);
if HumanoidRootPart then
ClearWater(HumanoidRootPart.Position);
end
--Create water near the Camera and the characer
CreateWater(CameraPosition);
if HumanoidRootPart then
CreateWater(HumanoidRootPart.Position);
end
end)
Ok i read your topic i guess there’s a solution whenever you think the sea generation, you add a teleportor to another place dividing your game into different oceans and seas.
I mean you will have to make multi place game.
This is a concept map about what i mean to say.
If you were willing to forgo the SmoothTerrain aspect to the water/islands you try to do what Pirates of the Caribbean Online did with its overworld ocean. The boat stayed stationary while tiled meshes of water and small-scale versions of the islands were dotted about. Sailing moved the whole ocean (client sided) rather than moving the boat, and the bouncing of the sea was just lerping the mesh(es) around the boat. You’d lose out on some immersion but it sounds drastically easier to implement and would cut down on the tedium of designing such an enormous map.
Yes, this is multiplayer, it’s supposed to be a large player server as well, due to the fact it has a lot to do with multiple people, like a team game.
You are describing a 10k x 10k smooth terrain map featuring detailed underwater and overworld features, any implementation of this is likely going to pose problems on the developer/players. There is a way to save terrain in Region3 definitions with TerrainRegion (roblox.com) and you may be able to emulate a chunk-loading system a la Minecraft, but I’d really consider shortcutting this much work with a simple mesh overworld to act in place of physically moving players through an ocean in-between islands. Check out POTCO like I said, it was a very fun game but also a clever way to simplify the vast space of the game by sectioning it into islands or ocean, not both.