In the month and a bit more since the last snapshot release of the suite of assistive programs for players and Judges of Strategic Primer, there have been only a few truly noteworthy changes, but many minor fixes, so it’s time for a new release. You can download the new snapshot from GitHub as usual.
Before I summarize the changes, I’ll mention that I’ve started using two continuous-integration static analysis services, Codacy and CodeBeat (both links are to this project there), to monitor the mostly-minor “QA” details that I’ve previously managed only by intermittently running tools myself. (Eclipse allowed these tools to integrate with compiler errors and warnings, which was nice, but too few tools did. IntelliJ IDEA offers a far richer array of checks, but requires the developer to explicitly run them.)
I made lots and lots of minor changes in the last month; of the about 480 commits, about 430 were warning fixes, reformatting, minor refactoring, and the like.
The one change I want players in my current campaign to be aware of is that the apps I use to run exploration now support the notion of “relative speed”; at “normal speed” explorers have a slight penalty to the checks for whether they notice things, but they can either take a bigger penalty to that to go even more quickly or slow down to search more carefully, and this speed can change at any time. Your strategy can include instructions to explorers, or other workers moving around the map, to move at a particular speed; the model these apps use includes “hurried” (movement costs two-thirds their normal rate), “normal”, “observant” (movement costs half again as much as normal), “careful” (movement costs twice as much as normal), and “meticulous” (movement costs two and a half times as much as normal).
Other noteworthy changes included:
- In the worker-management app, you can now choose which turn the orders you are writing apply to. (Note that changing that number refreshes the text-box to the current orders for the newly selected turn, so set the turn number, then write the orders.)
- Resource piles can now have non-integer quantities; the resource-adding CLI supports these, but the GUI does not.
- On Mac, About is not listed in the File menu because it is in the “application menu,” but we now respond to the “About” item in that automatically-created menu.
- On Mac, it is now possible to pass arguments when invoking the
.appapplication bundle from the command line. (See the
open (1)man page.)
- I made a few tweaks to make buttons and search boxes look and feel a little more “native” on Mac. (These changes should have no effect on other platforms.)
- The “Set Current Player” menu item is now only in the View menu, not in both that and the Map menu with only one of the menus enabled in any given application.
- The worker-management app now shows any results in the map when a unit is selected.
- The calculation of modifiers for worker “stats” gave incorrect results for many below-average stats; I fixed this, and added tests to ensure that the calculation stays correct.
- XML writing code is now robust in the presence of “XML metacharacters” in user-supplied data (including names and kinds of fixtures, but more notably unit orders: they can now include angle-brackets and quotes!).
- In exploration programs, an explorer can now both swear villages and dig to uncover Ground in the same movement round.
- XML-writing code now doesn’t write ID numbers for animal tracks, and reading code doesn’t generate positive ID numbers for them; before this change, they were a major source of ID number collisions between players’ maps (since animal tracks are not supposed to be written to the main map …)
- The report generator now takes a command line option to create the report for a different player than the one the map says is current.
- I added a utility driver to fix ID mismatches of forests between the main map and player maps. (I don’t expect to ever need to run it again, but I’d rather leave it in the repository to refer to in the future than just delete it at this point.)
- In exploration apps, and any future code that moves units and keeps track of “movement points,” rivers now only reduce the cost of movement “along” them, not all movement into or out of a tile containing any rivers.
- The exploration apps now use explorers’ Perception score when determining how many fixtures to “see” on each tile.
- The exploration CLI had double-charged the movement cost of swearing villages and digging; this is now fixed.
- All dialog boxes should respond to Control-W (or Command-W on Mac) or the Escape key by closing.
- In the map viewer, the tooltip that pops up when the user hovers the mouse over a tile now does not include any fixtures that he or she has hidden using the fixture type visibility and stacking-order panel.
The Pivotal Tracker backlog is currently fairly close to what I’m hoping to get done in the near future. (Other than getting QA warnings down to more manageable levels.) Notable items include:
- Improving the appearance of the “About” dialog.
- Starting work on a “turn running” app to create results (or at least a skeleton of them to start with).
- Fixing the bug that adds animal tracks to the main map when I run exploration using the exploration GUI (and perhaps the CLI).
- Making an explorer gain knowledge about a village’s surroundings when it swears allegiance.
- Accepting files via drag-and-drop, not just command-line options and menu items.
- Extending the model to allow maps to contain roads.
- In the worker-management app, allowing the user to write orders to multiple kinds of units, or multiple units of different kinds, at once.
- Allowing the user to add resource piles and equipment to a unit or fortress from the map viewer (or other apps besides the dedicated resource-adding apps).
- Allowing Ground to have unique ID numbers.
- In subset checking, treating location as a differing property when a unit has moved instead of saying that the unit is an “additional fixture” or “additional member” in the location where the player’s map has it.
- Loading racial stat adjustments from file.
- Extending the modeling of animals to handle animals’ young differently than adults.
- Using workers’ relevant Skills to influence results in herding, hunting, gathering, and the like.
- Loading data for hunting, gathering, trapping, and fishing from file.
- Adding methods to simulate farming, so I don’t have to look things up and do all the calculations by hand.
- Adding methods to simulate combat, for use in modeling hunting (and warfare when that becomes necessary, but it isn’t yet).
- Making most “tile fixtures” have “discovery difficulty” to make explorers’ Perception and movement speed affect how likely they are to be discovered.