Significant Server Performance Degradation After Boat System Introduction

After introducing a new boat system to our game, we began experiencing severe server performance degradation on live servers. While all internal testing, including multiplayer sessions, showed no issues, production servers began to exhibit frame rate drops to nearly 0 FPS after a period of uptime.

Upon investigation, we identified a consistent and critical symptom: a gradual increase in ContactsCount, reaching values of 200,000+, whereas prior to this update it consistently remained at or near zero.


Reproduction:

  • Environment: Live servers (not reproducible in Studio or test environments)
  • Trigger: Unknown — occurs gradually over time following boat usage
  • Persistence: Performance degradation continues even after all boats are destroyed, and ContactsCount does not decrease

Diagnostics & Observations:

We performed diagnostics on affected servers and compared them to unaffected (pre-boat) servers using MicroProfile. Key findings include:

  • Substantial increase in:

    • updateNOUOwners
    • Step Contacts
  • ContactsCount increases over time and does not reset, even after boat models are removed


Attachments:

Boat System Details:

  • Based on a heavily modified version of a public boat chassis
  • Most computational logic is offloaded to the client
  • Boats use Roblox terrain water for collision
  • Network ownership is set to clients where possible

Key configurable parameters in the chassis include:

  • AccelerationInSeconds
  • DockingMultiplier
  • GyroTorque
  • MultiEngine
  • ThrottleMultiplier
  • TurnMultiplier

Troubleshooting Performed:

  • Reproduced issue only in live server environments
  • Tested with multiple users and sessions in Studio – no issues observed
  • Destroyed all boats mid-session – ContactsCount and lag persisted
  • No observed memory leaks or runaway physics instances via internal logging

We’ve conducted additional testing using a completely different boat system (unrelated to our original implementation), and we are still experiencing the same issue — server performance degradation over time, with ContactsCount steadily increasing.

This strongly suggests that the problem is not tied to the specific boat chassis or codebase, but rather to something more fundamental — potentially physics interactions with water or terrain-based collisions.

Additional Observations: The issue only seems to occur when players interact with water (e.g., entering boats, physics-based objects floating, etc.)

In test environments (Studio or isolated multiplayer tests), the problem remains non-reproducible In production, the issue reliably appears over time.

The affected experience is linked: [BOATS!] Fire Response: Kenterbury - Roblox

Just updating this thread with further details accurate as of 21:50 UTC/16:50 EST.

The FRK game linked and marked as the affected experience is our production environment which has had boats disabled/removed yet has continuous deterioration of server speed and performance.

The test environment (dev) has the most recent update enabled on it yet has no performance issues.

My initial reaction is a dodgy flag needing disabling or a property which did not get changed on publishing to our production game causing these issues.

Here’s a link to the testing game: [BOAT TEST] Fire Response: Kenterbury - Exclusive - Roblox

Please mark this as critical.

1 Like

Can you provide a more isolated repro in a rbxl?
The updateNOUOwners increase implies that this is leaking parts through a script.

Hi @subcritical, I’ll continue this in private dm

Quick update outside of the Private staff DM for future reference, it was a part leak in a script which had been around for a while (unknown to us) until the boat update aggravated it to cause server issues.

We won’t be publicly giving a repro case due to the codebase not being public, but reach out if I can be any help to anyone experiencing similar issues.

This is good to be marked as solved - thanks to @subcritical for the responses given.