VASSAL 3.1.0-beta1 is released

The VASSAL Team is happy to announce the release of VASSAL 3.1.0-beta1.


Download


For Windows:

prdownloads.sourceforge.net/vass … e?download

For Mac OS X:

prdownloads.sourceforge.net/vass … g?download

For Linux (and other platforms):

prdownloads.sourceforge.net/vass … p?download


New Features


  • Improved installation: For Windows, a real Windows installer/uninstaller.
    For Macs, a single-file disk image. Download, click, and install.

  • File associations: Files with .vmod, .vsav, and .vlog extensions are
    now associated with VASSAL (on Windows and Macs). Double-click a module
    to load it in VASSAL!

  • New Module Manager frontend: The Module Manager displays all of your
    modules and save/log files, giving you a convenient way to organize
    them all.

  • Improved memory management: VASSAL now uses significantly less memory
    for various graphics-related tasks. Heap sizes may be set from within
    VASSAL via the Preferences.

  • Improved zooming: Zoom your maps to whatever size you want.

  • Aide de Camp 2 module importer: Convert any ADC2 module to a VASSAL
    module with one click.

  • Many, many other minor improvements, and scores of bug fixes.


Help us test


This is a beta release, and may still contain some rough edges. Should
you find any problems/oddities/bugs, please tell us so that we can fix
them before VASSAL 3.1.0 is released. Also, if you’ve had problems with
3.0.x, please check and let us know if those problems are resolved in
3.1.0-beta1.

Report bugs here in the Technical Support & Bugs category at the VASSAL
forums:

vassalengine.org/forums/viewforum.php?f=3

or by email to uckelman@nomic.net.

Cheers,

Joel Uckelman, for the VASSAL Team

Thank you very much to the Vassal Engine Team for all your huge work for this …

:smiley:

Could you please give more details about : * Aide de Camp 2 module importer: Convert any ADC2 module to a VASSAL
module with one click.

Are you speaking about Cyberboard current modules available ???

Regards,

Grégory

Thus spake “soft-bug”:

No, it’s not for Cyberboard modules. It will convert modules from
Aide de Camp 2 (ADC2) format, a program sold by HPS:

hpssims.com/pages/products/a … -Main.html


J.


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

Post generated using Mail2Forum (mail2forum.com)

Dear Joel,
thanks for the great work.
I have also a question concerning the conversion of ADC2 moduls.
Is that the menu “import mdoule”??
What file from the ADC2 directory do I have to choose ?

Best Regards
Chris

Hi Chris,

Click on File->Import.

The file dialog will ask to you choose a file. Go to the directory for the ADC2 module you want to import. You should see a bunch of files that end in .OPS. Click on the one you want (the one that you would choose if you were using ADC2). If there are multiple .OPS files, that means that there are several configurations or scenarios for that module, but you still have to pick the one you want.

  • M.

2008/5/12 Biswut <messages@forums.vassalengine.org (messages@forums.vassalengine.org)>:

Post generated using Mail2Forum (mail2forum.com)

Thus spake “Michael Kiefte”:

Also, have a look at the file filters in the file chooser—they
describe what the ADC2 file types are.


J.


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

Post generated using Mail2Forum (mail2forum.com)

The only other things you can import are the map itself, which just gives you the map (not very interesting, although for many modules, this means a lot more than just transferring a bitmap to VASSAL) or the counter set. Those options don’t really have a purpose other than that they have separate files in ADC2.

  • M.

Post generated using Mail2Forum (mail2forum.com)

HiHo together,

when selecting “Import Mdoule” my file browser has just the “*” filter.
So nothing to choose here.

I was bale to convert the Striuggle for Europe 1939 campaign from adc2 to VASSAL.
The Map, and all units and markers are there.

But when I save and I try to “play module” from the new created Module Library “SFE 1939 Campaign Setup” I get the follwoing error (see attachment)

Best regards
Chris

