Size Limitations
Creating parts larger than 2048x2048x2048 definitely won’t be supported yet for the same reasons we don’t support this today. We’ve also been considering clamping the rendered size of an EM to that same limit. Would strongly recommend breaking things up into chunks.
Note that our terrain engine, even with a lot of internal specialization in rendering and physics, does break up the meshes per-chunk. Would strongly recommend doing something similar.
We’d like to support massive parts eventually but there’s a lot of work necessary to support this properly on both the rendering and physics engine side.
Empty Mesh Parts
On empty meshes we’re still debating what to do with this. I know it is a nuisance. We knew it would be. We knew in the design phases, we knew during the internal game jams.
We’re here gathering use cases and listening to feedback, but wanted to share some background.
Remember Roblox’s engine API is append only. Removing APIs or adding new limitations is basically impossible, so we have to move in careful iterative steps. Removing restrictions is easy, adding them later is insanely painful for everyone.
We’re not happy about this limitation either, but it’s where we’re starting today.
We have this limitation because, for better or worse, there’s intentionally no concept of guaranteed static geometry in our engine. Even without mesh-based collision geometry we have to generate mass and inertia properties for the part. Just in case it’s unanchored or you want to slice a piece off.
At least for a single triangle or an open mesh you’ll get some rational, mostly predictable results. For an empty mesh you’d get min clamped, infinitesimally small mass and inertia and extraordinarily poor behavior for any physical interaction.
If you know what “mass ratio issues” are, that, in the most extreme, for a would-be common-case usage.
We’re also transitioning to mass/inertia data generated from the mesh, regardless of your choice of collision fidelity. Previously/currently it was from the collision geometry. Box is maximally massive, but the other options have extremely variable behavior between the fidelity options, especially because Default/Precise tend to have many overlapping convexes and/or inconsistently hollow interiors. Considering that geometry based mass properties will be the one option in the future.
We’re ok with letting you do things that hit the mass/inertia clamps where that would be expected, but it seems like common case usage here would lead to people gradually building up a reasonably sized mesh that still has zero mass/inertia, and weird and unpredictable things happen when you touch it. I would not expect diagnosing why to be easy for all but the most advanced devs either…
Behavior would be innocuous when welded to another object, but if it was used a a single part assembly it’s going to explode the second it collides with or is constrained to another part.
I was having conversations about how weird it will be that you can generate a mesh from a triangle, create a part, remove that triangle, and the engine would be cool with it. It only works for EditableMesh because it’s a temporary visual/physical decoupling, which is otherwise something we try to avoid as a foundational design principle for the engine. It’s an area where that “digital matter” abstraction leaks a bit.
Listening to feedback. Hopefully you can sympathize that as a general case issue there’s some non-obvious complexity.