Local/Global Properties

Having some slight heart palpitations :smiley: Hope you can help me understand what I’m doing wrong.

In my 3.2.0-svn8213 module I have (many) values sort of operating in a chart like a spread sheet but to boil it down-

-There are numerical counters that report the value of “colonyCounterValue” which is a global property stored on the Map Window they are in.
-This “colonyCounterValue” property can be passed to a Global Property (filed in the root/main map Global Property section). This Global Property is something like “BluecolonyCounterValue”. So it would only be for the Blue team.
-The green team has a similar numerical counter on his Map Window with a “colonyCounterValue” Global Property that passes its value to the GreenColonyCounterValue global property on the main map.
-The idea behind all of this is that the numerical counters in my chart have generic global properties that (I thought) were Local to the Map window. This makes it easy for me to copy and paste a chart for another team. Then I just adjust a counter on the chart that “routes” these values to their respective team global value.

Counter value (generic) → Blue window → Blue’s counter value global property.

Counter value (generic) → Green window → Green’s counter value global property.

But what is happening now that I have finally set it up (there are MANY MANY numerical counter “cells” in my spreadsheet). Is that if the Green player makes a change to the generic “colonyCounterValue” it will be reflected on the Blue Window. In other words, I thought the Global Properties stored in a given window were treated as local properties for the counters in that window… but it seems they are not. …Help! Thanks in advance

New twist: This only happens in a multiplayer game. If ,offline, I join as Green, change the colonyCounterValue property, switch to Blue and refresh the counter there, it does NOT show me the value of Green’s counter which is what it was doing in the above example. So to summarize again:

Green Production Window → numerical counter that reports value of → colonyCounterValue (Global Prop in that window)
Blue Production Window → numerical counter that reports value of → colonyCounterValue (Global Prop in that window)

In a multiplayer game if someone puts a value into the counter on the Green Production Window, it will be mirrored in the Blue Production window as well. However, if Blue puts a value into the counter on the Blue Production Window it is NOT mirrored onto Green.

If playing offline, the values are NOT mirrored at all and operate independently.

Let me know if I can explain this any better.

This is known bug 4278.

Till they fix it, you are forced to use unique variable names in every window (Green_countervalue in the Green window, Blue_countervalue in the blue window etc).

Wow I had no idea this existed already. Looks like it was reported in Feb, I was about halfway through writing the Production Sheet section of my module at that time.

Really this is a showstopper for my module. I can rewrite it with team-dependent global properties, but it would require changing the prototypes for hundreds pieces since they now just inherity a single prototype for using the local variables and then use $PlayerSide$ when somthing needs to be sent to a team specific variable.

So, Barbanera & Brian & irishwulf & anybody else:

How can I help!? I really want to get this fixed for the 3.2.0 release. My knowledge of Java is limited but I’m prepared to do everything I can to fix this since that beats re-doing half of my new module. Where can I start? I’ll see about putting the word out on the BGG fourms for this game if anybody with Java experience could take a stab at fixing this specific bug.

Let me know how I can make this happen… I’m desperate! :smiley:

For anybody following along, here is the link to the bug:
vassalengine.org/tracker/sho … gi?id=4278

Yeah… I know how you feel. It was a show stopper for me as well and I had to painfully rename all variables, on a map specific base, clone the prototypes in multiple instances for map specific use etc…

If it can help, remember you can still use set global properties with Named Map = $playerSide$ and gp name something like _$playerSide$ which is the way I had to go for.

Geez, that’s miserable. I mean I know how to do that, I can make new GPs within the map window easily enough, but I have a grid that is 15 counters by 20 counters (like a spreadsheet) and grids similar to that in 4 other tabs within my production window. It’s just a massive amount of prototypes to replace. In fact I’d go form having something like 50 prototypes total in my game to like 200, since they would now need to ‘talk’ to different variables. Maybe I could do it in text edit with the buildfile. I’d also have to go and do it for Red and Yellow then. It stinks, I thought I was on to something with the way I had the local/global properties set up so I could duplicate everything out, changing only a few properties for each team’s private window.

