Strategic Primer 2014 Review, 2015 Goals

This week, as one civil year ends and another begins, it’s time to look back and look forward. Because I did my blog retrospectives, including the one on Strategic Primer, at the end of the liturgical year, this week I’m considering 2014 in light of the goals I set a year ago and setting new ones for 2015. I began on Monday with a review of my progress on and goals for the Shine Cycle; today we’ll look at Strategic Primer, the strategy game I’ve been developing for several years now.

2014 Goals

First, let’s look at the goals I set a year ago:


The first set of goals hadd to do with the campaign I’m running, in which players send me their strategies by email (or Google Docs or some other method), and I use determine the results of their strategies and what else happens in the game-world and send that information back.

Goal: Finish at least one turn in the current campaign. Stretch goal: Finish at least three turns in the campaign.

I met the goal—we finished the twelfth turn—but we got no farther than that.

Goal: (Successfully) recruit at least one more player to join the campaign.

Failure. The one person I know who has expressed interest in the past says she has even less time to spare than before—a feeling I completely understand.

Assistive Programs Development

I’ll talk specifically about this past month’s progress farther below.

Goal: Implement, or definitively decide against, at least half (i.e. at least three) of the items on the current roadmap.

I’ve made progress on a couple (which I’ll list in a moment), but haven’t finished any of those items. The progress I have made, however:

  • While I don’t consider the apps to be properly desktop-natively-integrating MDI applications, we do have a Window menu that works now.
  • And I’ve added code to help somewhat with the tedious tasks related to running herding, food gathering, and hunting, but there’s still more to do.

Goal: Create at least one more player-useful application for the suite.

While I did implement a few features useful to players, I didn’t create any new apps.

Goal: Port the suite to Ceylon or some other less-cumbersome language and toolkit.

This is in progress, but still far from complete.


Goal: Get through (triage, digitize as needed, discard) at least six (hard-copy) pages of old advance data.

I’m fairly sure I managed this, but I’m not completely certain. As I expect to mention in the “miscellaneous” year-end/new-year goal reflection/setting post tomorrow, mid-year I decided to track my progress through piles of papers by numbered “packets” rather than individual pages. One of the packets I finished with and discarded was “almost entirely” printouts from old SP advance spreadsheets; I believe but can no longer prove that this was at least six pages.

Unlike the other goals, which I’m going to let carry over to next year too, this one I’m going to drop, because my new “packet” system covers and tracks such progress better.

Monthly Development Report

I’ve made several improvements to the assistive programs suite since the last release. You can download this week’s release 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 improved the dialog that lets the user add new units, to allow the user to specify an ID numbe for the new unit. This fixes the regular annoyance of adding a unit to an AI player, then having to go into the XML to change its ID number from a very low number already in use in the main map to something actually unique.

As part of making that work properly, I changed every place where numbers are parsed (except possibly the XML-reading code) to accept numbers with thousands separators.

In the exploration GUI, I added the ability to navigate using the arrow keys or the numeric keypad. I intend to add navigation using the numeric keypad to the map viewer very soon, but haven’t done so yet.

I fixed a bug that caused exploration programs to throw an exception and stop working if they had a unit try to visit a tile that didn’t exist (which only happens if the “master map” is a player map); they now treat such a tile as impassable, like “ocean.”

I added an icon for dragons; there are now only nine icons missing.

Lastly, as I mentioned in the Facebook group, I added support for a new tag for adventure hooks.


The top items in the Pivotal Tracker backlog are currently some performance issues, a couple of fairly-urgent bugs that I mentioned last month and still haven’t fixed.

The performance issues are that I currrently use several APIs that best practice recommends not using for loading and drawing images and limiting the drawing area, and there are places where the GUI calls time-consuming operations that could be but aren’t yet done in parallel to the GUI-update thread.

My current top-features list is mostly the same as last month:

  • 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.
  • 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. 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.

2015 Goals

I’ll set mostly the same goals for next year as I did for last year.

For the campaign:

  • Goal: Finish at least one turn in the current campaign.
  • Incremental Goal: Finish running at least three AI players’ strategies’ by April and all of them by July.
  • Stretch goal: Finish at least three turns in the campaign.
  • Stretch Goal: (Successfully) recruit at least one more player to join the campaign.

For the assistive programs’ development:

  • Goal: Implement, or definitively decide against, at least a quarter (i.e. at least three) of the items on the “roadmap” above.
  • Stretch Goal: Implement, or definitively decide against, at least half (six) of the items on the “roadmap” above.
  • Goal: Create at least one more player-useful application for the suite.
  • Goal: Finish porting the suite to Ceylon.

And one miscellaneous goal:

  • Goal: Start, and get at least minimally organized, a separate blog for Strategic Primer-related content.

We’ll see how all these turn out in a year’s time.


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.