Please make CSG API Client Side

As a Roblox developer, it is currently impossible to use the Live-Time CSG API in any way.

It is currently limited to the server, which makes it 100% unusable in live game situations.

Example:
I want to make a gun shoot a hole through a wall.
Problem:

  1. The part being operated on lags the game
  2. The wall goes invisible for almost a second
  3. The part cannot be operated on until the last operation is completed, which because of the first 2 problems, takes at least 2 seconds.

Solution:
Make CSG api client sided. This way the server does not need to calculate physics collisions and geometry and send it to clients

What will this enable us to do?
REAL Live-Time CSG operations where parts can be operated on in real time rather than waiting for the server to send new geometry and physics data.

https://i.gyazo.com/06f616a6f305b60bbd9139e2ce54cff6.mp4

In some cases like the demo on the Wiki, the Union literally just disappears …
https://i.gyazo.com/2f0d4f7c056c5f471eae872c5c96e6de.mp4

49 Likes

Planning on using real-time CSG in the future, I had no idea it was limited to the server. That makes any effects I want to do so much worse if I can’t have the client handle them. Fully support!

11 Likes

I feel like if Roblox has the tech there it should be fairly easy to implement on the client?? I was just about to use this for my own project, but then I found out about the server limitations and now can’t.

10 Likes

I love it how they basically force us to load their own servers. Real-time mesh manipulation, just like everything regarding graphics, should never be handled on the server.

6 Likes

I’m actually baffled that this process is being done on the server??

8 Likes

Bump.

It’s 2020.

Roblox is trying to become even more solid and powerful than it already was before. We’ve been getting updates like PBR, Grass, even deformable meshes. It makes the utmost sense that client sided CSG becomes a thing.

Lets push for it, lets make it happen.

41 Likes

I really want roblox to expose low level OpenGL draw calls as lua methods so we can generate our own polygons using vertices as arguments and even apply textures to them with different filtering options (MIP, Nearest-Neighbor-Algorithm, etc). However I sincerely doubt they ever will considering the last time it was even considered was years ago, but clientside CSG would be more than enough to satisfy my needs for such a feature so I really think this deserves attention again!

8 Likes

Bump! I think CSG needs some more attention, not only because it should be possible from client scripts, but also because it needs more debugging when merging parts that are not touching due to the fact that when I generate voxels using parts and want to merge all parts of the same voxel types, every 3rd try it fails with error code -11, and rarely error code -25, I really wish roblox would just give us a mesh API just like Unity engine has with the option to texture each face alongside different texture filtering options.

1 Like

client-side CSG is absolutely necessary for real-time destruction physics on the client and for solo/singleplayer games.

1 Like

Your problem is “generate and texture our own meshes imperatively”, which I think is totally valid. Exposing low-level APIs to devs is not the solution. APIs need to work on every platform. Not every platform supports OpenGL.

Roblox is responsible for providing us a backwards-compatible, platform-indifferent API that (generally) degrades gracefully on worse hardware. This makes shaders/increased texture resolution/lower-level draw calls impractical. Exposing lower-level interfaces also increases the potential for security risks and makes it exponentially harder or impossible for Roblox to guarantee backwards compatibility.

1 Like

Roblox supports multiple different rendering APIs, not just OpenGL, such as:

  • DirectX/Direct3D
  • Metal
  • Vulkan

Roblox’s OpenGL support is abysmal in quality in that it doesn’t support many new features, like proper shadows, since devices that aren’t more than a decade old will support the newer APIs, and so the engineers have intentionally adjusted the quality when running under OpenGL to fit the general performance of these ancient devices.

Roblox should always try to provide the highest-level APIs possible, given their unique problems in the industry. It would be far more future-proof to provide a Mesh class, and have it be able to substitute the MeshId property of MeshParts, but that is just my opinion. There could be a better way for runtime-generated meshes.

2 Likes

I guess I should have been more clear, I agree with everything everyone is saying about not exposing low level draw calls, the point I was trying to get across is that it would be incredibly useful to have a high level API to create our own meshes from vertices and texture them as we want, not-specific to a certain rendering API.

Hi. Client side CSG is actually in internal testing right now. This is something we intend to bring to developers. (along with some new dev tools to allow for more fine grained control and performance)

In the case of client side CSG, there will be one main limitation. CSG operations on client will not be replicated to the server

17 Likes

use this

Thank you for the update! Glad to see engineers reply to old threads with amazing news.

:raised_hands:

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