In your VASSAL directory should be a file called errorLog. Post that in the forum. We’ll be able to tell what’s going wrong from that.

That’s very unusual.

Definitely send the errorLog file.

  • M.

Post generated using Mail2Forum (mail2forum.com)

This is what should happen:

Click on File->Import. You should get a file dialog with the default extension mask “.OPS”. Click on a module, wait a few seconds and then the editor will come up. Click on the save button and save the module. The main VASSAL screen should now have the new saved VASSAL module in its list. If you double click on that module, your module should start.

If you close VASSAL and run it again, the new module should still be in the list. You can also click on File->Open Module and click on the file that you saved the module as. If you click on the original .OPS file at this stage you’ll get a strange error (I get an error dialog that doesn’t say anything – that’s a bug). You have to click on the file that you saved – whatever you called it. The standard now appears to be to have the filename end in .vmod.

If you saved over the original .OPS file, it means you no longer have the original ADC2 module. But you will be able to load it as a VASSAL module (I think).

Under no circumstances should you be getting a NullPointerException – that’s bad. Send us the errorLog and we’ll sort it out.

  • M.

2008/5/12 Biswut <messages@forums.vassalengine.org (messages@forums.vassalengine.org)>:

Post generated using Mail2Forum (mail2forum.com)

HiHo,

here is the log:

– OS Windows Vista
– Java version 1.6.0_05
– VASSAL version 3.1.0-beta1
– VASSAL instance 513102124
[513102124]
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:141)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:125)
at org.jdesktop.swingworker.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at org.jdesktop.swingworker.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
[513102124]
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:154)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:125)
at org.jdesktop.swingworker.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at org.jdesktop.swingworker.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
– OS Windows Vista
– Java version 1.6.0_05
– VASSAL version 3.1.0-beta1
– VASSAL instance 1023998434
[Fatal Error] :6415:105: Character reference “&#1” is an invalid XML character.
[1023998434]
java.lang.IllegalArgumentException
at VASSAL.launch.BasicModule.build(BasicModule.java:110)
at VASSAL.build.GameModule.init(GameModule.java:756)
at VASSAL.launch.Player.launch(Player.java:96)
at VASSAL.launch.Launcher.extractResourcesAndLaunch(Launcher.java:114)
at VASSAL.launch.Launcher$1.run(Launcher.java:102)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
[513102124]
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at VASSAL.launch.CommandClient.request(CommandClient.java:39)
at VASSAL.launch.AbstractLaunchAction.shutDown(AbstractLaunchAction.java:95)
at VASSAL.launch.ModuleManagerWindow$1.actionPerformed(ModuleManagerWindow.java:160)
at VASSAL.launch.ModuleManagerWindow$2.windowClosing(ModuleManagerWindow.java:177)
at java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
at java.awt.Window.processWindowEvent(Unknown Source)
at javax.swing.JFrame.processWindowEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
[1023998434]
java.lang.NullPointerException
at VASSAL.build.GameModule.shutDown(GameModule.java:650)
at VASSAL.launch.Player$PlayerCommandServer.reply(Player.java:70)
at VASSAL.launch.CommandServer.run(CommandServer.java:51)
at java.lang.Thread.run(Unknown Source)

Best Regards
Chris

BTW: I think I have to work on my typos :slight_smile:

Here’s a silly one:

Playing around with the beta on my machine at work, which recently got changed out. The upshot is that I don’t have some old ‘fiddling around’ stuff set up yet. I ended up pointing the MM at the zipped version of a module, just to see what it does.

It gave me an error box with the red “stop” sign, and no text next to it. Under that lack of message is the “Do not show this dialog again” message, and the Ok button. However, after that, I get an hourglass anytime I’m hovering over the Vassal window (but not the title bar–I can use the close ‘X’ button just fine).

I also just actually test-opened my F&E module, and it was pretty darn quick. :slight_smile: I’ll be benchmarking my home system soon.

