New and Confused

I just downloaded Vassal today, I’m looking into it for creating a trading card game. I looked over the getting started tutorial on the main page, but it seems as though that’s only for downloading and playing games. I searched the forums but did not find any tutorial for making a game, I probably just overlooked something obvious :slight_smile: So a few questions:

Is vassal effective for a trading card game, where opponents battle with decks?

Can you play an opponent in real time?

And most importantly: any basic tutorials out there?

On Jan 8, 2009, at 1:24 PM, elyneara wrote:

Should be. There are modules for other such games.

Yes. Via the server.

Try starting here:

especially the “Module-creation tutorials”.

Now, these will not be specific to card-based games, but they do cover
the basics. Then you can explore the “How To’s” and “User supplied

Also, there is a Reference Manual that you can get to from the “Help”
menu in the Vassal application.

Messages mailing list …

Post generated using Mail2Forum (

Yes, there is at at least one CCG module on Vassal, the one I developed for the Babylon 5 CCG.

Now this module is no where near perfect, but it does a lot of things that you probably want to do. Were I to make this module again, these are things that I would change:
Make more use of prototypes.
Layer the cards better, by using a small image for each card, and card type background for the the front face of each card. Include text for each card in a fixed named location. Include the values for each as piece variables. Currently my cards are just images. And though this certainly works well enough, at least with Vassal 3.1-beta 5+, there are limitations.
Add counts of items in a deck. (Can anyone tell me, what these variables are again?, I had this working on my old computer, but it died, and I had to take it apart to clean the dust out. The drive is still working, but I switched machines and haven’t found the time to plug back in all the cables yet.)
Make more use of the “send to” function, for card drawing, but this may be limited because of some of the functionality may be missing. I haven’t thought it through completely, but I’ll discuss this more in moment.

But I have two issues that I don’t think are currently covered by Vassal code.
There is no deck builder. Though this feature could be added and would only work if one were to place the card text into a piece variable, rather than using an image of the whole card. What has been added was the ability to save a deck to file, and then reload the deck. So currently players build decks offline, save the deck, and can then load it into a new game. I am fortunate that some one built an Access database tool for Babylon 5 CCG, that does the card searching deck building. Now players take the output of that program (list of cards sorted by type) and manually pull the cards onto a deck, then save the deck.
Vassal doesn’t seem to have ability to have dynamic ownership of pieces, (or play areas.) So with VASL, there is an Axis player and Allies player, or a marker. All Axis pieces are owned by the Axis player, same for the Allies player, with the counters owned by no one. But in a CCG, the same piece in the palette can be used by multiple players. I don’t think there is anyway to dynamically take control of a piece, such as when one loads the deck. It is possible to have private hands for each player, but these must be defined apriori, and then when the player chooses a side, that get the pre-defined private hand. I guess the same could be done for play areas/decks, which would then make it possible to use the send to function.

Thus spake “dcholtx”:

Could you design a deck builder for us? What should the GUI for a deck
builder be like? From where should it be accessible?


Messages mailing list …

Post generated using Mail2Forum (

The Deck Builder would be similar to the piece edit functions in the module builder, ie two lists of items by name, with the ability to add items in the first list to items in the second list. A further requirement is to have the first list of items to be dynamic, where the contents of this list are determined by a search of pieces (title, text, properties, and property values.) There should also be a space to show the piece, large enough to be readable. When you click on the name in either list, the image of the piece should be displayed, the unmasked side. You would also need to substantiate each piece in the second list and save(button) as “deck.” For modification/deck redesign, you should be able to reload this “deck” back into the deckbuilder window. A count of the cards in both lists would be nice.

A feature would be to have the second list contain a count of each specific piece. It should also have the ability to enforce a maximum number of pieces per deck. And perhaps the ability enforce the maximum number of cards per deck.

Since different CCG’s have different properties for each piece, the search function(s) would have to be configurable as well, though I suppose most CCG’s could probably make do with a predefined list of title, text, and 8 traits (named trait1-trait8.) The module developer should be allowed to name these traits. A dynamic list of traits would be better (for Vassal where you are trying to provide a game development tool.)

If you have a PC, and would like to look at the Access database builder by Mark Farbus, you can see what his interface looks like. The following page contains a reference: Search for Farbus on the page. You only need the basic builder. The expansion just contains more cards. In this builder, there are actually two deck lists - a starting hand and a main deck. The current version of B5 actually allows a player to have 4 “decks.” Though for Vassal purposes, each deck can be built separately, which makes it more straight forward to program the builder and configure modules, costing the player very little.

Of course this one is specific to the B5CCG, but if you can make a deck builder that was dynamically configurable to handle the searching he has, well then you would have deck builder capable of any CCG. Much like Vassal is a game engine designed around ASL, most other games are lightweight in comparison.

So by design, did you mean initial coding as well? I would have to need to ask some questions from one of you first. I really need to understand what the piece palette is, and how to a piece in the game is substantiated from the palette. Unfortunately right now I’m trying to learn JSF and JSP, for an RPG melee simulator I’m trying to write.

Thus spake “dcholtx”:

No, I meant GUI design, as in: What should it look like? How should the
user interact with it?


Messages mailing list …

Post generated using Mail2Forum (


If you glance at the GI JOE Trading Cards Game Module, you will find find a “deck Builder” function …

You just have to take cards from a Game Pieces Palette and put them on a “Deck” then the save function allows you to save you deck … and to load it too…

I don’t think that another development is the best way …

So is what I have written enough, or do you need more? Have you looked at the Farbus deck builder?

Tim aka soft-bug:

First, the original programmer for the deck save/load function is yours truly, with a rewrite to get all the card ownership right by Rodney. I’m not sure if your model has extensions, but I saw about 100-150 cards, none with special operational text. The play of cards from many CCG’s is highly dependent on the text contained. Also, in B5CCG there are close to 2500 cards. Finding a card that does what you want in this game is slightly more complicated than your GIJoe CCG. So yes, we currently just drop cards onto a deck and save. I added the deck save/load function for just this purpose.

What would be nice is the ability to search text within a card and other attributes. For example B5CCG has 10 different basic types of cards: Agendas, aftermaths, characters, conflicts, contingencies, enhancements, events, fleets, groups and locations. Most of the types of cards have subtypes, characters and fleets are associated with 10 different factions: Centauri, Human, Minbari, Narn, NonAligned, Neutral, Shadow, Vorlon, Drakh, and B5. There are 6 different types of conflicts: diplomacy, intrigue, psi, leadership, military, and unspecified. In addition, certain characters come with one or more “marks.” There are 6 types of marks: destiny, doom, shadow, vorlon, strife or conspiracy. Also there other types of organizations that sometimes transcend racial boundaries: rangers, media, techno-mages, nightwatch, … .

My point is: in some CCG’s it’s not so easy to make your deck. The deck builder would help you get to a list of 50-125, from which you could make your selection (multiple times.) In B5, you are required to have a deck of at least 60 cards, and most players use a feature that requires 70 cards in the main deck, and another 20 cards in a second deck.

Ad: B5 CCG is the only CCG I’ve found that was actually designed and plays well as a multiplayer game. It is possible to have up to 11 players in a B5 game.

I don’t know how my name came up in this discussion or if its even this
“Tim” but those “Tims” among us aren’t Soft-bug :slight_smile:

Otherwise I don’t see what is so difficult in adding all those properties
specific to each card, dynamic if need be, and instead of searching through
card “text” look for the properties in the card instead?

To pair down initial build selection you could use preset action buttons
that hide/remove those cards that do not fit the property searcxh criteria.
A revese button would bring those cards back.

This of course means that you would not use the palette but rather set all
the cards up as initial at start stacks in a “build” window.

Yes it would take a lot for the designer of the mod to set up initially but
this would work quite well

Tim aka not soft-bug :slight_smile:

Post generated using Mail2Forum (

Well that would work, except that the text is very variable - AND affects game play. So yes it is possible to search for cards by their marks or race, or type, or subtype., but it is not sufficient. For instance, there is only one card that say it prevents your agenda from being blanked. So do I set a property for this trait and add this to the clickable list? If so then there would be about 500 different search criteria, and it still wouldn’t cover everything. No, for this game and many other CCG’s, most people do not remember the card or it’s type, but simply that it say something about one of the 500 or so different properties in gameplay.

The rules for the game are located as pdf files in the download area. A supplement of card rulings was released several years after the game. This document is 141 pages!, with about 25 entries/page. This document only clarifies how the card text should be interpreted. I not so sure you would have much luck classifying the cards (other than the obvious ways I have described), but if you are willing to try, I’ll listen to what you have to say. If you do, tell me first what you would do with the 700 events. None of them have subtype or race. Maybe about 5 would have a mark of a given type, or a special grouping (like ISA: InterStellar Alliance), so you might get 100 events out of the list - maybe.

As I said in my first post, tackling the requirements of B5 CCG will be like getting ASL virtual. Once you’ve tackled the hardest kid on the block, the others should not be a problem.

BTW, many thanks to those that helped fixed the out of memory problem in Vassal 3.0 to at least 2.6. The 3.1 beta has allowed us to merrily complete a number of games already this year. Something that did not happen often prior to 3.1. Was there a recursive call, or a pass by value of the play table that was causing this problem? I’d sure like to know what the problem was, just for the chuckle. Smart people, on occasion, can really do silly things. Who found it?

P.S. Tim Byrne is listed as the author of GIJoe TCG. I think this Tim is probably the “bug”. Sorry for any previous, present, or future confusion to “Tim”.

Thus spake “dcholtx”:

Most of the memory-management since 3.0 has been mine. There were many
small things I fixed, and one large one. I can’t say for sure which one was
the problem in your case, but most probably it was the large one, which had
to do with image caching. Prior to 3.1, whenever we loaded, rotated, or
scaled an image, it would stay in the cache for the life of that program
instance. This saved us CPU cycles but used more memory. If every image in
your module, at every scale and orientation, would fit on the heap at once,
then this worked tollerably well; if not, you’d eventually run out of
memory. This wasn’t a bug per se, it was a known consequence of the design.

What I did was replace our old, permanent image cache with a forgetful image
cache. This new cache drops images which haven’t been used recently whenever
VASSAL is running low on memory. This way, you will run out of memory while
performing an image operation only if the cache is empty and there still
isn’t enough memory to do it—in that case, there’s nothing further we can
do to, you need to increase your maximum heap.


Messages mailing list …

Post generated using Mail2Forum (

That would describe exactly the problem we were having. I have multiple zoom levels, because I can’t know what screen real estate players will be using. So it usually takes a couple of zooms to get all the windows correct for a given screen(s) configuration. With this new caching, the problem went away. Thank you.

Any thoughts about my need to specify more for a deck builder?


Thus spake “dcholtx”:

No, I haven’t had time to follow up on anything else on this thread yet.


Messages mailing list …

Post generated using Mail2Forum (

It seems like the problem you’re having with building decks now is that it can be hard to locate a particular card in the Palette. (ASL has this problem too.) What would really help would be a Search box. Wouldn’t that be cool! Type in some keywords and get back a list of matches. Click on one to reveal the card in the Palette. This could be handy for the Inventory tool as well.

I could see implementing this as a sub-component to the Game Piece Palette. The Search Box could be configured to index the text in some specified Game Piece properties. A brute-force search might be tolerably fast for a few thousand pieces. Otherwise, you can build the index at module edit time for fast searches during play time.


Post generated using Mail2Forum (

What you suggest is better than what we currently have. (Of course if you take this step, then you’ll make me obligated to go back through and make my cards correctly. Geez that’s a bit of work, but with a perl script and the existing texts files, I might be able to automatically generate the build file. This falls into the category of being careful what you wish for, because you just might get it. I was planning on learning JSF and JSP for my Chivalry and Sorcery RPG combat queue this spring.)

The one remaining problem would be trying to evaluate your deck as a whole. One of the nice features of the B5 deck builder (see above reference about the deck builder found on Vorlon Space), is that it summed up the deck properties of your deck. Take a look at the interface of this program, it has a summary tab (right hand side tabs) as well as 2 search types. I realize that this one is specific to this particular game, but it appears to me with this late binding programming model, it might be possible to make a configurable deck builder (by the module builder).

But the search, in what every form, would be of great benefit. There are currently about 350 cards that were only produced virtually, as Precedent went out of business before these could be published. Currently neither the deck builder program nor any of the browser based tools has any capacity to search these cards. So Vassal would be the only “deck builder” that would handle these cards for the B5CCG.

I’ll have a further look at the inventory tool. I did notice it, and it is close, but not quite there (I think).