Why do we have At-Start Stacks?

You still are running version 1 pieces in a version 2 environment. What happens when that v1 piece wants to “send to” a map that no longer exists because of a spelling change or map deletion? You can’t just rip something out of one world and dump it in another and expect it to work. Your “we want saved games to continue to work” is an illusion.

Furthermore, why DO people upgrade their modules from v1 to v2 and above? I think they reasonably expect to get improvements and bug fixes. Not in this vassal they don’t. They get v1 pieces whether they like it or not. What they should have is a choice. Don’t want change, then don’t upgrade.

Regardless the cause I believe there are plenty of good reasons for ASS (I saw that acronym yesterday too Chuck but refrained lol :slight_smile: to remain

Do they need more functionality? no
Is it a pain for developers to maintain something duplicate in many ways to piece palette? probably
Would enhancing piece palette for limited quantities be useful? Yes, but it wouldn’t address everything that ASS can do
Is it useful to designers? Yes and No - they can take it or leave it, its a ‘how used’ thing as many indicate
Do players benefit from it? Again yes and no. As Ben mentions many like to set up everything themselves whereas others just want to fire up and go - it cuts both ways

Then there is Stan’s related argument. In many ways it reminds me of multiplayer online FPS games. You cant get on the game server unless your game is up to date with latest patches fixes etc…most the time. No one is ever mixing versions because its not an option and deliberately set up this way. Maybe Vassal needs to be the same way. Somehow all modules (their version) are registered with the server. Connecting to server will check your version and tell you to upgrade before letting you on. Thats the easy part for playing live, but for PBEM it would be more difficult, perhaps here whenever a log file is started/resumed a quick check against the server is made.
In any case this method would remove the saved game files updates issue and the files will always inherit latest info - never any incompatability.
Im sure a little bit more thought on this is needed its just a basic concept here

From: Chuck Parrott chuckparrott@earthlink.net
To: VASSAL Engine Forums Mailing List messages@forums.vassalengine.org
Sent: Tuesday, September 1, 2009 9:01:25 AM
Subject: RE: [Developers]Re: Why do we have At-Start Stacks?

called by a global command. The At-Start Stack function is also >used in
this case.

This is probably the biggest reason in support of at-start stacks (ASS for
short :slight_smile:

Yeah you could add it into a palette and drag it out when you need it, but
for those of us doing automation, it would get to be a pain having to drag a
piece out to the board every time you make a change to see if it works. With
at-start stacks, I can at least position it out of the way, tweak settings,
start a new game and test it. Lather/rinse/repeat.


Messages mailing list
Messages@forums.vassalengine.org (Messages@forums.vassalengine.org)
forums.vassalengine.org/mailman/ … engine.org

Post generated using Mail2Forum (mail2forum.com)

Actually, I am finding you attitude quite obnoxious and have no great desire to continue this conversation with you at all. I have better things to do.

B.


Messages mailing list
Messages@forums.vassalengine.org
forums.vassalengine.org/mailman/ … engine.org

Post generated using Mail2Forum (mail2forum.com)

I am sorry that I insulted you. I was trying to seriously discuss the shortcomings of the saved game files, and I thought you were just trying to be funny at my expense. I seriously wanted you to list some benefits of the current design in hopes that you too would come to the same conclusions as I did: that it really doesn’t work that well.

The behavior of Vassal’s saved game files have troubled me and no doubt numerous other designers for years now. I have wasted a good deal of time trying to circumvent their restrictions, and I am pretty happy when I can avoid using them in module design. If it were not for at-start stacks, I doubt I would continue doing this.

When this topic appeared, most of us who rely on at-start stacks were quite alarmed, and I added a note that life would be much better if saved game files worked right. I don’t think the way save files work now benefits anyone.

For anyone who has followed along and is unclear still about what I am complaining about, I relate a real-life current story. I give up on the general discussion because I don’t think anything will change. This is for the players out there.

A couple weeks ago, I uploaded version 1 of a new module for Decision’s RAF Lion game. This is a solitaire game covering the battle of Britain. The campaign game can be rather long, so one can expect players to play a while, save, and come back to it later. It could last weeks or months. I am aware of several players who are doing just that.

A couple days ago, I discovered that I blundered with a single German ME109 fighter, which is on the reinforcements track. I misspelled a prototype reference. This means that the fighter is missing a large portion of its right-click menu, and it won’t respond to a global key command that returns it to base.

It was easy to fix. Change the spelling and create version 2. Upload it and announce that v2 corrects an error with an ME109 fighter. I believe the players would download v2 in expectation that they could continue their campaigns with the correction. They would be wrong.

The trouble is that Vassal stores too much information about pieces in the save game file, information that you would expect to be taken from the module. In my case, the save game file contains the bad prototype information for the fighter, and there is no way that the player or I can tell Vassal to use the right prototype. In fact, if he does the v2 download, then he is playing with v1 pieces in a v2 module. This means that the player who downloaded v2 for the fix is not fixing anything. My change was minor, but imagine if I changed the name of the dead pool map. What would happen when he right-clicked a v1 piece to the now non-existent dead pool? So my downloading v2 RAF had 2 effects for the player: (1) he did not get the fix and (2) he exposed his game to strange behavior, perhaps crashes.

There are ways that he can get around this, but I would have to explain it in a help file. His choices:

  1. Abandon his saved game and start over.
  2. Write down the location and states of all cards in the game. Abandon the game, start over, and move all cards and pieces to locations/states as he recorded. (I have done this.)
  3. I build a special module version with an exposed piece palette that contains the single corrected ME109. The player grabs a replacement off the palette and hides the bad one. (I’ve done this one too.) This is the odd instance where v1 and v2 pieces coexist in the same game.
  4. Try to use the updater tool to create a new save game file. Be aware that it is not intuitive, you might accidentally overwrite your original, and I have never had it create a correct file in all the times (years) that I’ve tried using it, so you need to meticulously double-check its work.
  5. Explain to the player WHY they have to do this at all.

Currently I have not uploaded v2, but when I do, I’ll tell them not to use it unless they start a new game.

You would expect the default behavior would be that vassal would attempt to update v1 pieces so they could live in the v2 world as it loaded the file, but this is not how it works. It believes that it is better for everyone that it keeps v1 pieces as-is no matter where it puts them.

If you have a module that allows you to choose a scenario, you should realize that each scenario is actually a save game file that is embedded inside the module. Considering what I’ve said, it should be apparent to you that we module makers end up re-creating those files seemingly countless times because each time we change a piece, we have to rebuild the files all over again. (When I was working on Liberty, I had the setup memorized.) This is why this discussion of at-start stacks is so important to us. We can build a scenario without having to use a file.

So in the future, think twice before you download that module update. You may not be getting what you think.

This is what the Saved-Game Updater is for?

Sorry, I’m coming late into this conversation.

  • M.

Post generated using Mail2Forum (mail2forum.com)

Thus spake “shilinski”:

I think it also doesn’t work well at present; I never claimed it did.
What I’ve been trying to ascertain is whether we could remove some
duplicate functionality if updating saved games worked better than it
does.

Something I’m trying now to understand is which changes in modules are
“safe”, and whether there’s some way to automatically recognize those,
or provide the user some way to merge changes after an update or somesuch
thing.


J.


Messages mailing list
Messages@forums.vassalengine.org
forums.vassalengine.org/mailman/ … engine.org

Post generated using Mail2Forum (mail2forum.com)

Hi Stan,

Sorry if it came accross that way, I was just trying to keep the discussion light-hearted.

[ problem description ]

Aha! Thanks for a detailed description of the issue that needs resolving, rather than presenting a technical ‘solution’ that we ‘need’ to implement.

It turns out I have been working towards a solution to this problem as part of the New Game Updater (NGU) I have been working on. The new updater is an online updater - you run it over the current game in play and it updates all pieces to the latest version of those pieces.

A while back, Joel mentioned that perhaps we could run this automatically whenever a saved game is loaded, but there are non-trivial issues that need to be addressed. I am interested in your feedback on the following:

  1. The new New Game Updater cannot update Hidden or Masked pieces that do not belong to you. A game containing Hidden or Masked pieces has to be updated by each player who owns Hidden or Masker pieces.

  2. The way it works currently, it will significantly slow down the speed with which Saved Games load as it is expensive to determine whether or not a piece is ‘different’ to it’s current implementation. I think the way around this is to implement a version number in each PieceSlot to got with the Global Piece Id. This should make it much more efficient to determine if a piece is out of date. And whether to update it all if the piece definition is actually newer than that defined in the current module!

  3. Some pieces cannot be updated at all if the Pieceslot used to create them has been deleted. This isn’t really a problem, these pieces just don’t get updated.

  4. The problem is deeper than just loading an isolated saved game. What are the issues with new pieces being created during online play by players running different versions of the module? Yes, I agree with you that players should not run different versions of the module, but this is the real world, it will happen :slight_smile: Once I have the new Jabber server to play with, I plan to significantly enhance the options available when setting up rooms. You will be able to specify that all players entering the room must have the same version number and module CRC as the room owner.

Potentially, with Pieceslot version numbers I could probably do a reasonable auto-update on load of a saved game.

Regards,
B.


Messages mailing list
Messages@forums.vassalengine.org
forums.vassalengine.org/mailman/ … engine.org

Post generated using Mail2Forum (mail2forum.com)