The profession definitions could definitely use some discussion, and I really should have been more transparent about my thought process (prepare yourself for a long post with lots of lists and tables). I designed them according to three principles:
- Simplicity - not too many different professions, accessible to newbies, but applicable and useful for experienced players. I want the careful thinking about professions to happen here, in the thread. For players in the the game, they should "just work".
- Resiliency - loss of a single dwarf should not be catastrophic for the fort; prefer groups of dwarves having groups of jobs rather than single dwarves having single jobs.
- Efficiency - Jobs are gated by workshop use, so labors that are used at the same workshops (or at a related set of workshops) should go to the same dwarves. Labors that need to be done simultaneously should go to different dwarves.
I also tried to make the professions useful in general and not depend too heavily on the specifics of Dreamfort or any particular playstyle (though I do understand that *some* assumptions about playstyle have to go into the design).
Note that I did not consider guild association or distributions of moodable skills. If we can work those in without compromising too much on the other principles, it would be a net win. My approach so far is to be more laissez faire on moods, and post-mood I check to see if the dwarf's current profession benefited from the mood. If not, I consider changing the profession of the dwarf to make use of the new expertise (or sometimes I just enable that labor for that dwarf and give them an out-of-profession assignment). You're absolutely right that we at least need to be more conscious of these issues, though. More on that below.
First, I figured out which tasks are most important to be done simultaneously at different stages of fort maturity.
Starting fort- mining
- masonry
- stonecrafting
- woodcutting
- carpentry
Basic fort- mining
- masonry
- stonecrafting
- woodcutting
- carpentry
- mechanics
- farming
- brewing
Advanced fort- mining
- masonry
- stonecrafting
- woodcutting
- carpentry
- mechanics
- farming
- brewing
- cooking
- butchery, tanning
- bowyery, bone carving, woodcrafting, weapon/armor smithing
- clothesmaking, dyeing, plant processing, spinning, shearing, leatherworking, weaving
- furnace operating
- hauling
Steady-mode fortThen I mapped the labors to their primary workshops:
Workshop | Labor |
Ashery | Lye Making |
Bowyer's workshop | Bowyery |
Butcher's shop | Butchery |
Butcher's shop | Small Animal Dissection |
Carpenter's workshop | Carpentry |
Clothier's Shop | Clothesmaking |
Craftdwarf's workshop | Stonecrafting |
Craftdwarf's workshop | Bone Carving |
Craftdwarf's workshop | Woodcrafting |
Craftdwarf's workshop | Strand Extraction |
Craftdwarf's workshop | Bookbinding |
Craftdwarf's workshop | Waxworking |
Dyer's Shop | Dyeing |
Farm plot | Farming |
Farmer's workshop | Gelding |
Farmer's workshop | Plant Processing |
Farmer's workshop | Milking |
Farmer's workshop | Cheese Making |
Farmer's workshop | Spinning |
Farmer's workshop | Paper Making |
Farmer's workshop | Shearing |
Fishery | Fish Cleaning |
Fishery | Fish Dissection |
Glass furnace | Glassmaking |
Jeweler's workshop | Gem cutting |
Jeweler's workshop | Gem setting |
Kennel | Trapping |
Kiln | Pottery |
Kiln | Glazing |
Kitchen | Cooking |
Leather works | Leatherworking |
Loom | Weaving |
Mason's workshop | Masonry |
Mechanic's workshop | Mechanics |
Metalsmith's forge | Weaponsmithing |
Metalsmith's forge | Armoring |
Metalsmith's forge | Blacksmithing |
Metalsmith's forge | Metalcrafting |
Quern | Milling |
Screw press | Pressing |
Siege workshop | Siege Engineering |
Smelter | Furnace Operating |
Soap-maker's workshop | Soaping |
Still | Brewing |
Tanner's shop | Tanning |
Wood furnace | Wood Burning |
Wood furnace | Potash Making |
Then I started building the professions step by step. I separated the early important labors so fort development would never be in danger of stalling. As I added labors to each group, I tried to keep labors associated with the same workshops in the same group. And whenever I added a workshop to a group, I tried to combine workshops from the same industry.
Starting fortProfession | Workshops | Labors (grouped by workshop) |
Profession 1 | none | mining |
Profession 2 | mason | (masonry) |
Profession 3 | craftdwarf | (stonecrafting) |
Profession 4 | none | woodcutting |
Profession 5 | carpenter | (carpentry) |
Basic fortProfession | Workshops | Labors (grouped by workshop) |
Profession 1 | none | mining |
Profession 2 | mason | (masonry) |
Profession 3 | craftdwarf | (stonecrafting) |
Profession 4 | mechanic | woodcutting, (mechanics) |
Profession 5 | carpenter | (carpentry) |
Profession 6 | still | farming, (brewing) |
Advanced fortProfession | Workshops | Labors (grouped by workshop) |
Profession 1 | none | mining |
Profession 2 | mason | (masonry) |
Profession 3 | craftdwarf | (stonecrafting, bone carving, woodcrafting) |
Profession 4 | mechanic | woodcutting, (mechanics) |
Profession 5 | carpenter | (carpentry) |
Profession 6 | still, butcher, tannery, farmer's | farming, (brewing), (butchery), (tanning), (plant processing, spinning, shearing) |
Profession 7 | kitchen | (cooking) |
Profession 8 | bowyer, forge | (bowyery), (weaponsmithing, armoring) |
Profession 9 | clothier, dyer, leather, loom | (clothesmaking), (dyeing), (leatherworking), (weaving) |
Profession 10 | smelter | (furnace operating) |
Profession 11 | none | hauling |
Steady-mode fortProfession | Workshops | Labors (grouped by workshop) |
Miner | none | mining, stone detailing |
Mason | mason | (masonry) |
Craftsdwarf | craftdwarf, jewler | (stonecrafting, bone carving, woodcrafting, strand extraction, bookbinding, waxworking), (gem cutting, gem setting) |
Outdoorsdwarf | mechanic, kennel | woodcutting, animal training, plant gathering, beekeeping, gather wounded, (mechanics), (trapping) |
(subsumed into Craftsdwarf) | carpenter | (carpentry) |
Farmer | still, butcher, tannery, farmer's, fishery, query, screw press | farming, (brewing), (butchery, small animal dissection), (tanning), (plant processing, spinning, shearing, gelding, milking, cheese making, paper making), (fish cleaning, fish dissection), (milling), (pressing) |
Chef | kitchen | (cooking) |
Smith | bowyer, forge, glass, kiln, siege | (bowyery), (weaponsmithing, armoring, blacksmithing, metalcrafting), (glassmaking), (pottery, glazing). (siege engineering) |
Clothier | clothier, dyer, leather, loom | (clothesmaking), (dyeing), (leatherworking), (weaving) |
Unskilled | smelter, ashery, soap, wood furnace | (furnace operating), (lye making), (soaping), (wood burning, potash making) |
Hauler | none | hauling, architecture |
Doctor | none | animal care, suturing, surgery, setting bones, dressing wounds, diagnosis |
Fisherdwarf | none | fishing |
I named the professions in that last table according to the themes that appeared to be emerging.
I then made some adjustments and additions:
- I subsumed carpentry into the craftsdwarf profession since it becomes less important in more mature forts.
- I created the "StartManager" profession, which is everything not already covered by the other starting professions (primarily so all the workshops can get built, even if there are no jobs enqueued there at the beginning of the game), plus some double-coverage for some labors, like stonecrafting.
- I added the "Marksdwarf" and "Meleedwarf" professions, who are just haulers with different names, so I could find them easily when assembling my military.
- I added a few other double-coverage labors so they'd be sure to get addressed, like beekeeping on the farmers and architecture on the masons.
Then, with playtesting, I figured out how many dwarves would be needed for each profession at each stage of fort development, resulting in the recommendations I made in the
docs we just merged.
Now, my interpretation of the data, my methodology, and all the decisions I made were based on my experience and my sometimes flawed, certainly incomplete understanding of the game. Feedback and improvement suggestions are very much welcomed. Let me address some of your comments:
You really need to cut down on tanners, it is a special skill because while it has no effect on quality it is a moodable skill. I shudder to imagine 20 legendary tanners running around my fort and all the leather artifacts that could have been good metal weapons or armor. I'd remove it from both farmers and unskilled and probably put it on the clothiers.
This is a good idea. I had given it to so many dwarves because it is a time-sensitive task, and the farmers (who originally were the only ones assigned) didn't always process the rawhides before they rotted. The clothiers are usually not so busy that they can't run upstairs to tan hides, and it would fit in well with their skillset. I might change my recommendation from 2 to 3 clothiers to compensate. If I can figure out how to automatically prioritize tanning jobs, I'll drop that recommendation back down to 2.
I imagine at a minimum that you restrict the mechanics shop to skilled or better. I do like the idea of the haulers resetting traps but I wouldn't want them all making mechanisms.
This is exactly what I do. I didn't document this in the dreamfort help because I didn't want newbies to get overwhelmed, but I can mention this in the professions docs.
The farmers have an awful lot of labors enabled. I'm leery. Maybe offload some of their tasks to the unskilled. Granted I don't use some of them at all (both dissection), some are used very rarely (gelding) and then of course shearing/spinning/milking/cheesing are like once per season. [...] I guess they might be ok. Especially running 5 or so of them.
Yeah, most of the Farmer's labors are rarely used, but they need somebody free to do them when they need doing. Moreover, it's useful to have 5 farmers at peak planting/harvest season, but they need something to do the rest of the time.
It's unfortunate that fisher dwarfs can't handle their own cleaning and this is the next best group to do it.
I just checked if prioritize can handle this, and it turns out it can! I'll add PrepareRawFish and ExtractFromRawFish to the "automatically prioritize" list in onMapLoad_dreamfort.init and move these labors to the fisherdwarves.
Miner is missing alchemy. [...] Animal care should be removed from Outdoorsdwarf, it will level up their doctor skills if used and we've already got the dr profession.
Those changes should already be in the most recent professions definitions, just merged. You can pick them up by pulling from the DFHack repo now, and I'll remove the old ones from the shared drive. You still have to manually copy the updated professions from
hack/examples/professions/ to
professions/ to use them in manipulator, though.
I forgot if I mentioned or not, running setup after F1 runs without error.
I fixed the alias in the /setup blueprint to automate that step, so it *should* run reliably now regardless of where the wagon is on your screen (as long as you don't redefine the {F1} hotkey before running the /setup blueprint).
Probably all the jobs should have [Alchemist]? I converted the professions over to DT by hand (they're just text files) and autohauler does not care about the professions set hauling labors. I don't know if dfhack manipulator works any differently than DT since I haven't tried it yet. Actually it doesn't seem like autohauler is respecting the alchemy setting either. I'm at a loss but this is my first time trying it.
I included hauling labors in the professions so they'd be useful for players regardless of whether they are using autohauler. I expect them to get overridden if autohauler is active. However, I need to double-check to make sure all the hauling labors are set correctly for each profession. Sometimes autohauler decides to change the labors just as I'm saving changes in manipulator and I don't notice.
I didn't want to automatically include Alchemist for all (skilled) professions since that would break the early game, when you need all dwarves to haul in their spare time. I say in the Hauler description: "As you accumulate enough Haulers, you can turn off hauling labors for other dwarves so they can focus on their skilled tasks.", but for players who don't read the docs, I figured it was safer to default hauling labors to on as opposed to turning them all off and letting the player manually enable them.
I did turn Alchemist on for Farmers, though, since they always need to focus. Maybe I'll give them HAUL_FOOD as well for the non-autohauler users.
n.b. you can configure autohauler to ignore the settings on certain labors. For example, my personal onMapLoad_myk.init file (which runs after onMapLoad_dreamfort.init) looks like this:
on-new-fortress buildingplan set boulders false; buildingplan set logs false
on-new-fortress enable autohauler
on-new-fortress autohauler FEED_WATER_CIVILIANS allow; autohauler RECOVER_WOUNDED allow
enable dwarfvet
dwarfvet enable
on-new-fortress autobutcher target 0 0 0 0 new
the autohauler lines let me manually manage those two labors. I'll make a note of that at the end of the professions docs.
As for why it doesn't appear to be respecting the Alchemist labor for you, I'm not sure. Do you happen to have a conflicting labor management plugin enabled, like autolabor or labormanager? autohauler can be configured to check a different labor as its "no hauling" flag, but if you haven't specifically set that up then it shouldn't apply to you.
Move small animal disection from farmer to outdoorsdwarf, he has most of the ranger skills anyway
I try to keep labors associated with a particular workshop together. I could move both butchery and small animal dissection to the Outdoorsdwarf, though... I'll have to playtest that to see how well that works. Sometimes the Outdoorsdwarves are outside chopping trees for a long time, but butchery and dissection isn't exactly super-time sensitive.
Kinda dangerous to only have a handful feeding prisoners/patients. I usually leave that on.
It's on for Doctors, Haulers, and Outdoorsdwarves. Is that not enough? Haulers might be too busy, which is why I added it specifically to the other two professions.
Mixed feelings about the recovering wounded too, normally I keep the civilians on lockdown until it's clear anyway. OTOH the ones that get wounded by wild animals in the caverns...hmmm...yeah, would be better to have armed dorfs on recovery. Maybe add it to the miners too, picks are deadly.
Yeah, it was the caverns that inspired me to only give this to armed dwarves. Good idea to include miners.
Can probably remove beekeeping from farmers, the outdoorsdwarfs are better suited being armed.
I had added this to farmers to ensure the beehive products were promptly gathered -- the beehives themselves are normally populated from outside hives at the beginning of the game. Or so I thought. After some observation, I do see dwarves continuing to go outside to repopulate drained hives, despite having two hives inside the fort reserved for population splitting. Ok, removed from farmers.
Papermaking is considered a craftsdwarf skill, another to unload from farmer. Prefer grouping in DF categories to keep # of guilds from getting out of hand. Pottery, glazing, glassmaking are also considered craftsdwarf. Glassmaking being the only moodable out of these. Technically the textile skills are also craftsdwarf but I think they are a good split. Jeweler are also their own skills
Carpenter, bowyer, woodcutter all considered 1 group. Would probably make carpenter/bowyer its own profession or possibly roll into outdoorsdwarf. Siegecraft goes with Mechanic, although I tend to not use it anyway.
I'd be happy to reallocate labors, but we do need to ensure dwarves don't block on each other due to workshop conflict. You make a good point about guilds. The opposing issue I'm trying to balance is complexity of workshop layout and the resulting brittleness of the blueprint set:
If we split the labors that are used at a craftsdwarf's workshop, then we risk some dwarves sitting idle while another dwarf uses the workshop.
We can try to counter this by building more workshops, but manager orders are distributed to all available workshops by default, so if stonecrafting tasks are at the top of the list for all workshops, non-stonecrafting craftsdwarves are still blocked.
Finally, we can fix this by restricting the allowed general work order labors on each craftsdwarf's workshop. We can do this in a quickfort #query blueprint, but as with all building-modifying #query blueprints, it can fail or give surprising results if the player has made modifications to building settings before running the blueprint. Also, splitting the labors for a single workshop into multiple professions now requires a player to set their workshops up a certain way in order to be efficient. It is much more straightforward and less error-prone to scale by just creating more workshops and more dwarves with that workshop's profession.
So that's the trade-off I've been mentally balancing. I've tried to be very careful about introducing failure points into dreamfort. The new /setup blueprint is the exception, and you've seen how clearly I try to communicate that it must be run before any other changes are made (and you've also seen how brittle it can be anyway).
I'm not saying that we shouldn't make changes. We just need to consider the potential failure modes. DF is not an easy game to automate. Getting and keeping Dreamfort (and the supporting files) in a "it just works" state is a tricky task.