Strategic Primer assistive programs development report and roadmap (#36)

The month since my last report on the development of the suite of assistive programs for players and Judges of Strategic Primer has seen some major changes, starting with a move from BitBucket to GitHub.

While the history prior to the move, and the previously-released binaries, are still available at BitBucket, the source code now lives at GitHub, and snapshots—regenerated for each versioned ‘release’ I made on BitBucket—are available for download there. On the repository’s main page you can also see a link to a continuous-integration server for the project.

This snapshot is version 0.4.9000; I plan to bump the version number to 0.5 and go to 0.5.1, 0.5.2, etc., from there when I get to the point in the development that warrants such a shift.

I also added a license to the code; it is now released under the GNU General Public License version 3.


Here are the notable changes from the previous snapshot to this one:

  • Added images for all terrain types; these shouldn’t be seen or even called for, since generated images should be in the cache first, but a bug was somehow bypassing that.
  • Added support for more kinds of stone than previously allowed.
  • Made the jump-to-end-of-column keyboard shortcut (#) work even if a different keyboard layout means it isn’t shift-3.
  • Changed the the report generator to explicitly skip oases. Hills and sandbars were already explicitly skipped. If you would like the report generator to comment on any of these, let me know.
  • Improved the clickable-report-node feature so that if a node in the report tree has no associated point but all of its children share one, clicking the node takes you to that point.
  • Removed the window-menu library from the source tree and changed the build to use it from a system location. (The code is still copied into the binary releases.)
  • Added a copy method to most model objects (not maps, but everything that maps contain), which is like clone but takes a Boolean parameter to allow the copy to have ‘sensitive’ information (such as a worker’s stats) removed.
  • Made exploration UIs copy fixtures into subordinate maps, rather than merely adding the same objects from the master maps.
  • Made exploration UIs remove caches from the main map after adding them to subordinate maps. I thought I’d done this months ago.
  • I found a ‘universal’ ‘application stub’ for the Mac builds that may work better; if that’s your platform, please let me know how it works.
  • Created (using a public-domain image) and added an icon for the Mac and Windows binaries.
  • Prevented the base tile terrain from ever being added to the Display menu.
  • Started work to allow fortresses to contain more than units.
  • Finally fixed the months-old bug that made some workers not get credited with experience when adding hours to all workers in a unit in multiple maps at once. (For full details, see comment on commit 1e5ed31.

I’ve also started maintaining a parallel branch of development using Java 8 features, but I don’t plan to start releasing from that branch until I know that my primary users all have that version of Java.


The Pivotal Tracker backlog is currently fairly close to what I’m hoping to get done in the near future.

  • Add support for ‘implements’ (simple equipment) and ‘resource piles’ to the map format.
  • Change the way unit orders are represented so they can be set per-turn
  • Add support for unit results to the map format
  • Make subset checking treat location as another property, instead of treating a fixture that moved as a ‘new’ fixture in its location in the subordinate map.
  • Fix the performance maybe-issues: that I use Swing APIs that “best practice” (according to my reading) recommends not using for loading images, drawing images, and limiting the drawing area
  • Make the GUI execute some operations in parallel to the GUI-update thread
  • Anywhere the GUI allows the user to cause a fixture to be created, allow the user to enter an ID #.
  • Add a way for the user to preseed the ID-numbers-in-use cache with a map without actually opening that map. (That is, without leaving the map open—I don’t intend to reimplement, or shell out to call, grep and sed!)
  • Convert the “Display …” menu to a panel containing checkboxes that the user can drag to set a custom display-sort order to control what appears on “top”.
  • Make the report generator, or another app, give distance to fixtures from the player’s HQ.
  • As a user requested, when zooming in using the mouse scroll wheel, the zoom should center on the mouse cursor. (The ‘center’ menu item and hotkey help with this, but it’s still a good idea.)
  • The worker stat generator should apply racial stat adjustments.
  • Make the apps behave (more) like native apps (following human-interface guidelines) on the major platforms, starting with Mac OS X. The Window menu is a good start, and finally works, but there’s more to do. I need to enumerate what more needs to be done …
  • Changesets need to become a priority, because maps are no longer immutable from the players’ perspective. First, I need a list of operations that need to be supported.
  • The turn-running helper apps should be able to tell me such facts as how much meat any given animal produces, how much grain should be produced in a harvest, etc.
  • Related to that, “resource management,” eventually including modeling resource production and accounting in the map and the helper apps.
  • Unit (and other) “portraits”—larger images for individual units, towns, and the like.
  • Something like the mine-model-generation program for stone deposits. However, I currently make do with the existing model, just with different proportions for each level.

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.


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.