After talking with Joel, I went ahead and did some extracting out of a manual Ive been creating which addresses some core usage concepts of Vassal (from user perspective) and posting link here for devs to look at. (theres a few bits / references you can ignore because it was made for specific module - its just the idea)
Is this the type of stuff we are wanting as far as documentation goes? If it is I can take out the module specific references, clean up etc, make generic and maybe use as a starting point for the “documentation project”
I like the format. I would suggest adding some sort of topic numbering system …sort of like legal documents. I’ve found that it’s far easier (when suggesting a topic to someone) to tell them to take a look at 184.108.40.206 in the documentation rather than refer them to some obscure reference which may be hard to find.
Im using Adobe CS3. Originals are in Adobe InDesign and saved to PDF - version 8 I believe is its default. I’ll make up another if there is still problems or put up the Indesign files if you can open those
This is a very good format for people who come to VASSAL asking “I’ve heard that I can play XYZ online using this VASSAL thing. How do I play?” The discussions of Preferences, connecting to the server, and manipulating counters and stacks are very good and apply to any module. The only thing that’s missing is a discussion of email play via logfile. Also, many new users miss the need to select Synchronize on the server, so that should be emphasized prominently.
I’d separate out the Module Manager discussion from the rest. Now that you can launch a module by double-clicking on it, many users will never even need to know about the Module Manager, especially if they are using VASSAL to play just one game. The first thing these users are likely to need the Module Manager for is to install extensions. Rather than having a “Guide to the Module Manager” I’d have a “How to install extensions” section as the first introduction to the Module Manager.
Is there a reason that players joining a room don’t just automatically Synchonize with the first player in the room? Surely you would never join a room and not want to immediately Synchronize? I have always thought the Synchronize menu option a bit odd…
I’ve long thought that there should be a better way. But here’s a scenario:
I have the game log, but my opponent is quicker than me and starts the room
before I do. If I am automatically synchronized with him becuase he started
the room, then our game isn’t loaded.
How about this? When someone loads a game or log, everyone else automatically
synchronizes with it. Would that work?
No, there has to be some control. A player might maliciously/accidentally load a game in a room full of players while another game is already in progress and blow away everyone else.
I think it comes back to giving more ‘power’ to the ‘owner’ of the room. If the ‘owner’ of the room loads a game, then everyone should auto-sync with him. No other players in the room should be able to do that. It doesn’t make any sense to have different players in the same room running different games.
The reason so many players don’t realize you have to click on ‘Synchronize’ is that it doesn’t make any sense to have to do it.
In most multi-player environments, the person who starts the room/game sets up all the parameters and specifies what is being played. Everyone else then joins that session and plays that game.
In your example, if you are the only one with the game log that needs to be played, then you have to be the one who sets up the room, or you can’t play the game. Your friend who started the room would have to leave it to promote you to the ‘owner’ and then rejoin.
What if we make it so that when one player executes a load, everyone else
gets a dialog asking if they would like to sync? Having to pay attention
to whom created the room in order to load a game trades one way of being
unobvious for another.
We’ll have to agree to disagree on that one. I think ‘Owner = Full Control’ is quite obvious - If you don’t own the room, you can’t load games, period. I think the concept of ‘He who makes the room, controls the room’ is a well established principle in multi-player games (thinking FPS here).
If I create a room and am playing a game, I don’t want to be disturbed by Observers loading other games because they don’t know what they are doing (or are malicious).
Perhaps Locked Rooms should be my way - Only owner can load games, all other players auto-sync with owner, while unlocked rooms can be your way - Shared Control, Observers able to interefere with other players, Anarchy?
We’re not talking about the same thing here. Observers shouldn’t be able to
affect running games at all. My proposal is made under the assumption that
we make the modifications necessary so that all observers can do is observe.
Getting load notifications from other players shouldn’t rise to the level
of annoyance—if it does, the problem is not the notifications, but the
people you’re playing with.
Something to add to this Server control / ownership
Joel, the functionality (in whatever final form it takes) needs to be like the new Log file controls - that is everything is button controlled visible/greyed out depending on circumstance.
Today the server control manipulation is a 2 step process of button selection and right click menu selection. Many users are not aware of the 2nd step which is where synchronize is. It needs to all move and be in one place
By placing everything in buttons, be it load game, synch w/ game, new game, new room, join room, whatever, everything will be right there with a dialog pop up description help just like every other button as to what it does and users wont miss anything
Ownership control can be added to the buttons so a room owner would see the specific ownership type buttons normally while those that join would see the buttons as disabled and cannot manipulate them
What would you think of removing manual room creation at the same time as
removing the synchronize option?
The process for the user would be like this: Connect to the server. Start
a game (either new or loaded), which creates a room for the game and puts
the user into it. Anyone subsequently entering the room is automatically
synched with the room owner.
Yes, that makes sense, excellent suggestion. The only purpose of Room creation is to create a specific instance of a new game
When you connect to the Server, you are connected to the Main Room as now.
You would then have these options:
Chat with people in the Main Room
Send Private Messages to anyone in any room who is not ignoring you
Check the Profile of other users.
Check the Status of other rooms.
Join an existing room (either manually or by invitation). This causes you to auto-synchronize with the owner of that room.
Start a new game or Load a log or Save file. This will prompt you for the name of the room you wish to create, then will create the new room with you as the owner. The Room creation dialog could allow you to set other options:
Start room Locked
Limit access to clients with same module/vassal version
Yes, that’s much more streamlined than before, and doesn’t present the user
with needless complexity. Let’s do that.
The room creation dialog should be an expanding one, with the extra options
hidden. (Look at VASSAL.tools.swing.DetailsButton and DetailsDialog for how
to do that. Also something I added a week or two ago: MigLayout, which these
VASSAL had automatic synchronization at one point. Seemed like an obvious win, but people didn’t like it. Being the recipient of a sync request takes up resources on your machine (equivalent to saving the game) and I remember that people didn’t like to experience this pause every time someone ducked into and out of their room. This was before locking rooms, so maybe it would no longer be a problem.
I know that in some communities, it is considered rude to join a room and sync without asking if it is ok to sync.
If we enforce auto-synchronization, then all players in a room should always be sync’d. To share the load, New players joining the room could select a random existing member to sync from? Or even a scheme to rotate through the players in the room (i.e. you sync with the player who was sync’d with longest ago).