Terrain water buoyancy BREAKS for assemblies with a ControllerManager the moment the ActiveController property is set to a GroundController

While testing my custom character controller system, I noticed that once an assembly with a ControllerManager instance is inside of Terrain water with a GroundController instance set to be the ActiveController and close enough to the ground to have it’s Active property be true, it COMPLETELY breaks the Terrain water buoyancy effect on the assembly, changing the density of the assembly makes absolutely no difference, deleting the ControllerManager instance does not restore the behavior and this essentially ruins the physics of the part.

It seems like the issue started today, as this has never happened before in any of my tests.

System Information:
CPU: 11th Gen Intel(R) Core™ i7-11800H @ 2.30GHz
RAM: 32 GB @ 3200 MHz
GPU: NVIDIA GeForce RTX 3070 Laptop GPU
OS: Windows 11

Video file: https://youtu.be/IxfpyglbDa4

Repro file: BuoyancyBreakingIssue.rbxl (62.4 KB)

Repro steps:

  1. Open the file.
  2. Press run.
  3. Set the ActiveController property of the ControllerManager to the GroundController instance found under ControllerManager
  4. GroundController must show that it’s active, as it is essential into making this issue appear.
  5. Set the ActiveController property of the ControllerManager to literally anything, in this case you set it to nil (can also be the SwimController or AirController, does not matter, it behaves the exact same.)
  6. Move the part in any single way, and now you can see that buoyancy physics from Terrain water no longer apply to this assembly. Changing to different controllers, setting the RootPart property to nil or even simply destroying the ControllerManager instance does not fix the missing buoyancy effect, essentially ruining the part’s physics in Terrain water.

This is really affecting my character controller system as my swimming entirely depends on water buoyancy to move around in the water. This issue makes the assembly instantly sink to the bottom. I haven’t found any workaround for this, so a fix for this is urgently needed.

Expected behavior

Terrain water buoyancy physics should apply regardless of the properties that the ControllerManager has, and should never break.

1 Like

Thanks for reporting this issue and providing a reproducer. We will take a look and get back to you.


@kckhem It looks like another engineer disabled a fast flag relating to Terrain water buoyancy issue (which seemed to also affect the Humanoid instances (based on other recently created bug reports), not just the ControllerManager instance) and it seems to have fixed the issue in both the repro file and my custom character controller system. I’m guessing this fast flag was the cause of the issue I reported?

1 Like

Hello yes that flag caused this bug too. Thank you for verifying that this is now fixed.