Vassal 3.6.0-beta6 Released

VASSAL 3.6.0-beta6 Released

The VASSAL Team is happy to announce VASSAL 3.6.0-beta6, which is a preview release.

IMPORTANT

  • NEW! 64-bit ARM packages: There are now MacOS and Windows pacakges for 64-bit ARM processors. If you have a Mac with an Apple Silicon CPU (which is a 64-bit ARM processor), we recommend using the 64-bit ARM build.
  • Code deprecated more than a year ago has been removed. Modules using that code MUST be updated if they are to work with 3.6.
  • Things may be broken which worked previously. If you find a new bug, please report it.
  • Modules saved in 3.6 are not openable by earlier versions of VASSAL. We recommend keeping a backup copy of any pre-3.6 modules you plan to modify in 3.6 until you’ve verified that everything works to your satisfaction.

Download

Linux
MacOS (64-bit ARM)
MacOS (64-bit x86)
Windows (64-bit ARM)
Windows (64-bit x86)
Windows (32-bit x86)
Other

Changes since 3.6.0-beta5

New features

  • 10736: ‘Deal cards out’ to other players
  • 10728: Allow ‘Prompt’ Dice Button values to be locked by designer
  • 10727: Module Debug Window
  • 10719: Deck Refresher
  • 10717: Deck access - allow access to decks to be restricted by player
  • 10682: Move Camera Button
  • 10674: Startup Global Key Commands always fire in order, can’t be undone, and can be configured to, e.g., “once per game”
  • 10649: Deck can start face-up or face-down when using right-click menu setting
  • 10628: Autopeek Rollover
  • 9391: Beanshell can now access $$ variables in Report Formats

Bug fixes

  • 10734: No refresh allowed during replay
  • 10718: NPE due to dropTargetSelector being unset
  • 10713: Escape errorLog path when making link URL for connection failed page in BugDialog
  • 10711: When rotating a mat, jointly rotating cargo should prefer to stay with current mat
  • 10703: Correct inconsistency in use of GetConfigureBoard
  • 10702: When inventory grouping specifies properties that aren’t internally strings, don’t balk
  • 10683: Fix bug in DiceButton ‘Keep Dice’ option
  • 10679: Place Marker, Send-to-Location, and Translate traits didn’t always repaint maps
  • 10678: Undo of movement will no longer deny lone stackable pieces their own stack
  • 10671: Calculate Hex Range correctly, regardless of hex shape
  • 10663: Fix occasional draw-side exceptions during loading game and saving screenshots
  • 10660: Report translated name for Symbolic Die Faces
  • 10659: Sanitize temporary file names a bit earlier
  • 10658: Fix NPE if try to open translations but the buildable doesn’t exist
  • 10654: Fixed corner-case NPE when closing a game
  • 10647: Private Maps visible to non-owning players will correctly display Mouseover text
  • 10639: Fix exception when canceling edit of a component that has been elsewhere moved or deleted
  • 10638: Fixed NPE if pasting a cut component that was then deleted before pasting
  • 10635: Trigger Action traits with “loop until” and “loop while” conditions can properly access piece properties in expression builder
  • 10632: Fix ArrayIndexOutOfBoundsException in Embellishment when layer value is out of range
  • 10631: Clip pieces to their bounds and set rendering hints for drag image
  • 10630: Correctly check if there are sides with blank passwords for password matching
  • 10629: String Array Configurer bounds protection
  • 10623: Fix NPE joining chat room when socket drops early
  • 10622: Fix NPE when MapShader temporarily points to blank or missing filename
  • 10621: Protect against changing to Image style while Image name is still blank
  • 10619: Eliminate Command+A key conflict in Editor on MacOS
  • 10618: ToolbarMenus that are submenus of other ToolbarMenus display their icons properly

