Upcoming Optimization to Collision Detection System - Beta Test on Mac Clients soon

UPDATE 01/14/2021
This has been enabled on Mac (OSX) only, as a “partial rollout” to monitor for any outstanding issues that are difficult to catch during QA. If you are a Mac player please report any strange behaviors you see. The rollout happened at around 7:00am PST. I will update here again before enabling or if I have to disable.

Thank you for the patience with this!
END UPDATE

QUICK UPDATE 12/3/2020
I won’t be doing Place-specific testing anymore because of the way the feature is coded, it runs risks in our code that enables features on only specific places. In a few weeks what I will do is enable this on Mac Clients. This should be a fairly contained way to test this feature at a smaller scale. I will post here again when I’m about to enable on Mac Clients.
END UPDATE

Hey yall,

For the last year or so I’ve been planning/developing/testing a pretty massive optimization to the collision detection system. The goal is to not change behavior, but to optimize some of the pain-points that our existing collision system had.

Currenty, in Roblox, if you weld 15 bricks together and throw them down a cliff, they move and simulate as a single object, however in the collision detection pipeline, that movement has to update 15 different entries into our Broad Phase system, which is the first stage of collision detection. When this Broad Phase system decides there may be potential collisions between parts, it creates requests for the Narrow Phase portion of the Collision Detection to find exact locations and incident normals.

The feature that I have been working on changes our collision detection from a 2-phase to a 3-phase. Instead of Broad Phase -> Narrow Phase, we will now have Broad Phase -> Mid Phase -> Narrow Phase. The biggest win here is for the ability to mark those 15 welded bricks as a singular moving object with the Broad Phase, significantly improving the simulation speed of many-part objects like Humanoids.

Places that should benefit from this:

  • Any game with many Humanoids
  • Any game with moving objects that are made of multiple “Welded” Part Instances.

BEFORE WE RELEASE THIS GLOBALLY

I would like to ask for some volunteers to test this in their games. I’ve done a lot of work doing testing on various live games when I played on my client, but there is only so much this can cover. I’ve done all the testing I could and that our QA could, and its time to test this on a few live games.

Because this change affects some physics-based APIs, I would love to get some games that rely on things like Raycasts, FindPartsInRegion3, TouchEvents, GetTouchingParts and any other physics specific APIs!

What’s in it for the Volunteer Testers?

Left is a bunch of welded bricks with the new system enabled, right is a bunch of welded bricks in the current live system. No time was altered, they were both running at the same time.

If you would like to volunteer, please list PlaceID for the game you would like to test this on. I will only accept PlaceIDs from verifiable owners of games. We will start testing first week of December! If all goes well, we will be able to enable globally fairly shortly after.

Thank you all!

199 Likes

I could help with this. 5757753400 is my placeid.

3 Likes

I wouldn’t mind volunteering. PlaceID : 5976424331

3 Likes

I can do this, I got a game we could use.

5879401237

3 Likes

663027247


Thank you for beta testing this first, I’m very glad that Roblox listens to the community and took this approach!


@Swordphin123, @EtiTheSpirit

You guys should definitely check this one out as a lot of people are using your module Raycast HitBox and FastCast which is effected by this change

3 Likes

I would like to volunteer: 5985908443

2 Likes

Although the objects technically aren’t welded together, with this new system would we see a performance uplift when using BulkMoveTo()?

3 Likes

I think this will be interesting, as my game has yet to be released, I too would like to test the new physics system as I rely on physics for Anti Cheat (server-side) and also use raycasting for guns & such.

5618610587

3 Likes

My game uses like 55 joint character models and the vehicles have tons of parts as well. I’m excited!!!

9 Likes

We would love to volunteer!

5 Likes

I would love to volunteer as well. I wonder how it will affect the buses.
Place ID: 4636955314

Looks pretty interesting, I’d like to test it.

Place ID: 5993627093

1 Like

Wow, I can‘t believe. This will be an amazing update (once relased)! Unfortunately, I don‘t have any game where I could test this, but could I test this like in the next month? And how did you find this new collision detection system + why exactly this and not any other colision system that exist?

Our game’s spells rely on raycasting and our weapons rely on TouchEvents, mixing in FindPartsInRegion3 in some spots, and as such we would like to apply for this.
Place ID: 4674670680

2 Likes

Our game has huge models (airplanes) that are moved via one part moving an entire welded model. I think our game would be a great test for this. I don’t own the game or the group, but I’m here on behalf of the dev team.

Although the game isn’t public as of now, we have an active team of volunteer testers with a wide range of devices.

Place ID: 3152852093

1 Like

I dont mind PlaceID: 5163847247


ID: 5717071250
This is the testing place for my real game. I’d love to see how it effects it but because this is a beta test, I don’t want it to break my main game.

Quick question: does this mean Touched will finally provide data on where exactly an object collided with another object (point of collision)? If so, that would be great!

1 Like

4164611889 - would love to see how this works out. This game has large server-size, all humanoids, also uses Humanoids for the NPC system. Lots of Raycasts and Region3 going on, too.

You say first week of December however can we get a heads up when it’s officially turned on for our place?

Would like to help with this, my place at ID 4997847806 relies on a ship that is welded to a single part which controls movement.