Strategic Primer year-end summary, post-hiatus plans, and assistive programs development report

This is the last week of the liturgical year, and the first week back from the blog hiatus, so this week we’re looking back over the past year on this blog and the subjects it covers and forward to what the schedule will be like in the future. Monday covered the Shine Cycle; today we’ll look at posts related to Strategic Primer, my plans for this department post-hiatus, and a report on development since the last status update.


First, a look back over the year on the blog.


I intended to write “what’s-happened-lately” roundup posts, which I labeled “NEWS”, every three months. I didn’t quite keep that schedule, but I did manage a few such posts, including in January, May, and August.

Turn Summary

We finally finished the twelfth turn of the current campaign, which I summarized.


In the first half of the year or so, I wrote posts documenting various programs in the suite of “assistive programs”, including the exploration program, subset-checking tool, and the map syntax and validity checker.

Development Reports

Until the hiatus, I managed a development report almost every month. I won’t link to all of them here (each, including September’s, links to the previous), but I’ll go over some of the highlights again. I’ll talk about development since September in another section.

Every month, or nearly, I worked to fix warnings—that had crept in while I wasn’t paying attention, or that a newly-installed static analysis tool complained about.

I started working on the new map API, and made some progress, but it’s still nowhere near ready to use.

I rewrote much of the programs modeling hunting, fishing, and gathering, so they reported only suitable items (aquatic animals only, and only aquatic animals, while fishing) and looked farther afield than just one tile at a time. I also added or improved subprograms for modeling trapping and herding.

I made the worker-management program, which players can use to generate a first draft of a strategy, “visually warn” if a unit’s orders contain “TODO” or “FIXME”. I also made it group units by their “kind”, as the strategy it exports does, and allow the user to set orders for all units of the same “kind” at once.

I fixed the “Display …” menu in the map viewer to actually work, and added “Alland “None” entries to select and deselect all.

I made the worker stat-generating program support loading workers’ names from file instead of having to enter them one by one.

I fixed zooming in using the keyboard. A user has requested a feature to make zooming center on the mouse cursor, which I intend to work on sometime next year.

I added a simple distance calculator to the “query” program.

A new program can be used to update players’ maps with local knowledge from any allied or vassal towns or villages.

In the exploration programs, when an explorer passes a unit, town, village, or fortress belonging to another player, it now prints a notification of that fact so I can let that player know.

Lastly, I’ve spent a fair amount of effort porting the suite to Ceylon—but not any of the main programs yet, because I started with the sections of the code least entwined with the rest.


I described how Strategic Primer models, and asked for player (and other) suggestions and comment on how Strategic Primer should model, various systems, including scientific research, combat, and mining. I also collected ideas for any future campaigns, and again asked for reader feedback.

Back in January, I reviewed 2013 to assess how I did in light of the goals I had set, and set new goals for this year … which I’ll look at in December at the end of the civil year.

Lastly, in April I summarized how strategy formats have changed over the history of the game.

Post-Hiatus Plans

Now that I’ve had some time to consider, here is my plan for the Strategic Primer side of the blog going forward. I now plan to write a development report and at least one other Strategic Primer-related post each month. And, as with the Shine Cycle posts, they may come on a day other than Wednesday.

I also plan to move Strategic Primer posts to their own separate blog. When that happens, other than one last “for further information, follow such-and-such-address” post, Strategic Primer will no longer appear inn this space, and I’ll change the Pages to point there too (though I don’t plan to remove them, since I want to avoid breaking links). That blog will start by running revised versions of any old posts that are still relevant.

Recent and Planned Development

As it’s been more than a month since the last assistive programs development report, it’s past time for an update and a new release. You can, as usual, download the new version from Bitbucket, and see the history in more detail in the Mercurial repository.


I’ve been maintaining two lines of development in parallel, one with and one (which I use to create the files I upload to the downloads area) without any code that’s been ported to Ceylon removed.

I changed the map rendering code to use a ‘singleton’ cache of which image files aren’t present, so it doesn’t repeatedly warn about a single file.

In the worker-management tool, I added the ability to dismiss workers; they will be recorded in the generated strategy if you don’t save the map file, close the program, and reopen it later.

I finally fixed the Window menu, by using a (3-clause BSD-licensed) open-source implementation.

The Display menu is now sorted.

I removed the main() methods from most driver classes, so they have to be accessed through controller.drivers.AppStarter.

I found and added images for most if not all of the fixtures that were missing them, including centaurs, fairies, minotaurs, ogres, trolls, and meadows.

Lastly, I added an ‘About’ window that can be opened from any app’s File menu that gives credit to everyone whose code or art I use in the suite.

(I also optimized the PNGs again, producing a 100-KB or so reduction in size, but that didn’t make it into the release.)


The top items in the Pivotal Tracker backlog are currently a couple of fairly-urgent bugs (one that I am nearly certain only I have or am likely to run into, and the other that is merely an annoyance) and several features I want to include.

The bugs are that the exploration program fairly often puts a duplicate copy of the player’s headquarters fortress into the player’s known-world map, and that when the user reloads the tree in the worker-management app the tree collapses.

The features are as follows:

  • 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”.
  • Apps that allow the user to create units or other fixtures should allow him or her to either specify an ID number or pre-seed the cache of used ID numbers, to avoid (for example) giving a new unit an ID number that is used by a fixture that player doesn’t know about.
  • In the worker-management app, the user should be able to use the “report” tree to find an item in the map viewer.
  • As a user requested, when zooming in using the mouse scroll wheel, the zoom should center on the mouse cursor.
  • The worker stat generator should apply racial stat adjustments.

The list I’ve been separately maintaining in these development reports also mostly still applies, though I’ve mostly moved them to the “icebox” in Tracker to show I don’t have definite ideas about how to go about them and plans to do so as soon as may be:

  • 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 new map API. There are a few tests, but first I need to write the XML I/O layer.
  • 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.

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.

My next development report—the next release—will likely be combined with a civil-calendar-year-end summary post. But until then, do you have any thoughts?


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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s