Other improvements

  • 10731: Add description fields to most important editor components
  • 10730: Improve Game Piece Palette doc per forum suggestion (AsciiDoc file only)
  • 10701: Zone defining - when dragging a square to define initial zone, dragging at edge of screen scrolls
  • 10700: Improved bug dialog text
  • 10699: Repositioning Stacks/Decks optionally draws ghosted images of other stacks/decks
  • 10696: Global Key Commands “Within a Deck, select Fixed number of pieces” field now supports expressions
  • 10691: Mouseover Stack Viewer - Unstatic a naughty field and add ability to count face down cards in a deck
  • 10686: Decks - fill out the rest of the commands with hotkeys and report formats
  • 10681: Better documented pieceName vs PieceName
  • 10676: Upgrade to Java 17.0.1+12 for Windows, Mac packages
  • 10673: Added Game Refresher documentation
  • 10672: Multiplayer Server controls have improved feedback / UX
  • 10667: Private Message windows no longer prompt to ignore every time you close them; incoming private messages do not grab focus
  • 10652: Zone Editor shows coordinates of vertices while editing
  • 10641: When Editor changes a prototype, clear the prototype cache and all PieceSlot caches
  • 10633: Remove doubled images from Ghost Bug Pref
  • 10650: Show X,Y in Configurer when repositioning At Start Stack
  • 10648: Private chat windows will no longer steal focus
  • 10643: Show saved game mismatch warnings (e.g., loading wrong version) when loading from Wizard
  • 10636: Warn when Global Property has a blank name (which causes NPE on game load)
  • 10626: Different types of Global Key Commands can be cut and pasted
  • 10610: More robust configurer for PredefinedSetup
  • 10609: Trigger Action - improved trait summary
  • 9596: Pieces dragged off the palette using the palette scale factor instead of always full size

Changes since 3.6.0-beta4

Bug fixes

  • 10640: Tidier right arrow symbol in default move reports
  • 10620: Fix NPE EditPropertiesAction.windowClosed()
  • 10616: Mouseover Stack Viewer was failing to launch in certain situations
  • 10615: Stack NPE in Mat Movement code

Changes since 3.6.0-beta3

New features

  • 10584: Map “Mark Unmoved” button now accepts a hotkey and a report format
  • 10582: Basic Name trait - facilitates creating pieces entirely in prototype (alternative way to fill BasicName property)
  • 10576: Send-to-Location new options for pieces-selected-by-properties: cycle and nearest
  • 10558: Added Current Mat GKC FastMatch option
  • 10552: CounterDetailViewer - can combine layer filters with property match expression
  • 10551: Action Button option to open right-click context menu
  • 10509: Add $numericTotal$ and $result#$ options to standard Dice Button report format
  • 10505: Enable Offset options to work with the Grid option in SendToLocation

Bug fixes

  • 10607: P2P address book entries with spaces in address cause StringIndexOutOfBoundsException
  • 10604: Match blank passwords less eagerly
  • 10603: Action Buttons should not respond to Shift+Click, Ctrl+Click, Alt+Click, Cmd+Click
  • 10602: Don’t unselect piece about to get context menu with Ctrl+RightClick
  • 10601: Flares weren’t responding to Cmd key on MacOS
  • 10599: map can be null during GameRefresher
  • 10596: Protect CounterDetailViewer from designers who set the drawing scale to 0.0
  • 10595: Fix crash ending logfiles- beginningState shouldn’t be allowed to be non-null when outputfile is null
  • 10594: Fix crash when copying Toolbar Menu to a newly created map
  • 10592: Corner case boardpicker exception with multiple boards being moved around
  • 10591: Protect from GKCs that get sent when no game ever started
  • 10589: Fix Mat send-to-location bug (which created problems in Undo & multiplayer)
  • 10585: Movement Trail “initial visibility” and bounding box caching bugs
  • 10572: Fix Drag Threshold preference to work correctly
  • 10563: Trait editor Paste button is now always enabled
  • 10555: Fix mat save/load to reconnect mats and cargo
  • 10504: Text label shape, bounding box doesn’t resepect rotated labels
  • 8949: IllegalArgumentException in GameState.getRestorePiecesCommand() due to bad compartor

