Is Vassal right for me?

Hello all! Brand new to Vassal and wanted to know if Vassal is capable of doing what I want my module to do. I have no idea how robust the module design is at the moment, and I’m just looking for a brief reality check before I commit a lot of time to the project.

I want to create a Vassal module for the purposes of remote play-testing a card game we’ve developed. It’s a dueling game for 2 players, where each player builds a custom deck from a pool of cards before beginning play. The deck construction aspect of the game is fairly complex, with each Player choosing a team of Characters that all have unique Ability Cards.

To be specific, can Vassal handle:

  1. Pre-game Deck Construction of unique decks from a pool of available cards
  2. A wide variety of custom card effects
  3. Some Cards begin the game in the Player’s play area, while others go to the Player’s Deck to be drawn to the hand

I have downloaded and reviewed the designer guide and the Card Game Tutorial. Both of these documents have a lot of great info, but cover only very basic game elements. Are there other guides/tutorials that go deeper into the guts of Vassal?

Thank you in advance!

Can you elaborate here? As it stands this is too vague to be able to offer much guidance.

Number 2 and 3 is something VASSAL can easily accommodate (given the high level requirement).
Number 1 is more nuanced. There are no “each player create a deck offline and then bring them online to play” kinda of thing that I can think of. Best is the game will start where each plauyer gets to build their deck online and then play when they are done…)

Wouldn’t some variation of this work…

  1. offline phase: Each player create a log file of their actions to build their deck
  2. online phase starts with each player, in turn, replaying their log file into the game.

Also, there is a capability to upload a deck from a file. I have not looked into this but maybe it would be of use here.


Thank you for the reply!

It’s hard to get too specific about the 100+ cards we’re using, but I’ll try to clarify.

Most of the cards are pretty standard “apply effect” cards. Deal/heal damage, apply counters, add/remove effects. I expect Vassal can handle those kinds of things pretty easily.

But some cards have effects that, for example, allow a player to return cards (of the player’s choice) from the discard pile to their hand, while simultaneously forcing the opponent to discard cards (of the opponent’s choice) from their hand to the discard pile.

Some cards apply counters to an opponent’s card that have variable effects from turn to turn as the counters come off.

Some cards are utilitarian, where the player has to make a choice about what effect the card will have when activated.

These are just a few examples of some of the more uncommon card effects I’m wondering about.

This is probably our biggest concern. Since we want to use Vassal as a play-test resource, we want to make sure it is accessible and user-friendly for our play-testers. In as much as it is possible, we want our play-testers to be able to jump in, create a deck, and start playing.

Ideally, we want players to be able to build their deck offline and then upload their deck at the start of the game to minimize set-up time. We also anticipate players wanting to spend a lot of time tinkering and experimenting with their deck outside of play.

Figuring our how to accomplish this in a way that is streamlined and user-friendly for players is probably the biggest hurdle we have to surmount.

Thank you for the feedback!

If you are just at the point where you want to get playtesting off the ground, I honestly think you want to avoid building in too much automation of all your various card effects and let players implement the results themselves. I don’t know how many unique effects you’re talking about here, but it sounds like it could run into the dozens. If you are experienced at building modules already, you are probably going to be pretty dismayed at the amount of time it takes to get up to speed with the editing process and implementing all these effects. Then you could be in for multiple rounds of medium to large-scale editing as a result of your testing. Once your design solidifies, then you might want to devote the time to implementing all of your effects.

I potentially disagree with the other poster about item 1–decks in VASSAL have a configuration option to allow them to be saved to and load from files during play (though I haven’t ever used this myself). So a player could set up their deck offline, then when connected play begins, load it from a saved deck file. The documentation explicitly refers to this use case.

Regarding your first question, I have a bit of experience here. In my case it’s a little different. I built an editor inside a module so I could dynamically create new cards from scratch.

In the board game “Race! Formula 90,” players race formula 1 cars on a race track. Each time you play, you first choose which track you want to race on, and that track also has its own custom deck of cards. I wanted to create additional tracks, and so I eventually made around 20 of them. It meant though that I needed a custom deck for each track.

The special track cards are all designed similarly. Each card has a variable number of special icons from a pool of icons. To create a deck then, I would run the module, and using a blank template, I would add in the icons and text for each card. I would then put the cards in a special empty deck. When done, I would right-click the deck and save it into a file. Later when players would choose to play that track, they would also (unknowingly) load the companion deck from a file. They had no idea they were playing a deck that I created earlier within the same module!

This is a little different from your needs because you aren’t creating cards. If I were making this module, I would first create a pool of all available cards. Then each player could run the module (offline) and use the module’s tools to choose cards and put them in a blank deck. When done, they would save the deck to a file. They could even create or edit multiple decks.

At game time, each player would simply load their selected deck to a empty deck space in their play area. (This means nothing to you, but I probably would experiment isolating the deck editor code into a separate module or an extension.) Of course, I’m an experienced module-maker, but I just wanted you to know it’s quite doable.