Ok, now that dfhack-0.47.05-r1 is drawing near, it's time for a quick summary of what's recently changed and what's in the pipeline. A lot has gone in since my last summary (see the DFHack
core and
scripts changelogs for the definitive list), but here are the highlights:
- A good number of bugs were found and fixed.
Quickfort got a lot of testing this cycle, both from me doing normal development (plus seemingly endless
dreamfort runs) and from members of the community. Thank you
cjhammel and
ldog for helping me isolate the
#zones crash bug, and thank you
Grumalg for helping me find the issue that was preventing stockpiles from being placed in empty regions within the bounds of other stockpiles. Special thanks as well to
lethosor, who is always there to point me in the right direction when I get lost in DF's (and DFHack's) internals. Now that I'm more confident in quickfort's stability, I've gone ahead and deprecated DFHack's digfort script and fortplan plugin, which partially handled
#dig and
#build blueprints, respectively. I've added documentation to help digfort and fortplan users transition to quickfort (essentially: move your blueprints to the
blueprints/ folder and replace the words "digfort" and "fortplan" with "quickfort run" on the commandline).
- Dreamfort is now 1000x better
That's a subjective measurement of course, but really, with ldog's feedback and assistance, dreamfort has come a long way. The individual levels are much more efficiently designed and the fort as a whole is much faster to get up and running, making it work just as well in dangerous embark sites. The automation orders have been tuned to cover a greater variety of fortress needs while greatly reducing cancellation spam. The help documentation is far more complete, and there is now a
checklist of commands so players can just copy/paste their way to victory. I also wrote up some
embark profile suggestions for players looking to optimize their dreamfort experience.
The quickfort GUI dialog got some love. It now gives feedback when you generate manager orders. You can also set the string filter as well as the
--hidden and
--library flags from the commandline instead of having to set them with hotkeys after the dialog is shown. For example,
quickfort gui --library dreamfort notes will start the dialog with the dreamfort walkthrough blueprints already shown.
- Set container counts in #place blueprints
You can now set exactly how many bins, barrels, and/or wheelbarrows a stockpile should have when creating them with
#place blueprints. This also hooks into the manager orders generation, so running
quickfort orders on a
#place blueprint will now enqueue orders for any explicitly set number of (wooden) bins, (stone) pots, and (wooden) wheelbarrows.
- Buildingplan is more convenient to use
Now that all building types are supported by buldingplan, it can be annoying to enable each type individually when you just want planning mode everywhere. Now there is an "enable all" option in buildingplan's global settings dialog to switch all building types to planning mode. You can now also set buildingplan global settings from the console, for example:
buildingplan set boulders false. Buildingplan global filter settings (like
boulders,
logs,
bars, etc.) are persisted in the savegame, so you don't need to set them every time you load a game. "Mode" settings (like the new "enable all" setting) are not persisted, but they can be set from onMapLoad.init if you want them on all the time.
- Bundle aliases with blueprints
One of my long term goals for this project is to make community blueprints super easy to share and use so players can learn from other players. Having aliases separate from the blueprints that use them is a barrier to sharing them easily. With aliases in a separate file, there are two steps for using someone else's blueprints: (1) copy their aliases into your
dfhack-config/quickfort/aliases.txt file and then (2) run the blueprint. Now with the new
#aliases sections, you can declare your aliases right in the blueprint file. This means players can use shared blueprints without any manual steps, which should result in far fewer "it doesn't work" complaints.
So what's next?I'm finally getting around to the
automated regression test framework. After all the manual testing that went into the current version of quickfort, it seems silly not to "lock in the quality". I would hate to inadvertently break something in the future and not notice because it's too much work to manually test everything after every change. Automated tests will give me a lot more confidence that I can make disruptive changes safely.
While I'm writing quickfort tests, I plan to focus on
buildingplan for actual feature work. There are still a lot of usability enhancements I'd like to get done for buildingplan, like persisting the item filter settings in the savegame, setting all related filters at once (e.g. setting all constructions to use a particular color of stone blocks), resetting all filters to defaults, etc. I also want to tweak the item matching algorithm so that pickier filters are satisfied first, and I want to give players the ability to move specific buildings up in priority so important buildings get their items matched ASAP.
At some point I'd also like to overhaul the
blueprint plugin so it produces more complete and more usable blueprints, too.