What needs to be done to the vassal engine to fix this bug? I just think that’s gotta be easier than re-wiring my production sheets. It took me months to get them working right. There’s gotta be something I can do to help!

If you know a bit of Java why don’t you pursue the line of investigation that Seth (Irishwulf) initiated following my report?

I believe I have sorted out this bug, just doing some final testing. Turns out that the saving/restoring/changing of same named Global Properties in different zones/maps is completely broken in both 3.1.19 and 3.2. Just making sure my changes do the same broken behaviour when processing pre-bugfix save games or log files.

That’s great news, Brent. Thank you.

Brent, you made my day (and saved me hours and hours of work), thanks for figuring this out!

Have submitted a fix to branch Brent-3.2@8216.

As Seth found, the identity of the Global property container (module, map or zone) was not being encoded when Commands where generated to set or change property values. This caused all references to a property in different containers to be handled by the first container found, effectively making the subsequent same named properties invisible.

The same fix needs to be applied to the latest 3.1 branch as well.

Thus spake Brent Easton:

Have submitted a fix to branch Brent-3.2@8216.

As Seth found, the identity of the Global property container (module,
map or zone) was not being encoded when Commands where generated to set
or change property values. This caused all references to a property in
different containers to be handled by the first container found,
effectively making the subsequent same named properties invisible.

The same fix needs to be applied to the latest 3.1 branch as well.

Thanks, Brent. I’ll merge this when I return home from Iceland tomorrow.


J.

Thus spake Brent Easton:

Have submitted a fix to branch Brent-3.2@8216.

As Seth found, the identity of the Global property container (module,
map or zone) was not being encoded when Commands where generated to set
or change property values. This caused all references to a property in
different containers to be handled by the first container found,
effectively making the subsequent same named properties invisible.

Merged to 3.2@8218. Try the build I’ve uploaded.

vassalengine.org/~uckelman/builds/

I’ll roll this into 3.1 tomorrow.


J.

Just tried to install the new build and it doesn’t seem to install the vassal EXE (for the Win version of course). Is there a problem with the installer?

Neither standard nor custom install seems to install the EXE. Not sure if any other vital files are missing, I just know it does not run.

Thanks again

Confirming failure to install. Reverting to last build.

Flaney

Thus spake Flaney:

“chrono280” wrote:

Just tried to install the new build and it doesn’t seem to install the
vassal EXE (for the Win version of course). … Neither standard nor
custom install seems to install the EXE. Not sure if any other vital
files are missing, I just know it does not run.

Confirming failure to install. Reverting to last build.

Try downloading svn8218 again. I started using parallel Make a few days
before making the original svn8218 build, and it appears that our
Makefile does not have the goals for all of the requirements specified
properly.


J.

OK just tested newest build (svn8221) the installer now works correctly and bug 4278 seems to be completely fixed. Can’t thank you guys enough.

Thus spake Brent Easton:

Have submitted a fix to branch Brent-3.2@8216.

As Seth found, the identity of the Global property container (module,
map or zone) was not being encoded when Commands where generated to set
or change property values. This caused all references to a property in
different containers to be handled by the first container found,
effectively making the subsequent same named properties invisible.

The same fix needs to be applied to the latest 3.1 branch as well.

Merged to 3.1.20-svn8223.

I had to add a missing getParent() method to MutableProperty.Impl.

I’ve uploaded 3.1.20-svn8224 to the usual place. Please give it a try.


J.

Just tested out svn8224 and got an Exception. I was testing the same module I used under 8221 last night. The only difference is this time I am using 2 computers on my lan (with different login details) rather than 2 users across the internet. The exception occurs whenever a game piece with any dynamic properties gets a keystroke done on it: It is repeatable dragging a new unit to the board (gets a keystroke from the board) or applying a keystroke to a counter in my production window in the module.