Edit: and here’s the error log from trying to open a zip as if it were a module:
– OS Windows XP
– Java version 1.6.0_05
– VASSAL version 3.1.0-beta1
– VASSAL instance 911897588
[911897588]
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:141)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:125)
at org.jdesktop.swingworker.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at org.jdesktop.swingworker.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
[911897588]
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:154)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:125)
at org.jdesktop.swingworker.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at org.jdesktop.swingworker.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
VASSAL: File ‘C:\Archive\F&E 0.93.zip’ of unknown type
[911897588]
java.util.concurrent.ExecutionException: java.io.EOFException
at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at org.jdesktop.swingworker.SwingWorker.get(Unknown Source)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.done(AbstractLaunchAction.java:221)
at VASSAL.launch.Player$LaunchAction$1.done(Player.java:168)
at org.jdesktop.swingworker.SwingWorker$5.run(Unknown Source)
at org.jdesktop.swingworker.SwingWorker$DoSubmitAccumulativeRunnable.run(Unknown Source)
at org.jdesktop.swingworker.AccumulativeRunnable.run(Unknown Source)
at org.jdesktop.swingworker.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(Unknown Source)
at javax.swing.Timer.fireActionPerformed(Unknown Source)
at javax.swing.Timer$DoPostEvent.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.io.EOFException
at java.io.DataInputStream.readInt(Unknown Source)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:201)
at VASSAL.launch.AbstractLaunchAction$LaunchTask.doInBackground(AbstractLaunchAction.java:125)
at org.jdesktop.swingworker.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at org.jdesktop.swingworker.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Thus spake “Michael Kiefte”:

I know what the problem is—LaunchRequest is bailing out because it
can’t read any metadata from the file which isn’t a module. I’ll fix
this for beta2.

Thanks for the bug report.


J.


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

Post generated using Mail2Forum (mail2forum.com)

I just checked the performance of my F&E module, which has always been a bear to get loaded.

Holy cow!!! :open_mouth:

Vassal 3.0.17
Load: 0:00:09
Start F&E: 0:03:37
Load GW Start: 0:06:34
Finish Load: 0:09:46
Close: 0:12:53

Vassal 3.1.beta1
Load MM 0:00:06
Start F&E: 0:00:08
Load GW Start: 0:00:28
Finish Load: 0:00:48
Close: 0:00:51

I’ll still need to check that the system performs well inside the module, but that’s amazing!

Good to hear!

The larger the maps and the less memory your machine has, the more pronounced the improvements should be.

B.

*********** REPLY SEPARATOR ***********

On 12/05/2008 at 6:51 PM Rindis wrote:


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

Post generated using Mail2Forum (mail2forum.com)

Actually, F&E doesn’t have that big a map, and I have 2GB of memory. And the load time is all processor lockout. It’s just a huge module overall, and the bulk of those load times seems to be all the counters that F&E uses.

That’s even better to hear!

Joel has done a fantastic job on optimizing the graphics stream, but I thought it would mainly benefit modules with large maps.

B.


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

Post generated using Mail2Forum (mail2forum.com)

Thus spake “Rindis”:

I spent quite a bit of time last fall doing optimization work on the
load process. I’m glad you like it.


J.


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

Post generated using Mail2Forum (mail2forum.com)

Thus spake “Rindis”:

There’s another thing which I’m eventually going to look into regarding
load times (and memory usage): There are a lot of copies of the same
string that end up floating around in memory as a result of loading
many counters (especially ones which use prototypes) which should be
intern()'ed.


J.


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

Post generated using Mail2Forum (mail2forum.com)

There’s been several comments on the Star Fleet Games board to the tune of ‘I like the Vassal module better than the Cyberboard module, but it takes too long to load.’ And I couldn’t blame them. It was just way out of hand.

If you want, I can provide you with a module that’s great for testing counter loading… ;) And there’s a good number of prototypes running around.