The VASSAL Team is happy to announce VASSAL 3.8.0-beta2, which is a preview release.
IMPORTANT
Starting with 3.7.25, Vassal requires Java 17 or newer. If you are using one of the MacOS or Windows packages, Java is bundled with Vassal and this will not affect you. If you are using Linux or another OS, please upgrade Java to at least Java 17.
Modules saved in 3.8 are not openable by earlier versions of Vassal. We recommend keeping a backup copy of any pre-3.8 modules you plan to modify in 3.8 until you’ve verified that everything works to your satisfaction.
Things may be broken which worked previously. If you find a new bug, please report it.
14978: Allow cannotMove to be set as a DynamicProperty
14556: Support Multi-Location commands within Sub-Menus
Bug fixes
15054: Fix Truncated text label on hidden pieces
15049: Make Zone use full qualified path for property container
Improvements
15060: Stop writing obfuscated data in hex
15042: Update MacOS launch script to allow more options
14583: MoveCameraButton now uses preferred center instead of viewport center
Other changes
15068: Upgraded spotbugs-maven-plugin to 4.10.4.1
15065: Switched from obsolote mockito-inline to mockito-core
15063: Upgraded slf4j-api to 2.0.19
15062: Upgraded byte-buddy to 1.18.13
15050: Upgraded maven-surefire-plugin to 3.6.0
See the Release Notes for descriptions of the changes in 3.8.
Minimum Requirements
VASSAL 3.8 requires Java 17 or later.
The Windows and MacOS packages have an appropriate version of Java bundled with them, so there is no need to install Java separately on those operating systems. On Linux, use your package manager to install Java 17 or later.
If you are using MacOS 14, please ensure you are using 14.4 or later, to avoid a bug in MacOS which prevents Vassal from starting.
Help us test
Please report bugs in the Technical Support & Bugs category at the VASSAL forum.
The property of pieces cannotMove which dictates whether a piece can be moved by the user, can now be manipulated through logic in pieces. For example, if a piece has a Dynamic Property trait that defines the property cannotMove, as well as key commands to set the value to either true or false, then that piece can be made un-moveable at times, and moveable at other times.
This allows a module designer to inhibit movement of certain pieces under certain conditions, as defined by the game implemented. For example, a module may inhibit movement of artillery pieces if that artillery piece has already fired this turn.
Note that the trait Does not stack also defines the property cannotMove.
15042: Update MacOS launch script to allow more options
The script to launch Vassal from the command line, /Applications/VASSAL.app/Contents/MacOS/VASSAL.sh on MacOS, now accepts more options. This allows a user to for example specify additional property values to the Java Virtual Machine, or to by-pass the Module Manager window. More details about the available options are shown with
These options are only available when a (power-) user executes the above script directly in a Terminal.
14583: MoveCameraButton now uses preferred center instead of viewport center
When a user presses the Move Camera Button, it will try to center on the next matching piece which is closest to (but not at) the last preferred view centre of the map. That last preferred view centre is set when the user clicks the map, or the view is otherwise centred on some location. This will make it more likely that the button will cycle through all missing pieces. Note that there’s no guarantee that it will cycle through all matching pieces.
15049: Make Zone use full qualified path for property container
A Global Property defined in a Zone, is stored with its full Map, Board, Zone path, and now also communicated as such in an on-line game. That means, that multiple boards with the same zones may have their own independent properties. This is especially useful of the Map allows only a single Board, and the Boards defines alternatives that have the same zones.