Other improvements

  • 10597: Selection Highlighter expressions now found by search
  • 10593: Add description to Prototype Definition
  • 10590: Better ConfigureTree summary on PieceSlot containing a BasicName-using piece
  • 10587: Description field & better auto-summary for Does Not Stack
  • 10586: Better defaults for Send To Location offsets
  • 10578: MatCargo now provides OldMatOffsetX and OldMatOffsetY properties
  • 10569: Better trait one-line summaries in editor; Folder summary includes description
  • 10565: While double-clicking to open component in Editor, holding Alt, Shift, and/or Ctrl affects the location the new window opens
  • 10557: Added MatCargo to manually attach/detach from mats
  • 10547: Bring fastmatch $$ variable handling into line with standard Global Key Command match expression handling
  • 10543: Initialise OldMat related properties in a Placed marker
  • 10519: Improve Mat Movement
  • 10510: More robust Java version check for Linux

Changes since 3.6.0-beta2

New features

  • 10486: Better obscurable option for insetting
  • 10484: Mats have more deselection options; double-clicking delesects cargo
  • 10468: Refresh Counters support for Mats and Cargo
  • 10454: Game Piece Palette allows setting of default width for “docked” Game Piece Palette
  • 10412: Double the max heap for modules which run out of memory during loading
  • 10394: Add a Key Command to Can Rotate trait to rotate directly to a facing specified by an expression

Bug fixes

  • 10476: Editor: Inserting text into middle of Key Command doesn’t work
  • 10474: Movement traits need to update cargo’s mat after movement before applying apply-on-move keystroke
  • 10405: Log replay of delete command behaves differently after load of sebsequent log file
  • 10402: NPE when trying to create new P2P Network
  • 10400: Custom preferences in Global Options incorrectly use property name, not description
  • 10404: Catch FileNotFoundException when reading prefs files
  • 10399: ThrowableUtils.throwAncestor() throws wrong object; throwMe() uses wrong constructor

Other improvements

  • 10466: Reference manual missing description of restrict counters to Deck option
  • 10446: Removed more items deprecated for over a year
  • 10445: Improved browser launch support
  • 10432: Store the tile cache in %LOCALAPPDATA% instead of %APPDATA% on Windows
  • 10430: Upgrade to Java 17 for Windows, Mac packages

Changes since 3.6.0-beta1

Bug fixes

  • 10390: NPE in GameModule.getProperty() after deleting the Map from the owning Map widget
  • 10387: ‘Centre on Opponents Moves’ functionality should ignore movement by Invisible units
  • 10386: Audit Trail reporting is not reporting trait or piece information for Return to Deck trait when invalid Deck specified
  • 10381: Replaying a log step can cause Deck to become corrupted
  • 10375: NPE in EnumeratedPropertyPrompt.getNewValue()
  • 10371: Reset the Zone Editor title to match the Zone being edited
  • 10359: ClassCastException: DeckGlobalCommand cannot be cast to Auditable
  • 10357: Return To Deck Deck name can be lost when pre 3.6 module is edited using 3.6
  • 10351: Checkbox preference default value is ignored
  • 10341: Symbolic Dice Button tooltip is overwritten by description text
  • 10226: Force Game Piece Image names to be valid file names ending in .png
  • 10095: Definition of Player Sides - Retire/Switch Button image not showing in editor

Other improvements

  • 10392: HTTP requests for server status should follow redirects
  • 10383: Update all site URLs for new site and HTTPS
  • 10337: Bring Reference Manual up to date

Changes since 3.5.8

