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

As far as I can tell it’s fixed all the issues I reported. :+1:

4 Likes

Enabling optimization for Windows and Mac Clients once again, since last issues reported seem to be fixed.

4 Likes

FYI, Disabled this on Mac only (still enabled on Windows non Windows 10 store) due to a crash on Shutdown/Teleport that we can see happening.

EDIT: Re-enabled on mac on 05/19

4 Likes

@Khanovich I think I found the bug in this update. Im testing this on a mac.

https://gyazo.com/71c04e4e497e1a559ef15f16ed5adbcf

Here is what’s happening. All these parts have cancollide enabled but for some reason you can walk into them, and when you do they jitter a lot.

This is the code:

local MAIN
local Heartbeat = game:GetService('RunService').Heartbeat


for x = 0,4000 do
	if x%500 == 0 then
		Heartbeat:Wait()
	end
	
	local y = 5
	
	if x%2 == 0 then
		y = 8
	end
	
	local P = Instance.new('Part')
	P.Parent = workspace
	P.Size = Vector3.new(3,3,3)
	P.Position = Vector3.new(x * 3,y,0)
	
	if MAIN == nil then
		MAIN = P
	else
		local Weld = Instance.new('WeldConstraint')
		Weld.Parent = P
		Weld.Part0 = P 
		Weld.Part1 = MAIN
	end
end

When I spawn 4000 parts like in the code above this happens, but when I spawn under 3000 this doesn’t happen. (The weird jittering still happens under 3000 parts though).

Here is the place file.

WeldTest.rbxl (29.0 KB)

Also, this bug doesn’t happen in studio. (Though when you press play in studio the assembly doesn’t get physically simulated. It’s unanchored but doesn’t fall when I delete the baseplate.) (Works when you press “Run”)

I’m proud of you man. You make kids happy

Any updates on the bug I reported? Since it breaks my build loading code.

What is your use-case for an assembly this long? Something “simulated” and welded that long won’t behave very well on Roblox. With this optimization enabled, we had to cap some of the collision detection length at 10,000 studs for a welded collection of parts.

Nonsimulated/anchored objects are uncapped.

3 Likes

Oh, basically i’m making a game like space engineers on roblox and when I went to a world I built my creations were broken (a huge railway system). It’s a physics based game so anchored objects kinda ruins the experience.

The idea of the game is to build as much as your computer can handle, but I guess 10,000 stud’s is a good enough cap if it causes a lot of issues longer than that. Even space engineers has the collision problem with super long grids.

Could you add an API that allows us to know if an assembly will be capped if a certain block is added to it for example Part:WillAssebmlyCap(CFrameOfPart, SizeOfPart), since I can’t use model:BoundingBox() as welded parts in the game are not grouped together in a model. (Reason is when a part is deleted from the assembly I would have to reparent all the part’s attached to the deleted part which is really expensive).

Is there any other behavior that this update introduces?

Nothing otherwise. This was a necessary change that we gathered data on and found almost no one using objects > 10,000 studs.

Long-term we want to remove this limit, but it will take quite a bit of engineering but because of that long-term goal I’m not sure we want to add an API. I could help you write a script that would detect something like this for you, where you pass it a set of parts, pass a potential additional part and estimate whether it will cap.

1 Like

Yah, if you could that would be great. I tried a solution with region3’s but they all failed because:


https://gyazo.com/5aee34294141d3497f1cdc8cfa8ebda1

If the assembly was rotated it would be considered capped already due to it having part’s outside of the the 10k by 10k region in my code.

I just looked at the code that caps Assembly extents and I would treat this as a bug. Basically if your assembly is grid-aligned when the last weld is created, it will create a “minimum” extents and use that as a “cap”. You are correct with the current code if your assembly is 45 degrees off grid, the capping will start significantly sooner.

I’m going to make a ticket and try to fix this so that a trivial script should be able to detect whether you are going to hit the cap or not.

EDIT: I think for now if you check for length under 7000 you should be good for the time being. I will fix the cap calculation.

2 Likes

Btw, the grid aligned thing, is the grid used the voxel terrain grid or some other grid?

What I mean by grid aligned, is simply the world grid. As long as the longest side of your assembly is aligned with X,Y, or Z you should get a fairly “tight” Extents in this case.

2 Likes

so is this still gonna happen?

No need for you to bump a year old thread. If you look at the post, they updated it with info.

It already happened.

1 Like

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.