In the weeks since the last release of the suite of assistive programs for players and Judges of Strategic Primer, I’ve added a fair number of features to the turn-running app and made a few other changes, but things have solidified enough that I’m reasonably comfortable making this “the release” rather than another pre-release. You can download the new version 0.4.9018, or the final 0.4.9017 point release, from GitHub as usual, or read a summary of the changes in this release below.
Bug Fixes
There are three changes in 0.4.9017.4, which are of course also included in 0.4.9018 as well:
- First, a “security” fix. The map-reading code (if I implemented this fix properly) now no longer supports “external entities” in the XML in map files; this could have been exploited, with effects I’m not clear on, if an attacker convinced you to open a specially-crafted malicious XML file with one of the apps in this suite.
- Second, in report generators, in an internal class, a method to “clone” itself created an instance with empty state instead of its current state. I don’t think that method is ever actually called, but if it is, that would have caused a report generator to give incorrect results.
- Finally, the sample map included with the apps triggered some warnings in the map-reading code; it has been fixed to no longer trigger those warnings.
There’s a couple of other fixes in 0.4.9018 for bugs that were introduced in 0.4.9018 release candidates:
- In the worker management app, “kind” nodes are now properly highlighted when a unit with that “kind” is highlighted.
- Also in the worker management app, the new feature to sort unit members now works when operating on more than one map at once.
Performance Fixes
Version 0.4.9018 includes some changes to reduce the size of any of the files you have to download to get the release or to improve the performance of apps in the release:
- A number of unused icons were removed.
- The main app icon, which is the single largest file in the source and the single largest file other than one third-party library once the code has been built, was cropped slightly.
- I improved a data structure used by the report generator and tabular report generator, so the tabular report generator now runs something like an order of magnitude faster when run on the whole main-world map.
New and Improved Features
All of the new features since the last release candidate, except one, are in the turn-running command-line app.
The one feature outside the turn-running app is in the worker-management app, which now optionally (this is controlled by a command-line option) allows editing as well as viewing of results.
The turn-running app gained a few new applets to ease the development of results for a turn:
- A woodcutting applet
- A food-preservation applet
- Basic farming and mining applets (which don’t do any calculations or anything, but allow the addition directly to the map of whatever resources are created in those results)
- A utility applet to allow running multiple applets on the same unit (because any individual applet will overwrite any previous results)
And several existing applets were improved:
- The exploration (i.e. unit-movement) applet now asks if a unit should take provisions, and if so what and how much, when the unit leaves a fortress. I intend for the food-consumption applet to eventually only support consuming food in the same place as the workers.
- The herding applet now skips animals that are not domesticated or tame, and allows the user to choose to skip some (previously trying to skip one would abort the applet)
- The herding applet now also allows the calculation to account for more labor than just the workers in the unit in question.
- The hunting and trapping applets now support capturing animals, adding captured animals to a unit of the player’s choice.
Major Features from Release Candidates
Here’s some highlights of the most important new features and other changes since 0.4.9017:
- The way apps in the suite are invoked on the command line has completely changed. Formerly, you used options to indicate which app(s) you wanted, possibly more than one in a single session, interspersed with filenames, non-invocation options, and other arguments. Now, you must specify a single “subcommand” as the first non-option argument.
- “Immortal animals” are now represented as immortals, even if they were represented as animals in the XML file, and are always written out with their own unique XML tags.
- Support for reading version-1 maps has been removed.
- There is now a turn-running command-line app, and most results-generation features of the “query” app have been moved there instead.
- The “report tree” feature of the worker-management app has been removed.
- Tiles can be bookmarked in the map viewer
- The worker-management app gained worker notes and unit member sorting features
- The map format and map viewer now support roads
- All command-line apps now support “quit” at any yes-or-no question.
- The way rivers are drawn in the map viewer is significantly improved; however, the way they are drawn in the list of fixtures is currently broken.
Roadmap
On my roadmap (the Pivotal Tracker project is sadly out of date, but between that and the GitHub issues page you can get some sense of what I’d like to work on):
- Making a turn-running GUI (the new CLI has been a great help, but using it is tedious in ways that a GUI can significantly speed up)
- Reworking unit organization, so equipment can be associated with individual workers and units can be “grouped” together
- Adding some way to record players’ “standing orders” and the like in their map files.
If you have any features you’d like me to add, or you run into any problems with the software, please let me know, perhaps using the issue tracker or contacting me directly.