New features

  • 10276: Expose property if we’re currently drawing Counter Detail Viewer
  • 10273: Mat Cargo can be set to detect mats way from their exact center
  • 10248: Invisible trait - Option to disable auto-report of moves
  • 10075: Scaling factors for Layers and Non-Rectangular
  • 10066: Mats & Cargo - Cargo pieces stay attached to Mat piece when moving.
  • 10034: Added option to Mass Piece Loader to not create empty levels in layers when there is no matching image
  • 10021: Added sub-folders to group components under Module, Maps, Decks, At-Start Stacks, Prototypes and Global Properties folders
  • 10002: Add Hotkeys to hide and show map windows. Existing show/hide hotkey field is now always visible. Allow changes to hide/show Map button settings without needing Editor restart
  • 10001: Inventory window allows a hotkey for Refresh
  • 9998: Editor now has Drag and Drop support
  • 9997: Can duplicate and insert components in Editor, not just add to bottom
  • 9988: CountStack() added to beanshell to count pieces in current Stack
  • 9987: ReportState checkbox overrides Global Key Command suppression of individual reports
  • 9979: Add Deck Sort Key Command component to allow sorting of cards in a Deck by properties via menu or hotkey. Add Deck Send Key Command component to provide additional commands to send contents of one Deck to another via menu or hotkey.
  • 9973: Deck supports configurable strings for Draw Multiple, Draw Specific, Face Up, Face Down
  • 9972: Ability to specify Return-to-Deck target as an expression
  • 9917: Global Options can be configured to let toolbar items on closed windows accept global hotkeys
  • 9912: Add Global property MapName_isVisible for each Map to allow checking if Map is currently open
  • 9901: Preference to reverse left-to-right order counters are shown in Mouseover Stack Viewer
  • 9864: Improved translation features (Global Translatable Message component, Translatable Message trait, exposing current language/locale as property)
  • 9549: Default UI font size can be overridden in preferences
  • 4542: Added ‘Stack Normally’ option to ‘Does Not Stack’ trait
  • 4533: Make grid center dot display independent of grid display

Bug fixes

  • 10326: Add option to disable OpenGL FBOs on Macs
  • 10301: Double max heap and retry when image tiler runs out of memory
  • 10294: Can Rotate traits no longer lose any pre-defined starting rotation when editing a Piece Slot
  • 10187: Duplicate key and menu item for Editor menu
  • 9993: DeckPosition was reporting 1 higher than the actual position
  • 9884: Fix and improve module validity checking
  • 6130: Grid Numbering dialog can appear blank when grid size is very large

Other improvements

  • 10286: Add removal/deprecation checker and remove anything deprecated a year ago
  • 10277: When editing an IrregularGrid, start the map view somewhere near the grid or its parent Zone
  • 10272: Don’t auto-name new regions a long string
  • 10259: 64-bit ARM builds for Windows and Macs; switched bundled Java to Zulu
  • 10228: Upgrade to Launch4j 3.14
  • 10041: Newly added Layer traits will now default to ‘Always active’
  • 10015: Remove ?s from checkbox preference strings
  • 10011: Add Scrollbars to Prefs Dialog when needed
  • 9999: First ‘advanced search’ on a module defaults to all boxes prechecked
  • 9992: Removed ignored ‘button tooltip’ field from Turn Tracker config
  • 9989: Less verbose window titles for sub-windows
  • 9975: Deck reports now suppressed during GKC report suppresssion
  • 9913: Increase number of default zoom levels in new Map Zoom Capability
  • 9254: Expression audit trails preference - Improve error reporting when Beanshell expressions fail. Suppress ‘Bad Data in Module’ errors generated by counters in Game Piece Palette.

See the Release Notes for descriptions of the changes in 3.6.

Minimum Requirements

VASSAL 3.6 requires Java 11 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 11 or later.

Help us test

Please report bugs in the Technical Support & Bugs category at the VASSAL forum.

Cheers,

The VASSAL Team

3 Likes

I’ve also updated the “Tour of New 3.6 Features” at VASSAL 3.6 Release Notes - Vassal

