Hi All,
Here’s some food for thought and discussion.
Problems with Sides in Vassal 3
- They are fixed within the module and cannot (easily) be varied between scenarios. They can be ‘hidden’ (by logging in to them), but cannot be created.
- You can’t (easily) close empty seats to prevent unwanted players jumping in the game.
- Unless the module designer has specifically designed options for Solitaire play into the module, it is not easy to play both sides.
There are workarounds for these issues, but it is a total PITA.
Proposed Solution
Separate Seats from Sides.
What is a Side
A Side is what we generally think of as the opponents in a game. Sides are named Positions in a game.
Sides often have specific Game Assets allocated to them that they have privileged access to, such as private or public windows for their own use, or Game Pieces that only they can use.
Sides can also be much more generic where there are no specific Game Assets allocated to them. For example, in many card games everyone uses the same cards and counters, there no player specific cards. Sides in this sort game tend to be much more generic. E.g. ‘Black, White, Red, Blue’ or ‘Player 1, Player 2, Player 3…’. Sides in this sort of game often require some Generic Assets that are exactly the same for every Side. For example, every Side in a card game probably needs a Private Window to hold their cards. Apart from access, every Sides Generic Assets are identical.
What is a Seat
A Seat is a position at the Vassal virtual table.
In Vassal 3, a Seat and a Side are the same thing. When you select a Side at the start of a Game, you are given one Seat with ‘ownership’ over that Side.
In Vassal 4, I propose that we split these two concepts completely. At the start of a Vassal 4 game, you will take an available Seat which will give you access to one or more Sides.
A player in Seat attached to multiple Sides would still only be able to play one Side at a time, but they would be able to change to a different Side simply by selecting the alternate side from a drop-down menu (or similar).
What might this look like for the Module Designer?
The Module Designer would still define the Sides in a roster much like they do now. Axis & Allies will still require two sides created, ‘Axis’ & ‘Allies’. If the game supports Moderated play, you might also define a ‘Moderator’ Side that has specific private Game Assets to support moderation. Game Assets will still have access limited to them based on Side.
The module Designer would then create a separate Roster of Seats available for the module, and what Sides those Seats have access to. This might be:
- An Axis Seat that has access to the Axis Side.
- An Allies Seat that has access to the Allies Side.
- A Solitaire Seat that has access to both the Axis and Allies Sides.
- A Moderator Seat that has access to both the Axis & Allies side and the Moderator Side.
NOTE that not every game will provide every type of Seat, or provide access to every Side.
How would Seats get allocated to Games/Scenarios?
When creating a new game or scenario, one of the setup tasks will be to select how many of each type of Seat are allocated for that scenario. For example, using the A&A Seats defined above:
- A standard 2 player game would get 1 Axis Seat and 1 Allied Seat allocated.
- A 4 player game would get 2 Axis Seats and 2 Allied Seats allocated.
- A Solitaire game would get 1 Solitaire Seat allocated.
- A moderated 2 player game would get 1 Axis Seat, 1 Allied Seat and 1 Moderator Seat.
What would a player joining a game see?
When joining a game, a Player will be presented with a screen showing the full list of Seats allocated to this game, which Sides those Seats control, which Seats are already take by Players (and who they are) and which Seats are available to be taken.
Full information at this point is important - Don’t join a game which has a Seat taken by someone who has access to both Sides!!!
We should probably display prominent warnings where we detect this sort of setup. This would be valid in a Moderated game for instance, but the players should be warned.
What about Observers?
Observers do not take a Seat and can have no interaction with the game, except to chat.
Seats should be (somewhat) Dynamic
It should be possible open new Seats and close Unused Seats during play in a controlled way.
Need to discuss limits and controls on this, but I envisage something like the following.
-
A Scenario is defined to allow up to 8 Generic Seats in a card game. The game works with a minimum of 4 players, so after 4 players have joined, all players agree to start the game and the remaining 4 seats are closed. [mechanism? How would it work in PBM? By Agreement, or give person who created the game control ? Similar to online room control]
-
3 Players want to play an A&A game that only has a 2 player and a 4 player (2 a side) startups defined. They start the 4 player game, 2 players take the Axis Seats and 1 the first Allies Seat. The player all agree to close of the 4th Seat and start the game.
-
A Player would like a friend to help him play his Side in a large war game. He creates a Subsidiary Seat that is a copy of his own Seat and his friend joins the game, takes that Subsidiary Seat and has full access to the Sides allocate the original Seat. I would envisage that:
- A Subsidiary Seat cannot create further Subsidiary Seats.
- A Player may only create a Subsidiary Seat of their own Seat.
- A Player who has created a Subsidiary Seat would retain the right to arbitrarily boot the Subsidiary Player and delete the Subsidiary Seat.
- He may require agreement from the other players to be allowed to create a Subsidiary Seat.
What did you mean by Generic Assets?
A Generic Asset is a standard Game Asset like a Private or Public window that has been defined by the Module Designer to be Generic Asset. [Possibly just a Tick Box in the Asset definition]
Generic Assets are automatically created and assigned to a Player when that Player takes a Seat.
Generic Assets only need to be defined once. Each Player will get their own copy.