It is enabled now (game servers need to be restarted for it to have effect)
How to understand if CSG v3 is currently working on servers in roblox? Or does it need to be enabled somewhere?
Wait, I forgot is this enabled for in-game apis?
It is enabled only on servers. Devs have nothing to do to migrate to CSG v3 in experience. both SubtractAsync and UnionAsync now use CSGv3
@ROBORAPTOR2468 @BravenwolfTFS
Still working on that issue. The cylinder / sphere issue is less a problem here as weāre talking in-game APIs where accurate alignment / positioning is not as required as in Studio for modelling.
I will update you on the progress as soon as I have information.
Gotcha, just wanted to be sure it wasnāt the full roll-out yet. Thanks for clarifying!
Hi @Aerodymier,
If you are still having this issue, are you willing to share an example so I can take a look at this issue faster?
Sure, itās definitely not happening as frequent as before but when I get home Iāll share an example.
Hereās a video I recorded:
Iāll also PM you this asset since itās a game asset which I actively use.
As you could see, their CollisionFidelity was that precise convex option however one door space still had a non-collidable area. When I separated that union and then reuinoned it then set the collision fidelity again, the issue went away.
Thank you for the model file and the video. Your own solution is best way to fix issues like this. Separate the Union, then Union again and choose the CollisionFidelity
.
The reason you are seeing this issue is that Roblox is improving things continuously and this case is an example where you have an asset that is created before a minor patch to the collision geometry computation.
I recommend turning on the Show Decomposition Geometry
from File>Studio Settings>Studio
. This option will show you how the gameās physics engine is dealing with object collision.
Before:
After:
I will take a deeper look to see whatās special about this older model that prevents the CollisionFidelity Update.
Thanks, Iāll also check my other assets for this issue with that setting. Previously a lot of other assets had this issue but somehow now they donāt have it. This one still has it.
Update. We just (Monday) released an improvement to CSGv3 that should have an effect in both studio and in experience. This should significantly improve the speed on subsequent operations. Especially on large number of operation on same body. More to come.
Should we post csg v3 issues here or on the āCsg has a new enginr, vroom vroom,ā?
I was hoping āspeed on subsequent operationsā would have an effect on my try to implement undiscovered-fog-of-war.
But it still lags and visibility clitches after a lot of SubtractAsync operations.
I already gave up on this implementation. But still have hopes.
My example:
Will this kind of SubtractAsync ever be supported?
This could work, but youāve got to help the engine out a little bit to get there:
-
You canāt handle it as one big part. Inevitably complexity will build up and the engine will have to do more work if itās a single part with a whole bunch of detail inside of it. You would have to break up the fog into maybe a 10x10 grid of 100 smaller parts (or fewer if the map isnāt that big).
-
Once you have a grid of smaller parts, you can watch for the
Result was empty, possibly because everything got subtracted away
error. Once that happens you can just leave the grid cell completely empty and not even have to call subtract anymore on that cell as you walk around.
The end result being that as you walk around in areas youāve already explored you donāt have to make any CSG calls at all. This might be a fair bit of effort to set up but could work.
Thanks,
That is a possibility indeed.
Another option I was thinking of, was to build it with voxels (something like: Marching Cubes Voxel Terrain with Tools)
But can you give more insight into why subsequent SubtractAsync gets slower and slower? (Curiosity of a programmer)
Because the resulting āmeshā itself is not causing slowness in-game. Only the cutting performance gets bad.
The main reason is that while weāre working on it, we unfortunately donāt have incremental mesh replication yet.
That means that every time you subtract, all the mesh vertices have to be re-replicated to the player. Ideally only the vertices in the section of the part you actually modified would have to be replicated, and thatās what weāre working towards. For now cutting up the part can manually fake this to some extent.
Thanks, now it all makes sense.
Hey, Trimateh.
Just a quick question: Is this fog different for every client?
There are two things that slow down as more of the fog is revealed (and more operations are done)
a) computational complexity
b) network transfer
We are working on ways to improve both but in the short term, what tnavarts suggested is probably the best idea (simply having smaller blocks of fog ). This will resolve both of the issues at once.
The computation itself has a couple of different steps in it but assuming you donāt change anything else, the parameter you can affect the most is the convex decomposition. Depending on what physics you need on it, you can use lower settings if needed (PreciseConvex in particular is very slow as the complexity goes up)
Yep, this for is different for every client.