Brian

2 Likes

The undo bug for Mats is still present in this beta.

(Image shows a mat, outline green, with 5 cargo piece images scattered about while their outlines are still shown as being on the mat. This is what happens after undoing a mat move and rotate facing step.)

Can you please dropbox me a copy of your module and a saved game where I can reproduce the error?

I don’t use Dropbox after they massively inconvenienced me for months because of a trolling DMCA claim, hopefully this also works for you.

New game, I just moved one commander and a few units onto the map for you. To reproduce, drag the commander onto any “approach” grey bar on map, then do that again to another grey bar, then click undo. Undo after only one move works fine, undo after the second does not.

1 Like

Thx yes Google Drive is fine. I actually hate Dropbox I am usually just resigned to it being the thing people use :slight_smile: I will take a look.

Welp, it’s actually a bug in Movement Trails (which I can demonstrate to you by: (a) if you remove all the Mat stuff from the module and move just the commander around, it will still be broken, and (b) if you instead remove the movement trails or just start them turned off, you can do the full thing with the mats and it will all undo perfectly). Go figure. Mats were just a 6-hour red herring :grinning_face_with_smiling_eyes:

Anyway whatever-it’s-a-bug-in it’s still a bug - we’ll try to figure out how to fix.

Brian

1 Like

Ah. Actually not so much a bug in Movement Trails as … you need to move your Movement Trails traits outside of (below) the Can Rotate trait in the case of the commanders, and outside of (below) the Mat Cargo trait in the case of the other troops (the Mat Cargo performs the rotation for maintaining station with the Mat, which you have checked).

That should clear everything up.

Brian

1 Like

Apologies for the time wasted. I hope you can understand why I thought it was a mat bug - I don’t think I would have ever traced it back to movement trails on my own.

Oh absolutely. I thought it was a Mat bug too. Given the amount of collective time it took to find it, I think we probably ought to put some kind of warning if a Movement Trail is inside anything that can rotate it, because I can’t think of any use case for Movement Trail being inside a rotator.

We also ended up finding a couple of more minor doo-dads along the way in our search.

Probably a good start would be to add a big, bold warning to the documentation for Movement Trails to make sure it’s below any rotator/Mat traits.

1 Like

For sure. I mean, it’s a rookie mistake that only happened because mats are new, and it would have been obvious if the graphical glitch looked like it was in any way connected with trails, but the way it happens makes the cause quite hard to isolate without hindsight or a warning.

I’m thinking of a big bold warning when you open the module in the Editor if there are any Movement Trails inside of Rotator/Mat traits…

We’ll put it in the doco too but of course ex-post-facto additions to docs are only marginally effective.

Here’s what I’m probably going with…

The funny-but-not-haha-funny thing is… about two weeks ago I was putting the Movement Trails in Almoravid, and I spent upwards of half an hour wondering why the movement trails weren’t showing up right. SEE IF YOU CAN GUESS WHY THEY WEREN’T SHOWING UP RIGHT?

But in my case it was just the movement trails not showing up, so it was both more obvious and less of a Cause For Immediate Code Intervention. Whereas this thing where they were just quietly ruining other behaviors with no real clue as to what was doing it … yeah, needed to be fixed. SO YOU DID A SERVICE TO HUMANITY!

Brian

2 Likes

Thanks Brian.

Some good features being added :slightly_smiling_face:. Any thoughts on when 3.6 might be out of beta and launched? :blush:

We aim to release 3.6.0 by the end of the month.

2 Likes

Hi!

So far I am enjoying the 3.6 betas (on beta 6). THANK YOU for giving us RISC (ARM64) versions as the performance on Apple Silicon is smooth and super fast. Question - does the ARM64 build use Metal or an interpretative layer for Metal (like MoltenVK)?

2 Likes

I can’t say. We’re using whatever the Java 17 build we bundle is using.