# The Vassal design though process

Hello All,

I am trying to learn to think like an experienced Vassal game designer. My past experience with other programming languages is a hindrance here.

Looks like game design in Vassal is an interesting puzzle, but I am having hard time figuring out how the various components fit together. More importantly, I am not sure if I am thinking along the right lines. Here is a small example of what I am trying to do and my current thinking. Will appreciate some feedback to set right expectations:

Simple card game example:
Name: Big Fool

Rules:

1. Played with standard 52 card deck with as many players.

Question 1: Is there a way in Vassal to modularize the number of players and number of full decks.
Answer: Based in what I see so far. No. But accessing the base API may allow that. Any pointers to the second option, confirmation on first.

1. There will be four boards/grid in the main playing area. Players with 7 spades starts , no one else can put anything from their hand.

Question 2: is there a way to control the right of move. Disabling of in-eligle hands, along with a text field in main area to indicate who has move.
Answer: Not sure. There seems to be some scope for defining logic using traits, expression and layers. I haven’t been able to put it all together yet. I am looking for setting right expectations if I am on a goose chase, along with pointer to an example/module.

1. The move goes clock-wise.
Question2: Can you control that.
Answer: Most likely, player side order will determine it,

2. You can only out a 7 in one of the grids, or the next higher or lower number for a trump. So, assuming we only have spade 7 on board, the next player can put 6 spade, 8 spade, 7 club, 7 diamond or 7 hearts. Otherwise they pass.

Question3: Can you control this logic.
Answer: If you can find answer to 1, then this is probably an extension of that,

Question4: Can you implement auto-pass rule in case a player does not have valid card, or highlight the one valid ones in case he has some…
Answer: Again if 1 and 3 are possible then this may be doable.

This is it for starters. As you can probably figure out, I am still trying to understand the rules of the game called “configure vassal engine”, before I start solving the puzzle.

Hope I will get responses to encourage me to move forward with my plans.

Thanks.

Without going into details on how you can do each one - as that would be quite a long posting - I can let you know what can be done within my experience with Vassal.

If I read this correctly, you’re saying that each player has a 52-card deck? You could set up a deck for each player side in a hidden window. You can also set up an initialization button for each player. When they sign into the game, they click their initialization button and the game provides them with a deck from the hidden window.

I use initialization buttons routinely as it can be set to provide the player with whatever tools and settings are necessary to start …as well as be used to adjust a count of active players.

These are all possible. Keep in mind that Vassal is intended to create tabletop games that would be played just like you were setting at a table. Vassal does not enforce rules and, although a great deal of automation is possible, some things may be easier to just leave as controlled by the players. For example, you can have an “End turn” options for each player (a button, or right-click command) and if someone plays a 7 spades, everyone else manually ends their turn. This can be made to do automatically but until you get very familiar with the Vassal engine, it may be more trouble than it’s worth.

Having some sort of label to display the current player turn is fairly simple. Disabling hands when certain conditions exist is fairly simple. It would be a matter of adjusting specific Global Properties and then running checks against these properties to see if a player is eligible or not.

I can’t think of any module off hand that does all this stuff. Maybe some one else knows of one.

You can control the order of play in anyway you like. This would be player controlled unless you wanted to set up some sort of automated system for determining player order. As far as displaying the current player (as noted above) the player would probably need a button of some kind to declare his turn so properties can be adjusted and their name displayed on the board.

In one of the games I’m working on now, each player has a turn status icon. It’s blue when they haven’t had a turn yet, green when they are the active player, red when they’ve had their turn and there’s also a status option where it’s red with a big “L” on it meaning they’ve lost their turn. To change their status, they simple click the button or it’s changes automatically based on certain conditions within the game.

This would be player controlled as it would fall into the realm of rule enforcement. You could automate something like this but I believe it would be far more trouble than it’s worth. …unless you had the time and patience.

Once again, this would be player controlled with setting up a button or other option where the player can just pass their turn if they have no valid options. …and, once again, it can be automated but could be quite time consuming and potentially frustrating.

Thanks Dr Nostromo,

Now since I have my expectations cleared up, I can go ahead and start looking at ways to accomplish some of these.

g

Update:

After couple of long nights, I have the game and depends mostly on players to do the right thing. Now I want to start cleaning it up and start exploring some advanced features.

Here is what I have;

a. An at-stack start object to draw the cards.
b. I have 5 decks on the main board. One for 52 card starting deck. Four heaps (decks) one for each trump.
c. A shuffle action button at module level that generates the return to deck event. This puts the cards from trump heaps to main deck at the completion of a round.
d. Another return to deck event is used to play the cards and it takes the card from player hand to the rightful queue.

Here are some things I cannot get to work, need some help.

1. Ideally, I want Deal to be module level action button. I cannot get that going. Using a at-stack start event works.
2. I cannot get the shuffle button and deal event to work together. In my current model, I create 13 cards in each trump card. The main deck is empty. Then shuffle puts all the cards in main deck at run time. Now the deal event does not work. I works when I have all my cards defined in Main deck initially. So I am wondering if there is some dependence b/w card and deck in which it is initially configured.
3. Out of curiosity, I do not follow the logic for deal example. I have it working using at-start stack event which calls four GCKs each handling 13 fixed cards. This 13 cards then have a prototype trait which sends them to player hands. I have four such send to location traits.
My question: Is this the sequence as I described, and it appears as if the prototype runs one send to location at a time and keeps an internal counter of which send to location it ran last time , so it runs the next one , next time, Is this correct.
d. Currently, I am using a keyboard key, or right click and play to put cards back from player hand to its heap. How can I do this using a double click.

Plus I have some logic for eligibility in works which I haven;'t gotten going yet. Question on them after I have done my due diligence.

g