Making Shatterpoint Terrain for Tabletop Simulator - Part 2

Tuesday, February 27, 2024

Star Wars: Shatterpoint

So you made your first piece of terrain, and now you’re all excited to make some more complicated stuff. Good for you! One of the first non-box things I made was this:

A building with an overhang modeled in Blender

Oooh, fancy!

I textured it all up, brought it into TTS, and… got all confused when models couldn’t go under the platform, and models always stood at the highest point no matter what.

Count Dooku floating in the air over a platform

Silly Count Dooku! You should be on the ground!

After some investigation, I learned about Colliders and non-convex objects. A Collider is some geometry that tells TTS what parts of a model are solid. Non-Convex objects are for our purposes, models that have overhangs or holes in them. There is probably a more correct explanation, but that’s good enough for us!

By default, TTS will use a box as the Collider for any model you bring in, no matter it’s actual shape. So, for example, if I model a little building with an overhang, TTS will simply create a solid box that “fills in” the whole space.

A building with an overhang in Blender

What you see…

What your building looks like to TTS

What TTS sees.

This is why Count Dooku was floating on top: TTS made a box that enclosed the whole building as a Collider, and he was just standing on top of it.

So how do we fix this? We provide our own collider! For things made up of rectangular solids, we can simply use the exact same model as a collider. Inside TTS, we can bring that same .obj file into the Collider field; just copy / paste from the Model/Mesh. Now that object will be used to figure out what parts of the model are “there”.

Tabletop Simulator settings for a Custom Object

I still had a problem getting models to stand under the platform however: it still did not like that one bit. That is where the Non-Convex checkbox you may have seen in the settings up above comes in. Click that, and apparently TTS will do a more fancy calculation for collision and your overhangs and holes will work just fine. Sort of.

After I did all that, I thought my problems would be solved, but things still got goofy. Now Dooku was behaving in a way I did not understand at all:

Count Dooku is not where he should be

How did you get there, Dooku!

Turns out that unless an object is Locked inside TTS, it won’t do any of the fancy stuff we need it to do with our collider. Apparently this is to be more efficient, as objects that can move get simpler physics / colliders. So all we need to do is right click on our building and pick Toggles -> Lock and now everything is super wonderful.

Count Dooku standing on a platform
Count Dooku under the platform

More Complicated Models

For things made out of more complex geometry, it is a good idea to make a second model that is made of boxes to use as a collider. Here’s an example model I made, and the custom collider for it. You can see that I roughed out the shape of the diagonal bits with some blocks and used the Join command in Blender to make them one exportable object.

A model with diagonal parts and a custom collider made with boxes.

Another Approach

If your model is going to be made of all boxes, like in my first example, another approach you could take is to simply make three distinct models, import them all separately, and then arrange them inside TTS, then use the Link tool to have them act as one object to the game.

Go Forth And Make Things

So there you have it. You should be able to bring just about anything you make into TTS and have it be playable in the way you want.