Strategic Primer assistive programs release and development report (0.4.9017-rc4)

In the three weeks since the last release candidate of the suite of assistive programs for players and Judges of Strategic Primer, the code-base has seen much less change, and more minor changes, than in the last few months, so while I’ve “cut” a new release candidate today, I expect this will be the last before 0.4.9017. There were no “pure bug fixes” in the last three weeks (that I thought important enough to include in a “point release”), so 0.4.9016.3 remains the “latest stable.” You can download this new release candidate from GitHub as usual, or read a summary of the changes since the last release candidate below.

Headline Features

There weren’t many changes that were all that major, but the following are the most notable.

  • A previous release candidate supposedly switched to using a more recent version of the “Java application stub” in the Mac application bundle, but in fact it was merely downloading the old version to a name implying it was the new one. I fixed this, and changed the packaging code so I can’t make this mistake again with any of the third-party libraries I use.
  • The repository now includes a (very small and simple) sample map for testing various apps on; it was supposed to be in the full-source tarball, but I forgot to add a mention of it to the script that builds that. It will be in the tarball for 0.4.9017.
  • In the map viewer, the “terrain changing menu” now includes items to toggle the presence of mountains or rivers (one item per direction) on the tile.
  • I added a new command-line app to generate a new map from a bitmap (i.e. raster) image. The fewer colors in the image, the better it works; it divides the image into tiles (you specify the tile size in pixels as a parameter), finds the dominant color of each tile, and for each color it doesn’t know about already asks you what terrain type that should be.
  • The map format now supports an “elsewhere” section, represented as “the invalid location” in apps’ data model. Previously, when players sent units out on multi-turn expeditions, I left them at HQ in the players’ known-world maps until they returned, so that the maps would at least still contain the units; now I can just move them to “elsewhere.”
  • The “TODO fixer” app now fixes cases where a version-2 map includes version-1-only tile types.
  • The packaging code now downloads all its dependencies over HTTPS, instead of all but one.
  • The “CLI helper” code (which every CLI app uses) is now significantly more robust in the face of “end-of-file” conditions. In particular, if you were to cause an EOF (on Linux or a Mac, by pressing Control-D) when it asked you a yes-or-no question, it would previously go into an infinite loop, but it now aborts and passes “null” up to its callers to decide what to do.
  • While the current campaign’s main map doesn’t include swamp terrain, the format and the map viewer now support that terrain type in version-2 maps.
  • In the worker management app, “XXX” is now seen as synonymous with “TODO”; any unit whose orders contain “XXX” will be colored yellow, and will be included in the “next problem” cycle.
  • In the resource-adding GUI, the “Enter on any field submits” feature didn’t actually work (ever) for the fields that are “spinners”; I just didn’t notice because it wrote the error message on the “log label” in black text, despite it being a black background at the time. It now does work as intended.

Other Changes

  • I did a bit of refactoring to reduce the need for “client code” to declare explicit dependencies on Java base-platform modules
  • I replaced one of my “helper methods” with an exact-equivalent method from the standard library throughout the codebase.
  • I continued to refactor where I could to convert methods inside methods to class methods, condense unnecessarily verbose code, and so on.
  • The helper that generates random parameters for test methods now supports arbitrary-precision decimals and arbitrary-size integers, as well as the quasi-primitives provided by the standard library.
  • In the report generator, the sub-report on fortresses erroneously listed its sub-sub-report on units in the fortress as “units on the tile.” This header is now fixed.
  • In the exploration CLI, I refactored the “automation config,” which controls when a “go-to-tile” command should be aborted before reaching its destination, to be more concise, readable, and (more importantly) easily extensible with future additional conditions.


At present I’m hoping to not spend much time on further development for a good while; there are other things I should be spending time on! However, in such time as I do spend, here are some of the development areas I expect to focus on:

  • Reworking unit organization, so equipment can be associated with individual workers.
  • Adding a “worker notes” feature.
  • Adding some way to record players’ “standing orders” and the like in their map files.

I have a whole host of other “planned” features, which are stored in Pivotal Tracker, but the order is by no means a reliable indicator of when I’ll get to them; others are recorded as issues in GitHub.

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.

One thought on “Strategic Primer assistive programs release and development report (0.4.9017-rc4)

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.