[code]2012-07-25 19:15:56,428 [0-main] INFO VASSAL.launch.StartUp - Starting
2012-07-25 19:15:56,428 [0-main] INFO VASSAL.launch.StartUp - OS Windows 7
2012-07-25 19:15:56,428 [0-main] INFO VASSAL.launch.StartUp - Java version 1.6.0_31
2012-07-25 19:15:56,428 [0-main] INFO VASSAL.launch.StartUp - VASSAL version 3.2.0-svn8224
2012-07-25 19:15:57,036 [0-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManager - Manager
2012-07-25 19:16:03,089 [0-SwingWorker-pool-21781303-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module file C:\Users\Bob\Documents\Space Empires\Vassal\Modules\se4x-close-encounters-2beta.vmod
2012-07-25 19:16:10,234 [0-SwingWorker-pool-21781303-thread-1] INFO VASSAL.launch.TilingHandler - No images to tile.
2012-07-25 19:16:10,234 [0-SwingWorker-pool-21781303-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module Space Empires 4x Close Encounters
2012-07-25 19:16:10,265 [0-SwingWorker-pool-21781303-thread-1] INFO VASSAL.tools.io.ProcessLauncher - launching C:\Program Files (x86)\Java\jre6\bin\java -Xms256M -Xmx512M -DVASSAL.id=1 -DVASSAL.port=49585 -Duser.home=C:\Users\Bob -cp lib\Vengine.jar VASSAL.launch.Player --load – C:\Users\Bob\Documents\Space Empires\Vassal\Modules\se4x-close-encounters-2beta.vmod
2012-07-25 19:16:11,170 [1-main] INFO VASSAL.launch.StartUp - Starting
2012-07-25 19:16:11,170 [1-main] INFO VASSAL.launch.StartUp - OS Windows 7
2012-07-25 19:16:11,170 [1-main] INFO VASSAL.launch.StartUp - Java version 1.6.0_31
2012-07-25 19:16:11,170 [1-main] INFO VASSAL.launch.StartUp - VASSAL version 3.2.0-svn8224
2012-07-25 19:16:11,170 [1-main] INFO VASSAL.launch.Launcher - Player
2012-07-25 19:16:16,677 [1-AWT-EventQueue-0] WARN VASSAL.launch.BasicModule - Space Empires 4x Close Encounters version 2.0beta
2012-07-25 19:16:47,073 [1-AWT-EventQueue-0] INFO VASSAL.script.ExpressionInterpreter - Attempting to load /VASSAL/script/init_expression.bsh URI generated=jar:file:/C:/Program%20Files%20(x86)/VASSAL-3.2.0-svn8224/lib/Vengine.jar!/VASSAL/script/init_expression.bsh
2012-07-25 19:19:29,485 [1-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog -
java.lang.StackOverflowError: null
at java.lang.AbstractStringBuilder.append(Unknown Source) ~[na:1.6.0_31]
at java.lang.StringBuilder.append(Unknown Source) ~[na:1.6.0_31]
at VASSAL.tools.SequenceEncoder.appendEscapedString(SequenceEncoder.java:149) ~[Vengine.jar:na]
at VASSAL.tools.SequenceEncoder.append(SequenceEncoder.java:88) ~[Vengine.jar:na]
at VASSAL.build.module.properties.ChangePropertyCommandEncoder.encode(ChangePropertyCommandEncoder.java:72) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encodeSubCommand(BasicModule.java:269) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:250) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]

at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]

2012-07-25 19:19:47,440 [1-AWT-EventQueue-0] INFO VASSAL.build.GameModule - Exiting
2012-07-25 19:19:48,657 [0-IPC receiver for 13060368] ERROR VASSAL.tools.ipc.IPCMessageReceiver -
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source) ~[na:1.6.0_31]
at java.net.SocketInputStream.read(Unknown Source) ~[na:1.6.0_31]
at java.io.ObjectInputStream$PeekInputStream.peek(Unknown Source) ~[na:1.6.0_31]
at java.io.ObjectInputStream$BlockDataInputStream.peek(Unknown Source) ~[na:1.6.0_31]
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source) ~[na:1.6.0_31]
at java.io.ObjectInputStream.readObject0(Unknown Source) ~[na:1.6.0_31]
at java.io.ObjectInputStream.readObject(Unknown Source) ~[na:1.6.0_31]
at VASSAL.tools.ipc.IPCMessageReceiver.run(IPCMessageReceiver.java:34) ~[Vengine.jar:na]
at java.lang.Thread.run(Unknown Source) [na:1.6.0_31]
2012-07-25 19:19:50,108 [0-SwingWorker-pool-21781303-thread-2] INFO VASSAL.launch.AbstractLaunchAction - Loading module file C:\Users\Bob\Documents\Space Empires\Vassal\Modules\se4x-close-encounters-2beta.vmod
2012-07-25 19:19:50,545 [0-SwingWorker-pool-21781303-thread-2] INFO VASSAL.launch.TilingHandler - No images to tile.
2012-07-25 19:19:50,545 [0-SwingWorker-pool-21781303-thread-2] INFO VASSAL.launch.AbstractLaunchAction - Loading module Space Empires 4x Close Encounters
2012-07-25 19:19:50,560 [0-SwingWorker-pool-21781303-thread-2] INFO VASSAL.tools.io.ProcessLauncher - launching C:\Program Files (x86)\Java\jre6\bin\java -Xms256M -Xmx512M -DVASSAL.id=3 -DVASSAL.port=49803 -Duser.home=C:\Users\Bob -cp lib\Vengine.jar VASSAL.launch.Player --load – C:\Users\Bob\Documents\Space Empires\Vassal\Modules\se4x-close-encounters-2beta.vmod
2012-07-25 19:19:51,512 [3-main] INFO VASSAL.launch.StartUp - Starting
2012-07-25 19:19:51,528 [3-main] INFO VASSAL.launch.StartUp - OS Windows 7
2012-07-25 19:19:51,528 [3-main] INFO VASSAL.launch.StartUp - Java version 1.6.0_31
2012-07-25 19:19:51,528 [3-main] INFO VASSAL.launch.StartUp - VASSAL version 3.2.0-svn8224
2012-07-25 19:19:51,528 [3-main] INFO VASSAL.launch.Launcher - Player
2012-07-25 19:19:55,942 [3-AWT-EventQueue-0] WARN VASSAL.launch.BasicModule - Space Empires 4x Close Encounters version 2.0beta
2012-07-25 19:20:08,555 [3-AWT-EventQueue-0] INFO VASSAL.script.ExpressionInterpreter - Attempting to load /VASSAL/script/init_expression.bsh URI generated=jar:file:/C:/Program%20Files%20(x86)/VASSAL-3.2.0-svn8224/lib/Vengine.jar!/VASSAL/script/init_expression.bsh
2012-07-25 19:21:30,754 [3-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog -
java.lang.StackOverflowError: null
at java.lang.AbstractStringBuilder.append(Unknown Source) ~[na:1.6.0_31]
at java.lang.StringBuilder.append(Unknown Source) ~[na:1.6.0_31]
at VASSAL.build.module.Chatter.encode(Chatter.java:214) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encodeSubCommand(BasicModule.java:269) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:250) ~[Vengine.jar:na]
at VASSAL.launch.BasicModule.encode(BasicModule.java:256) ~[Vengine.jar:na]
[this sequence repeats hundreds of times}
[/code]

I also received a “Bad Data In Module” … “Layer - shipCounter” Numeric Field Contains a Non Numeric number. This field normally contains a value dictated by a property sheet (which would always be a number) so maybe the prop sheets are not loading either.

The exception is thrown on either the host or the client players end if they send a keystroke to a counter.

None of this happened under svn 8221.

Thanks,
Have reproduced the problem, looking into it.
Brent.