Strategic Primer: Assistive programs progress

Since I last wrote about it—more than eight months ago!—my suite of assistive programs for players and Judges of campaigns of my strategy game, Strategic Primer, has improved significantly. I’ve made little progress on the character management utility that I was focused on back in September, but have made great strides in the functionality and usability of the main viewer.

If you’re interested in this, you can follow the development more readily by looking at the history in the code; after waiting this long to write a blog post about my changes, I’m having to read the logs and try to puzzle out what I changed. I’ll take things in roughly chronological order.

First, in the month or so after the last update, I added a rudimentary user interface for Jobs to the character management program. It leaves much to be desired, and the program still hard-codes the possible jobs rather than loading them from file, but it’s still progress.

At that point I apparently abandoned the project for several months. When I resumed intermittent work in February, I began work on a program to create exploration results … which I had begun thinking about back in October but didn’t begin to finish implementing until earlier this month.

Once I’d gotten the exploration-results helper program to a usable state, I turned to the viewer, which is the flagship application of the suite. I rewrote the map-reading code, making it more straightforward and easier to extend with the additions I wanted to make to the map format. Then I added rivers to the map format, and updated the viewer to show them. I also made several attempts to improve the viewer’s performance; it had taken several seconds to load and draw the map, during which it was completely unresponsive, but now I think it’s much better on that front.

After that, I replaced the old way of showing what a tile contained—a “tool-tip”—with a side panel showing the details of the currently selected tile. That panel now shows the tile type, any messages left on that tile in the map (usually exploration results), and any fortresses or units on the tile. The player can also select a unit or fortress and view its details, which was impossible with the “tool-tip.”

Later, I changed map “events”—the old form of possible exploration results, which I grandfathered into the new system—from a simple attribute that a tile might have to an object on a tile, like a unit or fortress. This change allows me to include these “events” in the players’ maps; I had worried that including the numeric “event” attributes might be giving players too much information, but now that they are objects in their own right that worry goes away.

I added the idea of a “secondary map” and integrated the exploration-results module. I can now double-click on a tile in the main map to run exploration on that tile and copy it to a player’s map; this makes keeping track of a unit’s “vision range” finally possible, and has generally made running strategies involving exploration or other unit movement much easier.

In the near future, I hope to add more features so that I can run a player’s exploration entirely from the viewer; at this point I still have to move the explorer by editing the map file by hand, keep track of how far he has gone and can go using other tools, and make the rolls to determine the results of the possible encounters my exploration-results module produced. And I hope to get back to the other planned helper programs. But before any of that I need to start work on yet another design change: more on that next week.


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.