Managing Assets


This post refers to the new-and-improved beta version of Tabletop Playground, and may describe functionality or UX not present in the legacy version. For information about the beta, click here.


Accessing the Package Folder

Whenever you create a package in TTP, what you’re doing is creating a folder on your hard drive, within which will be stored all of the images (aka textures), 3D models, scripts, and so on your game needs. If you want to work efficiently in TTP, it’ll help to know where that folder is so you can work with it directly.

You can quickly open your package folder in your system browser by clicking the folder icon at the top of the object library:

By default, all your packages will be located in Tabletop Playground’s PersistentDownloadDir folder. If you’d like to change this to somewhere more convenient, open the Settings Menu and look for “Package Location” in the “Game” tab. Set it to “Custom Directory,” and select or create the folder you’d like your packages to live in.

Importing and Using Assets

Whenever you use the “Import” button to bring an asset into your package, what you’re doing is copying that asset into the appropriate folder within the package — for example, all images you import will be in the package’s “Textures” folder. So if you’re making images for your game, you may find it efficient to simply save them into that folder in the first place. When you next open the “Select Resource” window, you should see the file there in the list.

Similarly, if you want to update an image for a component, you can simply overwrite its file in the texture folder rather than re-importing a new version from elsewhere.

It’s also worth noting that multiple object templates can use the same asset. For example, you can have multiple Deck templates that all use the same cardback image. When creating the second deck, simply choose the back from the Select Resource window rather than hitting Import.

The Asset Cleanup Tool

Assets will remain in your package unless you remove them, even if you’ve deleted the associated template. For example, if you create a board, add a local image for it, and then later delete the board template, the image will still be in your package, increasing its size. (The texture is not deleted automatically in case another object is using it.)

You can easily find and delete such unneeded assets using the Asset Cleanup tool. 

When you open your Object Library, you’ll see an indicator over the cleanup icon if TTP detects that you have assets not currently in use by any template. (If you just deleted the template, you may need to close and reopen the package for this to register.) Clicking that button will bring up the Asset Cleanup Tool modal.

Here, you can review the unwanted files, de-select any you wish to keep, and delete the rest. 

Note that the tool cannot detect whether or not a script uses an asset, so if you’re creating things via scripting, you’ll want to be careful not to delete them here.

Tabletop Simulator Importer (WIP)


This post refers to the new-and-improved beta version of Tabletop Playground, and may describe functionality or UX not present in the legacy version. For information about the beta, click here.


If you have a Tabletop Simulator save you’d like to move over to TTP, you can get a head start on that using the built-in Tabletop Simulator Importer tool. Be aware that this tool is still a work in progress, and has a variety of limitations, but for some projects it may prove to be a time saver. 

To start, go to Editor mode and create a new package. Once you’re on the table, open the top menu and select “Import TTS Package.” This will open a file selection window, showing you the contents of your TTS “Workshop” folder (where TTS keeps material you’ve downloaded from Steam Workshop).  If you would like to instead import one of your personal saves, navigate up two levels, and you should see a “Saves” folder, which is where those are stored. Either way, click the JSON file you want, and hit Import.

The Importer tool will pull in all the objects it can from TTS, and attempt to array them on the table as they appear in the TTS save.

It will also create Templates for all of these objects in the Object Library. Since this can sometimes result in a large number of templates, it will attempt to organize them by putting them in folders based on their names. If an object has no name defined in TTS, the importer will assign it a name based on its type and file it accordingly.

There are a few limitations and known issues to be aware of:

  • Scripts will not be imported (TTP uses Javascript rather than Lua), meaning anything that relies on a script for placement will not be placed properly.
  • The import process can sometimes cause TTP to crash, especially on lower-spec machines, or if the textures in the mod you’re importing are especially large. If you experience a crash, you can try the following:
    • Open Settings. In the Video tab you’ll find a “Texture Compression” option. Set it to “Compressed” or “Half Resolution.”
    • If this doesn’t fix the problem, try splitting the TTS mod in half, and importing each half into TTP separately.
  • Some TTS mods use .rawm files for custom 3D objects; these are not yet supported in TTP and will fail to import.
  • Due to the different texture mapping each program uses for dice, custom dice that are not D6 will not import their textures.
  • The importer constructs decks based on which cards wind up stacked on top of each other on the table, and hence may be unaware of connections between cards that would have been present in TTS.

