How to Create Custom Card Decks With Tabletop Simulator
When Tabletop Simulator released in 2015, the idea of a single application that would allow me to play board games no matter where I found myself was very appealing. However, since it was a sandbox style game, unless you had others who were keen to join in the fun there was little that you could do. About a year after its release, I bought a four pack, shared the extra copies amongst friends and proceeded to play it a grand total of 30 minutes. It has since sat in my Steam library untouched until this week when I was looking for an application to test a prototype card game.
Due to various NDAs and verbal promises I can’t divulge much about the card game I wanted to prototype, however, I can show others how they could use Tabletop Simulator to import card designs in order to prototype and play test their own card games.
Before we get started, you’ll need:
- Some card designs. Obviously. I found some sample cards on Reddit
- You’ll also need a design for the card back, Google helped me here.
Berserk Games' Deck Builder
Undoubtedly the easiest and quickest method of getting your cards ready for use in Tabletop Simulator would be the included Deck Builder.
However, I’ve not been able to get this working with Mac OS. When I try to run the Deck Builder jar file
I am greeted by an application window which seems to function, in that, I can create a new deck and load the card designs correctly, but when I try export the images as a card sheet it fails.
Fun fact, if you run the Deck Builder by double click the application file, the export fails silently. Below you can see a screenshot of the Deck Builders log output which, in theory, should give you an indication of what the application is doing and if any issues arise during use.
If I was to running the Deck Builder through the command line and try to export my card sheet I get a stack trace of the export failure
So, assuming the Deck Builder application fails to export your cards, what other options are there?
- You could try to create the card sheet manually. I’m guessing that would be quite painful.
- You could find someone to do it for you, technically the sample cards I found for this post were probably in a format that Tabletop Simulator could already consume.
- You could find an alternative app or service to create the template.
- You could figure out what is causing the Java app to fail and fix it.
- You could just stick to physical prototypes…
I chose option 3, in the form of Imagemagick, which allows me to manipulate images
in a variety of ways, one of which,
should allow me to tile my images in a way that allows me to generate a card sheet.
Below I’m going to outline how you can use the command and hopefully remove some of the guesswork I went through. I’m tailoring this for Mac OS, since it’s what I use, I would assume the process is the same elsewhere, but 🤷♂️
Building A Custom Deck
Firstly, let’s get Imagemagick installed.
1 2 3
# Depending on the state of your machine, you might need a few dependencies # Grab a drink while this does its thing brew install imagemagick
Once installed, verify it’s working by checking the
1 2 3 4 5 6
montage -version Version: ImageMagick 7.0.11-4 Q16 x86_64 2021-03-20 https://imagemagick.org Copyright: (C) 1999-2021 ImageMagick Studio LLC License: https://imagemagick.org/script/license.php Features: Cipher DPC HDRI Modules OpenMP(4.5) Delegates (built-in): bzlib freetype gslib heic jng jp2 jpeg lcms lqr ltdl lzma openexr png ps tiff webp xml zlib
Next, collect all the cards you want on your card sheet into a single directory.Names and Folder StructureTabletop Simulator has a couple of restrictions on card sheet sizes, the smallest they can be is
2x2and the largest they can be is
10x7. If you have more than 70 cards, it would be ideal to split them into different folders or “decks”. A standard naming convention for your cards would be useful if you wish to keep them in a single folder
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
» tree . ├── actionDeck_dive.jpeg ├── actionDeck_dodge.jpeg ├── actionDeck_flee.jpeg ├── actionDeck_grapple.jpeg ├── actionDeck_jump.jpeg ├── actionDeck_kick.jpeg ├── actionDeck_punch.jpeg ├── actionDeck_sprint.jpeg ├── actionDeck_throw.jpeg ├── playerDeck_amateur.jpeg ├── playerDeck_bard.jpeg ├── playerDeck_duelist.jpeg ├── playerDeck_magician.jpeg ├── playerDeck_priest.jpeg ├── playerDeck_savage.jpeg ├── playerDeck_scrapper.jpeg ├── playerDeck_spy.jpeg └── playerDeck_thief.jpeg
With your cards collected, you want to pass the cards through to the
1 2 3 4 5 6 7
montage \ -geometry 440x636 \ -tile 3x3 \ playerDeck_amateur.jpeg playerDeck_bard.jpeg playerDeck_duelist.jpeg \ playerDeck_magician.jpeg playerDeck_priest.jpeg playerDeck_savage.jpeg \ playerDeck_scrapper.jpeg playerDeck_spy.jpeg playerDeck_thief.jpeg \ cardsheet_playerDeck.jpg
Let’s break the command down:
Potential Data LossMake sure you always, include the final argument specifying an output file. If you don’t include one, ImageMagick will assume that the last card in your provided card list is the file you wish to output the rendered card sheet to and it will overwrite the file with no prompt or further user interaction.
montage- the type of transformation we want ImageMagick to do for us
-geometry XxY- the size in pixels of the cards you are using, so in my case 440 pixels wide by 636 pixels tall
-tile XxY- the number of cards wide and number of cards tall the card sheet will be. Again, in my case, it’s a 3 card wide, by 3 card tall card sheet
playerDeck_*.jpeg- the names of the cards I wish
cardsheet_playerDeck.jpg- the name of the output file I wish
At this point you should check that you have a card sheet that contains all your card faces
Load up Tabletop Simulator and start a new game, you’ll want to start with an empty table, so feel free to exit out of all the menus and pop-ups that appear when starting a new game
Create a “Custom Deck” object on the table, go through the menu
Objects -> Components -> Custom -> Deck, once you’ve got your object, drop it anywhere on the table by clicking once.
Right click the newly created deck to open up the properties menu
cardsheet_playerDeck.jpgwe created as the “Face” of the card. We can also set the card back design we downloaded earlier as our card “Back”.Local vs Cloud files
When setting your designs, you will be prompted to load them locally or store them in the cloud.
Choosing local will mean only you can see the designs and you can’t use them in multiplayer games.
The cloud option loads them into your personal cloud space, each user of Tabletop Simulator get 100GB of storage.
Alternatively, you can use a cloud storage solution of your choice to store the pictures and load them via URL instead of local file reference
Set the “Width” and “Height” values equal to the values you used in the
-tileargument of your
montagecommand. In our example earlier, 3x3.
Finally set the number of cards in your deck, again in our example 9 (3x3).
Go have fun with all your lovely cards!
And with that, thanks for reading 🃏