Specific pair of collision groups don't abide by their CollisionGroupSetCollidable configuration

Hey y’all, I’ve run in to an issue that simply has me stumped.
I’ll be outlining a few things about my game first, just in case the details matter.

So, my game has a bunch of collision groups, I’ll be talking about the three important ones that apply to this issue:

  • ClientObjects;
  • OtherPlayers;
  • OnlyCollideWithPlayers

These collision groups are registered and configured via a server script.

The game has this system where if a player touches a portal, they enter an obby and a bunch of objects are loaded client-side. This system is meant to make it so that any moving or interactable objects in the obby are only affected by the player that has loaded said objects.
If multiple players load the same obby, the above mentioned collision groups are there to prevent other players from interacting with another client’s client-side objects.
On each client, every player that isn’t the client’s player has their character parts’ collision group set to “OtherPlayers”, and client-objects that had the “Default” collision group set are automatically set to the “ClientObjects” collision group once an obby loads.

Now that all of that info has been outlined, this is where my issue comes in. Client-side physics objects that have the “ClientObjects” collision group do not collide with players that have the “OtherPlayers” collision group, just as intended, however, client-side physics objects that have the collision group of “OnlyCollideWithPlayers” do collide with players that have the “OtherPlayers” collision group, despite both collision groups having been configured not to collide with each other in the code.

Here’s a visual example of what’s happening:
Medal_qLRJqXRCAd
Player 2 is pushing the physics object. Said physics object has its collision group set to “OnlyCollideWithPlayers”, and Player2’s collision group is set to “OtherPlayers” on Player 1’s client

And here is an image showing that the problematic collision groups are indeed set to not collide with each other:


Despite the above image showing that both collision groups are set to not collide with each other, the game ignores that, but only for this specific pair of collision groups for some reason (“OnlyCollideWithPlayers” & “OtherPlayers”)

If anyone has any ideas as to why this could be happening, please let me know!

The issue you’re describing typically stems from collision group configuration timing or part assignment order. Here’s what’s likely happening:**Common culprits:**1. Parts assigned before groups are configured — If client objects are getting their collision group set before CollisionGroupSetCollidable() is called, they’ll ignore the ruleset. Reverse your order: configure all group relationships first, then assign parts to groups.2. Mixed filtering behavior — You can’t partially ignore collision rules. If ClientObjects and OtherPlayers are set to not collide, they simply won’t. Verify you’re not accidentally reassigning parts to Default group somewhere in your loading logic.3. Character respawns/reloading — When players respawn or their characters reload, new part instances are created. If your collision assignment script doesn’t fire again for those new parts, they’ll stay in Default and collide normally. Hook this into character loading:lualocal Players = game:GetService("Players")Players.PlayerAdded:Connect(function(player) player.CharacterAdded:Connect(function(character) for _, part in pairs(character:GetDescendants()) do if part:IsA("BasePart") then pcall(function() game:GetService("PhysicsService"):CollisionGroupSetMember("OtherPlayers", part) end) end end end)end)Debugging steps:- Print collision group membership immediately after assignment to confirm parts are actually in the groups- Test in a fresh server with minimal setup to isolate if another system is interfering- Check for physics simulation delays — collision rules apply immediately, but sometimes physics needs a frame to catch upAlso verify that OnlyCollideWithPlayers has the correct ruleset configured — it should be colliding with OtherPlayers but not ClientObjects. The bidirectional nature of CollisionGroupSetCollidable() can trip people up if one direction isn’t set.

The bidirectional nature of CollisionGroupSetCollidable is likely the culprit. If you only set one direction, the physics engine might still resolve the collision. Make sure you’re explicitly calling it for both directions or just rely on the fact that it’s a single toggle for the pair.

Updating this thread because I just found the solution.

There was a typo. The problematic objects had the collision group set to “OnlyCollideWIthPlayers” instead of “OnlyCollideWithPlayers”. Notice where the typo is? I don’t blame you if you don’t, but yeah, guess if anyone else runs in to this sort of issue, double check the spelling of your collision groups lol.

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