Autospawn starting pieces from external output

Feature request:

The ability to spawn a starting force to a map using external input to Place Marker.

Context/background:

I’m the main dev for the Star Wars: Armada module, which replicates the miniatures board game by Fantasy Flight Games.

vassalengine.org/wiki/Module … rs:_Armada

The module was created in 2015, based on the existing Star Wars: X-Wing Miniatures Game module (the modules still share some similarities).

vassalengine.org/wiki/Module … tures_Game

For both games, a fleet of ships (for Armada capital ships and fighter squadrons, for X-wing individual starfighters) is built using a web-based fleet builder.

For example:

armadawarlords.hivelabs.solutions/ (I maintain this)
armada.ryankingston.com/ (another Armada builder)

raithos.github.io/ (for X-wing)

For every game, both players (or more if there is a multi-sided game) need to spawn a starting force that’s virtually unique (there are many possible combos of units and upgrades) every time. Many pieces are required for each side, so dragging them over from the pieces window is doable but tedious.

For Armada, we’ve solved this in two ways:

  1. There is a right-click menu/sub-menu system based on prototypes that lets you quick spawn pieces. It’s grown a bit clunky over the years as more content is added to the game, but it works reasonably well. It’s not a perfect fix, more of a workaround, really.

  2. By posting text output from a builder into a Discord PM or chat (on the Vassal Armada server) with prefix ‘vassal!’, a script is triggered, which interprets the output and generates a .vlog file that can be used for setup. This works exceptionally well. However, it requires the script to be maintained alongside the module, with various delays and errors arising.

X-wing solved this by using custom Java classes to add functionality to the module, giving the players import options from popular builders. Both as “XWS” format and “URL” format. I’ve included an example of input data here:

{“description”:"",“faction”:“scumandvillainy”,“name”:“I6 spam v3”,“pilots”:[{“id”:“fennrau”,“name”:“fennrau”,“points”:71,“ship”:“fangfighter”,“upgrades”:{“talent”:[“fearless”]}},{“id”:“dengar”,“name”:“dengar”,“points”:65,“ship”:“jumpmaster5000”,“upgrades”:{“talent”:[“marksmanship”],“cannon”:[“autoblasters”],“gunner”:[“greedo”],“illicit”:[“contrabandcybernetics”],“title”:[“punishingone”]}},{“id”:“hansolo”,“name”:“hansolo”,“points”:64,“ship”:“customizedyt1300lightfreighter”,“upgrades”:{“talent”:[“trickshot”],“crew”:[“000”],“gunner”:[“bt1”],“illicit”:[“contrabandcybernetics”],“title”:[“landosmillenniumfalcon”]}}],“points”:200,“vendor”:{“yasb”:{“builder”:“Yet Another Squad Builder 2.0”,“builder_url”:“https://raithos.github.io/",“link”:“https://raithos.github.io/?f=Scum%20and%20Villainy&d=v8ZsZ200Z97X121WY115X125WW232WW83W92WW159WY89X133WW63WW79W92WW152&sn=I6%20spam%20v3&obs=coreasteroid5,yt2400debris2,core2asteroid5”}},“version”:“2.0.0”,“obstacles”:[“coreasteroid5”,“yt2400debris2”,"core2asteroid5”]}

Summary:

Would it be possible to add something similar to the Vassal module? A function to allow you to paste external input from a builder, then have Vassal check this against a table built into the module, and then spawn the relevant pieces using Place Marker?