Cards, Tiles, and Tokens


This post refers to the new-and-improved beta version of Tabletop Playground, and may describe functionality or UX not present in the legacy version. For information about the beta, click here.


Card and Tile/Token objects use identical tech “under the hood.” We’ll use cards as our primary example in this section, but know that all the same options apply to Tiles and Tokens also.

The “Card” type on the Select Object Type screen covers both single cards, and decks of cards. We’ll cover decks first so you understand the dialogue.

Card Sheets

Decks in TTP are constructed from card “sheets” – that is, a single image file consisting of a grid of component cards, like this one: 

If you’ve worked with earlier version of TTP, or another tabletop simulation program in the past, you’ve likely created sheets like this before using an external program, and can continue doing so if you prefer. But if you’re new to this, you may find it easier to let TTP do it for you via the “Create Card Sheet” option (in which case you can skip to “Creating a Card Sheet” below).

Using an Existing Sheet

To create a deck from an existing full sheet image, click “Select Card Sheet” in the object creation modal, or switch to Web Image mode and enter a URL for it (see Web Images below).  Then use the sliders below to tell TTP how many cards wide and tall your sheet is.

Creating a Card Sheet

Alternatively, you can have TTP generate a sheet for you from individual card image files. To do this, click “Create Card Sheet.” This will open the Select File window. Find and select all the images you wish to use, then click “Ok.”

TTP will construct a sheet for you, and automatically determine the proper Width and Height values for it.

Note: The Create Card Sheet function is only available when using local images. If using Web Images, you’ll need to make the sheet externally.

Creating a Single Card

If you want to create a single card, just click “Select Card Sheet,” choose your single card, and leave both the width and height sliders 1.

Whichever way you’ve inputted your sheet, click “Create” to generate the deck. This will bring you to Customize Deck dialogue.

The Customize Deck Dialogue

Let’s go over this dialogue in detail.

At the top you’ll see the sheet you chose under “Front Image.” If you used the “Create Sheet” function, you’ll also see a “Refresh” button beside it. Clicking this will cause TTP to re-make the card sheet using the same file names and locations you used originally. So if you want to update a card or cards, you can overwrite the individual card image file(s), and then hit that button. (Note that this will only work if both the package file and the card assets are exactly where they were when the sheet was originally created. If the package has moved, the refresh button will not appear.)

If you want to create a new sheet to replace your current one, click your current Front Image to open the Select Resource dialog. You should see a “Create Sheet” button at the bottom, next to “Import.”

Below that you’ll see a dropdown for how you’d like to choose your back image. It’ll be set to “Single Image” by default. If that’s what you want, you can click the “No Texture” button below it to bring up the Select Resource dialogue and choose or import your cardback.

The other options in the Back Image dropdown are:

  • Choose from Front Sheet – If the back image is already part of your card sheet, select this, then use the slider that appears below to choose which card index it is. (“Card Index” refers to the card’s slot on the sheet, where the top-left is 1.)
  • Match Front – All cards will display the same image on their back as their front.
  • Unique Back Sheet – This will allow you to give each card a unique back from a separate sheet. Click the “No Texture” button to bring up the Select Resource dialog. If you want TTP to create the back sheet, click the “Create Sheet” button at the bottom of the Select Resource dialog.

Below the images, you’ll find the size controls.

These define how big each of your cards will be on the tabletop. The Width will always default to 2.5”, but TTP will generate the Height proportionally based on the sheet image size and grid dimensions. If you’d like to change the size of your cards, you can modify just the Width value, then click the icon beside it to have TTP automatically calculate the height proportionally.

