Dynamically simulated water

I’ve been looking into water simulation, and it appears that there are a variety of methods for simulating semi-realistic looking water. The “pipe method” (mentioned in section 4.5 of this thesis) is simple, extremely fast, straightforward to generalize, and has GPU implementations. Also, calculating the flow velocity is straightforward, which would make it easy to have objects be carried by the water. Here is a video produced by the paper’s author, where he simulated a 512x512 water heightfield using said method at 200 frames per second on his laptop:

I’m not quite an expert, but I feel pretty confident that this method could be extended for a terrain that has caves, using some sort of graph-based structure instead of a grid heightfield. I was going to implement this on my own for my Minecraft-inspired sandbox game, except after thinking about it, I concluded 1) I know ROBLOX could make it better/faster than I possibly could in Lua, and 2) I think this would be great for ROBLOX games in general, as it opens up the possibilities for games with interactive and dynamic environments. Aside from sandbox games, imagine the possibilities for games that include sailing, underwater/underground exploration, or flooding. Those types of games would benefit greatly from dynamic water simulation.

Anyway, this personally makes me pretty excited thinking about it, so I’m a little biased about it, but I also feel like it’s a good opportunity for ROBLOX. So I’d just like to put this out here :slightly_smiling_face:

36 Likes

I’m like 99% sure roblox doesn’t add cool features like this because they need pretty much every game to be playable on mobile

13 Likes

I’m sure there’s reasonable trade offs that can be done for mobile. Btw, the fluid simulation would be done on the server; no need to overload the client more than it needs to be. ROBLOX would just have to figure out how to interpolate the water between frames, since they probably can’t send the fluid simulation data every single frame. Linear or cubic interpolation should be fine. (FFT-based interpolation might produce interesting results.) On higher-end machines they could use the full simulation algorithm to compute missing frames.

2 Likes

What I’m not sure of, is why Roblox can’t allow developers to make a game look as good as they want to - even if it severely limits their playerbase to people with midtier to high end gaming machines - Epic Games doesn’t limit their developers to games that can run on a toaster or mobile; their engine editor itself doesn’t even run good on most machines - it should be up to the developer if they want to support said hardware or mobile in general.

I think giving developers more features to make their games look better, including this feature you shared, @suremark, I think would overall increase the quality of Roblox. :stuck_out_tongue:

I think a good way to allow something like this to run on Mobile would be to change the triangle count of the water depending on settings - or allow players to turn off the high poly count all together.

13 Likes

If someone goes and plays an Epic Games game on their crappy computer, more often than not they’ll blame the developer, or understand the limitations of their machine. It’s typically a much more mature demographic

Roblox is a very a social platform that relies on kids playing together with their friends. Young people, that may say “roblox sucks I’m lagging so much on this game” instead of understanding it may not be roblox’s fault. Not to say that I disagree with you, but I think it does make things a bit trickier in my opinion.

Lots of people still think of roblox as one big game unfortunately, and not a game creation platform

8 Likes

I think that could be due to how Roblox used to market themselves, before they decided to transition into something closer to Unity or Unreal.

The problem with this statement, is even while it might be a more mature demographic for Epic Games, that doesn’t necessarily mean kids are dominating the population in Fortnite. Same applies to IW and Call of Duty, or 343i with HALO - the label “M” doesn’t mean anything anymore.

Of course, if people blame Roblox for developers making their games only run well for mid-high end machines, that’s their problem, no one else’s. :wink:

4 Likes