Working on packages together

If you want to work on a package with multiple people, there are a few things that you need to take care of:

  • Make sure that everyone who should edit the profile on mod.io or upload new vesions is a manager or administrator for the mod. On the mod.io page for your package, go to “Edit”, then “Team” to add team members and assign roles.
  • Packages that you subscribe to through mod.io are not directly editable, and automatic updates would overwrite changes of the other when mod.io updates the package. No team member who edits the package should subscribe to it. Instead, you’ll need to share the files in another manner, for example by downloading the zip files from the mod.io page. Unzip the file into a new folder your package directory (configurable in the game settings). It will appear in the editor and you will be able to upload new versions if you are part of the team as described above.
  • Coordination can become difficult when multiple people are working on the same files. Consider using Git to help (together with GitHub, for example). It works well for scripts and template files, but for save states and resource files like textures and models, you’ll still need to make sure that only one team member works on the same file at the same time. You can also consider using a service like DropBox to keep the package folder in sync for multiple users – Git offers more flexibility, but is also more complex to use.

Playtesting

You may also want to do playtesting sessions without making the package publicly available. You can upload your package to mod.io privately – no one else will be able too see it. In order to play with others, you have different options to allow them to subscribe to your game, see the article on Playtesting.

Importing from Tabletop Simulator

If you have already created your game in Tabletop Simulator and want to port it to Tabletop Playground, you can use the TTS Importer application to make the process much easier. It will quickly import objects that can be converted to Tabletop Playground. Not everything can be imported automatically though, see Limitations and Notes.

You can find TTS Importer in the Tools folder within the Tabletop Playground directory. Here’s how to find the game directory:

  1. Right click the game in your Steam Library.
  2. Go to Properties then the Local Files tab.
  3. Click Browse Local Files.

Using TTS Importer

TTS Importer can be used with Workshop items, local save games, and stored objects from TTS. It creates object templates in a Tabletop Playground package for each type of object in the TTS source file and copies the required resource files (models, images, and PDF files) to the package.

When you start TTS Importer, you first have to select a target package at the top. If you don’t have a package yet, create it in the Editor first. The new objects will be added to the package, already existing objects and resources will remain.

Next, you need to choose a source file. By default, the importer looks for a TTS folder in your Documents and shows all workshop items installed there. Simply select an item from the list and you’re ready to go! If you have configured your mod save location in TTS as “Game Data”, you can select that as the TTS save location instead. In order to import a local save game, select “Saves” instead of “Workshop” on the right. To import stored objects, you need to select the respective file directly.

Once you have selected a target package and a source file, click the Import button to start the conversion. Resource files will be loaded from your local disk if they exist (when you’ve loaded the game in TTS with mod caching disabled). If the importer can’t find files locally, it will try to download them. In the black console window, it will output status messages about the import process, for example if a file can’t be downloaded. Once the import has finished, you can open the package in the Tabletop Playground editor to find all your new game objects!

Limitations and notes

Some things can’t be imported automatically: custom asset bundles, the layout of objects on the table, and scripts have to be done manually. Custom dice apart from D6 can’t be converted directly, because the texture layout is different. The importer will copy the custom texture to the target package, and you can adapt it to the right layout with an image manipulation program. You can find the dice texture layouts at Dice.

Opening a large imported package for the first time can be slow, because every object needs to be loaded once in order to create the preview image in the object list. After you’ve opened the package for the first time in the editor, the preview images are cached and loading will be fast.

Colliders

A collider is a 3D model that is used in-game to determine how objects collide with each other. Each object has at least one collider. If you don’t specify one, a box that covers the whole visible object is generated automatically. In many cases, that will be enough and you don’t need to worry about colliders. But if your object shape isn’t represented well by a box, read on to find out how to work with colliders.

Creating colliders

Collider in the editor

In the editor, you can add two types of colliders: Spheres and models. Use a sphere for perfectly round objects, you only have to set the center of the sphere and its radius.

Collider models are more flexible: you can load any 3D model and a collider will be created from it. You can then set its position, rotation, and scale in the same way as for visible models. Click on the eye icon on top of the collider pane to visualize your colliders.

There are some important differences between collider models and regular visual models, though: colliders are always convex (they can’t have holes or dents), and they should not have complex geometry or performance will suffer. When you try to use a non-convex model as a collider, its convex hull will be used instead. Calculating the convex hull can take quite some time for complex models, which is another reason to only use simple geometry as colliders.

Examples for convex and concave shapes

If your object needs a collision shape that is not convex, you can combine multiple colliders to create it. As long as each single collider is concave, the collision shape of the whole object can be anything you want. You should still try to keep it as simple as possible and use as few colliders as you can get away with to keep performance high!

Table colliders

Collision for tables works differently from other objects: You can also provide your own colliders own colliders if you want, but if you don’t add any colliders you don’t get a box around the table. Instead, the actual visible geometry is used for collision, even if it is complex and has holes and dents! This works because tables never move in the game.

Creating a card deck

If you want to add cards to your game, you first need a picture of each card you want to add, arranged in a grid in one image file. You may have a number of image files, each containing a single card. You can use the free Image Grid software to arrange the pictures in a grid – simply start the program, drag your files onto the window, and press Save. If Image Grid can’t arrange your image in a regular grid, make sure that each file has the same dimensions.

For this tutorial, let’s say you want to create a card deck from a bunch of Phylo cards. Download and extract the zip archive with an image containing a grid of cards and a card back image here.

Now go to the editor, create a new package, and in the new package create a new object template of the type “Card”. You will have to select an image file for your card. Click on the button, then on Browse, and select the “PhyloCards.png” from the archive you downloaded. Now click on Create to open the card editor.

You will see your card, but it will show the whole image with all card pictures. You have to specify how many card pictures are in the grid, which you can do using the “Cards in Image” fields on the right. Enter 3 for horizontal and 4 for vertical.

Now you should see the card clearly showing the first card image, but it’s just a single card and not a stack yet. To add the remaining cards, press the “++” button in the right hand pane next to the “Card 1/1” label. Each card in the stack has its own index that determines what part of the image grid is used. You can have multiple cards with the same index, so you don’t have to repeat a card picture in your image in order to use it multiple times in the same stack. You can click on cards in the list and change their image using the “Image Index” slider below. Try creating a deck that includes some of the cards two or three times!

Finally, we can add a separate card back. Currently, your deck uses the first of the card pictures as the back image. Note that the standard 3D view shows you the back of the card stack (that’s why you see the whale). In the upper right, select “Separate file” as Back Image Type. A Back Image button will appear below, click it and select the “PhyloBack.png” file from the archive.

That’s it, you’ve created a new card deck! Give your new template a name (in the upper left), save it, and go back. You will now see your card deck in the list. When you create games with a lot of cards, you may not be able to fit all of them on one image. In this case, you can just create multiple images and make a card stack for each of them. In the game or when creating a game state, you can combine cards from multiple stacks with the same dimensions!

If you want to create cards with different shapes, check out the article about cards for the exact texture shapes that are used. Or use a transparent image to get any shape you want!

If you create cards that are larger than the standard cards, they may not fit in the standard card holder. Make sure to scale it up on the table, or create your own custom card holder in the editor!