Below that you’ll see the Card Sheet values you entered before, followed by a slider indicating the total number of cards. If you used Create Sheet, the Total Cards will match the number of images you uploaded, but if you selected your own pre-made sheet, and that sheet did not perfectly fill its grid, you’ll want to adjust the Total Cards slider to remove any blanks.

Finally, you’ll see a window displaying all the cards in your deck individually. Clicking any of these will cause it to appear in the card inspector area below.

In the card inspector window you can:

  • Duplicate or Delete the selected card (this will not affect the card sheet, just how the cards present in TTP).
  • Name the card – that name will appear on mouse-over if the card is on the table.
  • Apply Tags to the card
  • Change the Image of the card – this is only available if you used the Create Sheet feature (and does change the contents of the sheet.)

If you used Create Sheet and want to add new cards to your deck:

  • If your sheet is “full” (that is there are no blank cards in the grid), you’ll see a “+” button next to the fields for your card sheet’s Width and Height. Hitting this will open the Select Resources window, allowing you to add more cards.
  • If your sheet has blank space on it, the “+” will be greyed out. So instead, increase the number of total cards in your deck via the Total Cards slider below. You’ll see blank cards appear in the “Cards” window below. Click on the blank card, and then in the card inspector window click “Change Image.”

Web Images


This post refers to the new-and-improved beta version of Tabletop Playground, and may describe functionality or UX not present in the legacy version. For information about the beta, click here.


By default, Tabletop Playground is set up to primarily use asset files, which are stored with your package on your hard drive. All users have their own copy of each asset – either downloaded from Mod.io for packages released publicly, or transferred to them by the host using Peer-to-Peer Package Sharing.

However, for Image files there is another option. Instead of using a local file, you can point to an image stored online via URL. In most cases, when you see a button to upload an image, you should see a small globe icon next to it.

Clicking this will change the “Select File” button into a text field where you can input your URL. Clicking the file icon to the left of the field will switch back to the other method.

Note that web images cannot be used for Image Shape Models, or other cases where the image would define the mesh of a 3D object.

Web images have a few advantages. First, they reduce the size of the package, and hence how fast it will be for other players to download it.

Second, web images allow players to easily change what image is used for a deck or tile stack in the middle of a multiplayer game, via an object-level override. To do this, right-click the deck in question, choose Customize → Properties, and enter your URL in the “Image URL” field. This will override whatever URL is present at a template level. (Note that this method is only available for cards and tiles, and only if “Allow Web Images” is checked in the template’s Advanced Options.)

There are of course downsides to web images as well – most notably the risk of links breaking, and the fact that they won’t display if you’re offline. You also won’t be able to take advantage of TTP’s ability to create card sheets or dice sheets from individual images if you’re using web images.

Setting Up Player Slots


This post refers to the new-and-improved beta version of Tabletop Playground, and may describe functionality or UX not present in the legacy version. For information about the beta, click here.


You can define how many players your game can have, and which color options are available to them, using Player Slots. To do so, open Session Options by right-clicking on an empty bit of table and choosing “Session.”

Find and select “Player Slots” from the list of buttons on the left:

This will bring up the Player Slot modal

Here you can define how many players your game can support; it’s set to 4 by default, but you can add up to 20 via the “Add Slot” button.

For each slot, you can define its color and its default name. (Note that the default color options have been selected for color-blind-friendliness.)

Setting Up Seats With Card Holders

If your game uses cards, you’ll often want each player to have a hand area that defines their “seat” at the table. To set this up, open the Object Library, and choose “Cards” on the left. Then click on the Card Holder and spawn one per player.

Now, assign each card slot to one of your players by right-clicking on it, and using the “Assign to Player” submenu.

Each player’s default camera view will be centered on their Card Holder. A player’s camera will jump to that view whenever they choose a color slot or hit the Reset Camera hotkey (P by default). So if that’s what you want, you’re all set.

If players don’t have a hand in your game, you can manually choose a default camera view for each player by positioning the camera where you want it, opening up Player Slots, and choosing “Store Current.” If players do have a hand, but you don’t want to use it to set their default camera position, un-check the “Set to Card Holder” option for each slot.