I wonder whether it is possible to make a roblox game using only meshes? Let’s say you make a sci-fi game, could you make the hallways, models and all that in blender? How does collision and physics affect this, and most importantly the performance?
As sated before, it would cause a lot of lag depending on the polycount of your meshes.
You could change the hitboxes with the CollisionFidelity set to PreciseConvexDecomposition(?) and it will create more accurate hitboxes, keep in mind it isn’t a 1:1 hitbox.
Some games, such as Welcome to Bloxburg by Coeptus use a lot of mesh assets, probably more than parts.
Would you recommend making walls, floor and the roof as one mesh, or would it be better to separate all the meshes into smaller meshes? Also would doing so, affect performance?
Depends. I would say have them as separate meshes as higher poly meshes could have less accurate hitboxes, even with the collision fidelity. If you’re planning on using textures, you could definitely use one mesh, but as I said before, the collision fidelity. Not to mention the relatively low max polycount, it’s only around 10,000.
I don’t know if it would affect performance very much, or at all. I would say more precise hitboxes make a bit more lag, so I would use the box or hull collision fidelity as much as possible.
If your doing that you should probably take into account that your main focus should be on a showcase place/game. If your doing this you should add a lot of details, realism, fix, special effects, light casting, and etc… Anyways, I hope this helped, Good luck🙂
If you want a game without scripts but want things to happen you could also use plugins and models that have scripts embedded in them. Just make sure their not malicious.
Are you looking to make money off this game or is it just for fun? Because, if it is to make money then you should probably veer away from a showcase-type of game.
Oops, forgot to add this: ensure you take advantage of Blender’s smooth lighting feature. You may know about it considering you want to make a full game around meshes, but thought I would let you know. It will aid in optimizing the performance while keeping the mesh looking somewhat high-poly. I will show you what I mean. Keep in mind I didn’t add or remove any faces in the following examples, just turned on smooth shading.
Here’s a sphere with flat shading vs smooth shading:
For sharp edges, use edge split to give your shape more dimension. For example, here’s a cylinder without vs with edge split:
It depends on how many different mesh files/assets you use and the vertices/tris of each mesh. But usually if you were to do this you would probably only get players from people with higher-end devices.
This is everything you need to know about the MeshPart object:
But to address your concerns:
COLLISIONS:
MeshPart has a CanCollide property called PreciseConvexDecomposition. This property will try to calculate collisions to the best of its ability. The reason I’m not using the word perfect here is because it does still mess up on some occasions. This can be due to really complex geometry or just a flaw in the current system that is likely to be improved upon eventually. It is still usable but keep your geometry basic, seperate any complex objects if need be.
You can check collisions with this plugin:
PERFORMANCE:
MeshParts can be instanced. This basically means that any meshes that share the same MeshId will be rendered in a single draw call. Properties like TextureId, Transparency and Material will prevent it from instancing even if they share the same MeshId, so avoid changing those if you want them to instance.
MeshParts also have a build-in LoD (Level of Detail) system which also helps performance. Take note that RenderFidelity must be set to Automatic in order to apply.
Parts can be instanced as well so if you can get away with using a Part in cases that don’t require any unique geometry, use a Part. Roblox handles Part rendering pretty well.
CONCLUSION:
If you can use a Part, use a Part. Use a MeshPart in instances that require complex geometry or a unique texture. It’s trial and error but I’m pretty sure you can make it work with the majority being MeshParts if you take all of the above into consideration.
You should probably use SpecialMeshes as much as possible as they don’t calculate the hitboxes if I recall correctly. It just has the hitbox of its parent, should its parent be a part.
Yeah, that would work as well. I was just thinking if he wanted a cube/rectangular prism mesh as a floor or something, he could use that, assuming he wanted to use a texture over the materials Roblox provides.