-
February 27th, 2025, 02:33 #1
New and Custom Action Decks in Savage Worlds
All TTRPG players love their dice. That's true of us Savages.
We also love our action decks.
Who hasn't found and used an action deck that matches their game?
I have a drawer full of action decks that fit all sorts of genres.
The last release of the Savage Worlds ruleset, 5.12.1 on 2025-02-25 introduces two new things.
Oversized action decks
I'm currently working on the Science Fiction Companion (SWADE) action deck, the Fantasy Companion (SWADE) action deck, and the Pathfinder for Savage Worlds Action Deck, with more to follow. They should be available on the store soonish.
Custom action decks
You can now create your own custom action decks.
Custom action decks are a little larger so players can appreciate the art.
There's also hover-over popups, hover tooltips, and a module that lists the deck images that you can open and look at.
The custom / oversized cards replace the basic cards in Combat Tracker, combat tabletop list, dramatic tasks, hands, and deck views.
I attached images of the Science Fiction action deck.
sfc_action_deck_1.jpg
sfc_action_deck_2.jpg
sfc_action_deck_3.jpg
In the next two posts I outline the steps to creating your own action deck.
I also attached the template. Inside the template are the same instructs in a txt file.
I'll add trouble-shooting steps as (and if) people come across problems.
If anything in the instructions is unclear, let me know and I'll improve it.
MyActionDeckTemplates.zip
Note: The templates zip was updated to fix a type in the module menu.Last edited by Mike Serfass; April 29th, 2025 at 15:14. Reason: Edited template zip file.
Add feature suggestions for Savage Worlds to Fantasy Grounds Feature Request.
My store products
My Forge extensions
-
February 27th, 2025, 02:33 #2
Creating Custom Action Decks
Creating a custom deck is easy.
There are two components to a custom action deck, an extension and a module. Both of these components are required.
I created templates for both which require a small number of changes.
Basic Steps
1) set up folders
2) get all the images
3) set images to proper size
4) rename image files to match the list in the module file
5) copy all those files to the extension folder
6) rename the extension copies to match the list in the extension file
7) resize the extension copies to the proper size
8) update a couple of files in the module
9) update a couple of files in the extension
10) create the module file
11) create the extension file
12) copy the files to the proper folders
13) impress your game group with a cool custom action deck
How It Works
The code that makes this work is in the Savage Worlds base ruleset.
The only code required by a custom deck is declaring the card images and asking the ruleset to load the deck.
That code is done for you. You just need to change the name of the custom deck.
The graphic file declarations are also done. You just need to name your images to match.
Everything you need is in the MyActionDeckTemplates.zip file.
The edits are easy and are detailed below.
Let's Get to Work!
Folder Setup
The first step is setting up the folders. This is easily done by unzipping MyActionDeckTemplates.zip.
You'll see two top folders
MyActionDeck
MyActionDeck-data
First rename "MyActionDeck" to something that suits your deck. Keep the "-data" suffix; that's important.
So something like this is good:
KoolKritterDeck
KoolKritterDeck-data
Go into the -data folder's images subfolder. This is where you're going to start adding images.
Note 1: I'm going to use the name "MyActionDeck" for these folders since I don't know what your folder name is. It also lets you use search in your text editor to easily find this reference.
Note 2: You'll have two separate files when you're done, even though the template is a single file.
Images
You need an image for each card in the deck, as well as the card back. You also need a thumbnail.
These images are the same between the module and extension, except for the size and file names.
While webp is recommended and is the new standard, you can use jpg or png formats.
Remember that when players connect to your game, the clients will download all these images. The larger they are, the longer it will take. This is why the smalle webp format is preferred.
I recommend starting with the module images because you'll likely start with the large version of the card faces, and because it's better to start with a full-sized image then scale down. Scaling a small image up loses definition, and you want your cards to be legible and pretty.
Module
The module is used for hover-over popups and lists the card images so players can peruse them from the modules window.
The module will be auto-loaded for the GM and players by the extension. That's why the folder names must match and the module must end in "-data".
You can also manually load and unload it like any other module. It will have the name you assign and the thumbnail you create.
Images
The module is made up of two files and one folder. For now, open the client.xml file in any text editor.
Scroll to the very bottom. You'll see this:
Code:<TwoSpades> <cardId type="string">TwoSpades</cardId> <type type="string">adventurecard</type> <image type="image"> <bitmap>images/TwoSpades.webp</bitmap> </image> </TwoSpades>
That's extremely important! The ruleset expects those exact names. If you don't use these names, it will use the default card images.
Examples:
- TwoSpades.webp
- JackHearts.webp
- AceDiamonds.webp
- BlackJoker.webp
The only odd one is CardBack, which is the back of the card.
Notice also the extension is webp. If you decide to use jpg or png, you'll have to change the extension on every image reference. So
Code:<bitmap>images/TwoSpades.webp</bitmap>
Code:<bitmap>images/TwoSpades.jpg</bitmap>
I recommend a size of 730 x 1020 for art-heavy cards, since that presents an image large enough to appreciate the details. For moderately fancy cards, 500 x 700 works well. For plain cards, 375 x 525 is good.
The exact measurements aren't important. If you image resizes to 725 x 955 or 730 x 1012, that's OK. These are the pop-up images, so they don't have to fit inside a UI widget.
The popup feature limits the max size so large cards don't take over the tabletop. When opening the image from the module, players can size it to whatever they desire.
Still, I wouldn't make images larger than 730 x 1020 since that's more than large enough to appreciate the art.
However you obtained/created/scanned/drew/rendered your images, copy (yes, COPY) them into the MyActionDeck-data/images folder.
Always have backups of the originals! And have them outside of your working folders so they aren't accidently overwritten, deleted, or moved.
If you took an hour scraping the images from a pdf or scanning physical cards, you don't want to lose that work.
Make sure all the cards are properly sized, and rename them to fit the naming convention.
Once that's done, make a backup. I zip the images folder and move that zip file to where my zip file of the original images lives. Now I have backups of two steps of image work.
Now make the thumbnail. The thumbnail is the back of the card.
This is a png sized 60 x 90.
It must be a png. This is a rare exception to FGU using webp.
The size doesn't have to be exact, but make it as close to this as possible. The module list is wonky if the image is too large.
Copy CardBack.webp from the images folder to the MyActionDeck-data (use your deck name). So up one level so it's with client.xml.
Resize it, convert it to a png, and rename it to thumbnail.png.
While you're doing image work, you may want to make the extension action deck images.
That's explained in the Extension section below.
Coding
Fear not, you won't really be coding. You're just making minor changes to code files.
In the MyActionDeck-data folder, one level up from the images folder where you've been working, are two xml files. Also the thumbnail.png you made.
You've already looked at client.xml, so let's start there. Open it in a text editor.
On line 5 you'll see
Code:<name type="string">MyCustom Action Deck</name>
Code:<name type="string">Kool Kritter Action Deck</name>
That's the only change in client.xml, so save it and close it.
Now open definition.xml.
Look for "MyCustom" and change both of those to match the name in client.xml.
It's very important that the names match.
Change the "MyName" in author to your own name. You've worked hard to make this deck, you deserve credit.
The ruleset node indicates which version of Savage Worlds your module will appear in.
Valid values are
- SavageWorlds - for the latest version of Savage Worlds
- SWADE - for SWADE (this is the default)
- SWD - for Savage Worlds Deluxe
- SWPF - for Savage Worlds Pathfinder
You can make your module available in multiple versions by adding ruleset nodes.
For example, if you want your module available in both SWADE and Savage Pathfinder, add a second ruleset node. So it would look like this:
Code:... <displayname type="string">Kool Kritter Action Deck</displayname> <ruleset>SWADE</ruleset> <ruleset>SWPF</ruleset> </root>
Zip the file using the standard Zip algorithm. It must be the zip algorithm for FGU to read it.
The contents of the zip file should look just like the contents of the MyActionDeck-data folder. It should contain an images folder, client.xml, definition.xml, thumbnail.png.
It should not have the MyActionDeck-data folder.
Change the extension from zip to mod, and rename the zip file to match the folder name (e.g. KoolKritterDeck-data.mod).
Move your MyActionDeck-data.mod to your Fantasy Grounds modules subfolder.
You're done with the module! You're halfway there!Last edited by Mike Serfass; February 27th, 2025 at 02:41.
-
February 27th, 2025, 02:34 #3
Extension
The extension is used in the Combat Tracker, player hands, and deck displays.
Your custom cards will display for initiative, dramatic tasks, and sharing action cards.
They won't display for chases on the chase map. The chase map uses tokens and need to be token size. For token-sized cards we need the simple, clean original cards.
The associated module will be loaded by the action card code as declared by this extension. So naming is important!
Images
The extension is made up of two files and one folder. First, open graphics.xml in any text editor.
You'll notice the third line says
Code:<icon name="AceClubs" file="graphics/Ace of Clubs.webp" />
It's different from the module. That's because these file names are cached by the ruleset. If they had the same names, they'd overwrite each other.
Examples
- Two of Spades.webp
- Jack of Hearts.webp
- Ace of Diamonds.webp
- Black Joker.webp
The only odd one is ct_card_place.webp, which is the back of the card.
The size of these images is important because they're used in UI widgets and the UI measures them during layout.
The size should be 50 x 70 or as close to that as possible.
If it's too wide it will overlay the character token and subsections in CT.
If it's too high it will jut out over the top of the combatant section.
Width is a little more important than height. When resizing, set width and let your image app calculate height.
Copy all the card images from the module (MyActionDeck-data/images) to the graphics subfolder in MyActionDeck.
Resize them to 50 x 70.
Rename them by inserting " of " between the number and suit. Except for the jokers and card back as noted above.
So, for example, "JackHearts.webp" becomes "Jack of Hearts.webp", "BlackJoker.webp" becomes "Black Joker.webp", "CardBack.webp" becomes "ct_card_place.webp".
An app that can mass rename is helpful here.
Notice that like in the module, the extension is webp. If you decide to use jpg or png, you'll have to change the extension on every image reference just like you did for module.
Once that's done, make a backup. Zip the graphics folder and move that zip file to where the other backup zip files live.
Coding
Next is code changes. They're as easy as the module changes.
graphics.xml requires no changes, unless you changed the image file extension. If you use webp, this file doesn't change at all. See, easy!
Open extension.xml in a text editor.
Change all "MyCustom" to the same name as you used in the module. Names are important!
You'll find this in five places. Two of these are more important.
The name node. (Things that look like <name> are called nodes in xml.)
It looks like this
Code:<name>Feature: SW - MyCustom</name>
Code:<name>Feature: SW - Kool Kritter Action Deck</name>
I expect future changes in the load screen will make naming conventions more important, so I suggest following conventions the application and ruleset developers advise.
You'll find a script node (<script name="ActionDeck_Launcher">) that has the deck name.
The line that calls ActionDeckManager.loadActionDeck MUST have the same name as the module xml files.
If it doesn't match, things will not load correctly.
The announcement node is what displays in chat when the application loads. You could make this message anything, and it doesn't really have to match your action deck name. It might confuse players if it's something different, but you could change the message to "Kool Kritters will own you all!" or "Tell me my custom action deck is awesome and get a benny.".
The ruleset node indicates which version of Savage Worlds your extension will be available in.
Valid values are
- SavageWorlds - for the latest version of Savage Worlds (this is the default)
- SWADE - for SWADE
- SWD - for Savage Worlds Deluxe
- SWPF - for Savage Worlds Pathfinder
You can make your extension available in multiple versions by adding ruleset nodes.
For example, if you want your extension available in both SWADE and Savage Pathfinder, add a second ruleset name node. So it would look like this:
Code:... </description> <ruleset> <name>SWADE</name> </ruleset> <ruleset> <name>SWPF</name> </ruleset> </properties> ...
Zip it and Ship It
Zip the file using the standard Zip algorithm. It must be the zip algorithm for FGU to read it.
The contents of the zip file should look just like the contents of the MyActionDeck folder. It should contain a graphics folder, extension.xml, graphics.xml.
It should not have the MyActionDeck folder.
Change the extension from zip to ext, and rename the zip file to match the folder name (e.g. KoolKritterDeck.ext).
Move your MyActionDeck.ext to your Fantasy Grounds extension subfolder.
You're done with the extension! You're ready to use it!
Check the Action Deck
If FGU is running, close it.
FGU loads a list of available extensions and modules when the launcher starts. If you moved the mod and ext files while FGU or the launcher is open, it won't register them.
Start FGU. You should see your extension in the list. Check it to load, and start your session.
Your action card module will load automatically. Open the modules window and find it in the list under "Savage Worlds".
The top entry is "Action Cards". Click this to open the Action Cards window listing all the cards. This window can be added to the hot bar.
Click each card in turn to be sure they're all there.
If you've done everything correctly, they'll all display.
After appreciating your work, right click the action card deck tray. Select "reshuffle deck".
Right click the card tray again and select "card deck" then "main".
The Main Deck window appears with the entire deck displayed. Check that they're all present.
Turn on the "Cards: Hover over" option. Hover over each card to check that it finds the card in the module.
Using the Action Deck
If everything checked out, your deck is ready to use. Congratulations!
There's nothing different in using a custom action deck.
UI Widgets that use action cards will automatically resize to better display your awesome deck.
Open combat tracker and deal initiative. Start a dramatic task. Share a hand. Check out the cards in the combat tabletop list.
Take a moment to be pleased with yourself.
I'm Stuck
If you get stuck, you can ask for help on the FGU discord Savage Worlds channel, or post to this thread.Last edited by Mike Serfass; February 28th, 2025 at 21:46.
Add feature suggestions for Savage Worlds to Fantasy Grounds Feature Request.
My store products
My Forge extensions
-
February 27th, 2025, 02:40 #4
[more screenshots to come]
Last edited by Mike Serfass; February 27th, 2025 at 02:52.
Add feature suggestions for Savage Worlds to Fantasy Grounds Feature Request.
My store products
My Forge extensions
-
February 28th, 2025, 21:51 #5
Here are some images of the Scif-Fi SWADE action deck. This will be in the store very soon.
sfc_action_deck_1.jpg
sfc_action_deck_2.jpg
sfc_action_deck_5.jpg
This shows everywhere the custom cards are displayed.
This also shows the popup feature. This happens when you hover over a card anywhere.
There are also tooltips.
Both of these options can be turned on or off.
And here's an image of a deck I scanned in for my own sci-fi game.
This won't be on the store, but shows that you can make your own deck from physical cards.
firefly_deck.jpgLast edited by Mike Serfass; February 28th, 2025 at 21:55.
Add feature suggestions for Savage Worlds to Fantasy Grounds Feature Request.
My store products
My Forge extensions
-
March 18th, 2025, 19:36 #6
The Sci-Fi Companion and Fantasy Companion action decks are now in the store.
Fantasy Companion Action Deck (SWADE)
Science Fiction Action Deck (SWADE)Last edited by Mike Serfass; March 18th, 2025 at 19:40.
Add feature suggestions for Savage Worlds to Fantasy Grounds Feature Request.
My store products
My Forge extensions
-
March 18th, 2025, 19:39 #7
Here are some screenshots of the next deck I'm working on. This is the Starbreaker action deck, made for that setting. It's a really nice looking deck that shows well in a VTT. Of course, you could use it for almost any sci-fi setting.
starbreaker_action_deck_4.jpg
starbreaker_action_deck_3.jpgAdd feature suggestions for Savage Worlds to Fantasy Grounds Feature Request.
My store products
My Forge extensions
-
March 19th, 2025, 06:18 #8
- Join Date
- Mar 2011
- Posts
- 64
If I am making a custom action deck with four jokers, what is the syntax for naming the four jokers?
-
March 19th, 2025, 16:05 #9
Currently, four different jokers aren't used, even with the 4 jokers setting turned on. It reuses the red and black jokers.
This is on my list of enhancements. I'll update the instructions when I add this.Add feature suggestions for Savage Worlds to Fantasy Grounds Feature Request.
My store products
My Forge extensions
-
March 30th, 2025, 14:58 #10
- Join Date
- Aug 2020
- Posts
- 141
thanks for this, Mike!
Thread Information
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks