286
Utilities and 3rd Party Applications / Re: DFHack 0.40.24-r3
« on: June 27, 2015, 07:31:48 pm »
I have no idea. I think at this point you and Urist_Davinci know the most about it.
March 6, 2024: Dwarf Fortress 50.12 has been released.
News: February 3, 2024: The February '24 Report is up.
News: February 4, 2021: Dwarf Fortress Talk #28 has been posted.
News: November 21, 2018: A new Threetoe story has been posted.
Forum Guidelines
Even if he didn't mind working with other programmers I doubt he'd include the custom job management screen you mention.Quote from: http://bay12games.com/dwarves/dev.htmlGenerally, we'd prefer to stay away from spreadsheets or a numbers-oriented priotization for specific labors on the labor list. We'd rather see the labor list removed entirely in many circumstances, depending on fortress citizen status, but that'll have to wait until starting scenarios are completed.
Isn't that like saying "I'd prefer to stay away from an Interface that works"? Because it's not something about presentation, it's about how the game was built in the first place that requires specific types of data to be in the game in the first place.
Toady built a game where you need to be able to compare dwarves to see which one is best suited for a task, or where, when a job isn't being done, you need to see how many dwarves are assigned to that task, who is available to be shifted over to that task, and what consequences there would be for assigning those labors to them.
He built a spreadsheet-based labor screen by building a game that requires a spreadsheet-based labor screen to actually manage. And if he doesn't like that, well, HE'S BUILT THE WRONG GAME, THEN. This is a simple failure to think the consequences of his design through, and it shows through every fracture in this broken and failed interface of his.
He built a system for, say, bee hives, where you need to be able to set half the hives to be split and the other half to be gathered. There's no reason to do otherwise. There's a button to control that, and you just have to manually make sure it's half. It's not ideal, but it's fairly functional, and all the buttons are explained on the menu, itself, which is fairly good, and probably one of the better uses of interface Toady has performed.
Nest boxes, on the other hand, require that players somehow manually forbid dwarves from collecting fertilized eggs, which is a massive chore, and a failure to foresee how these nest boxes will be used, especially when you have something like bee hives with a perfectly good system for designating whether a nest box's eggs should be forbidden AUTOMATICALLY or not. You can't see whether turkeys are gay or not because he didn't bother to think through the need for that interface. You can't see which turkeys are fat or muscular on the screen where you butcher them after explicitly making a system which rewards selecting for fatter, more muscular livestock because he didn't bother to think that one through. You have the game that requires keeping track of when a turkey was born for maximum butchery, but no means of actually tracking that information, because he didn't bother thinking it through. We only needed those features when he built the game so that we'd have to use those features. He BUILT the problem to which those interface features are the only, obvious solutions.
That's where all this comes from: He didn't bother to think it through. And it turns what would be a game that could curb-stomp Minecraft into some tiny indie thing only programmers play because only programmers can figure out how anything works and can manually change it to properly run.
Which brings up another thing: Cursor Memory. Can't we have a way to remember where we were in the units screen or stocks screen? I have to hesitate to wonder if it's really worth it to zoom in on where a given item in the stocks screen is, because I know I have to search for that type of item again if I'm looking for where every single wheelbarrow has gone off to...
But anyway, if we're talking about links between different modes of information-gathering and decision-making, obvious culprits are the military screen and anything having to do with animals. Animals, in particular, require that you just memorize the order of the animals' appearance on the list, because there is no other distinguishing feature you can find when you want to train or pasture some, and butcher others. You just have a list of 30 turkey hens all listed as "turkey hen", and no idea which one is in a pasture on a nest box, and which one is just running around free. To see the specific stats of a given turkey on the detail view, you need to exit (and lose your place in) the units screen, and even then, you don't get enough information without just using DFHack, anyway.
For that matter, just plain having a capacity to nickname animals would be a huge help. "Egglayer turkey 04" is fine enough to label a turkey, while, due to the difference in adulthood and max size, you might say something like "butcher timber 1062" on another turkey.
Also, one thing that's just the bane of my existence in this version is inexplicable job cancellation messages. Jobs about stockpiling keep being canceled because of the job item being lost or moved, and I have NO IDEA what's creating the problem, because the announcements screen only zooms in on the area where the DWARF was when they canceled the job. There is no indication what item they were going for, so I have no way of solving the problem. Worse, I keep having job cancelations with my clothesweavers saying they're out of cloth when I have 70 cloth in the stockpile, apparently because someone just keeps moving all the bins or something...
One of the things I really loved in Gnomoria was the fact that, if you ordered a new steel spear, and you were out of steel, rather than just spitting out one more cancellation message among 500 others that get spammed a second, it just plain orders a new bar of steel be forged to complete that order, and the steel spear order is suspended until the steel bar is ready for being made into a spearhead.
While we're on topic, if you could actually add in sound effects, that would be great. In Gnomoria, things like shield blocks, dodges, hits to armor, and hits that pierce flesh are all different sound effects, and it helps give a sense of how a battle is going without having to read combat reports every 0.2 seconds. Sound effects for different events could also take some of the load off of visual representation, such as an "ahhh!" sound for getting a happy thought looking at
something.
However, I think the most critical issue of interface (one I've harped on to some length in some of the previous rants I've linked to within this thread,) is the fact that critical data is invisible to the player.
Players keep running into problems where their dwarves go into tantrum spirals because of problems they don't understand. Thoughts exist, but most players don't camp in the thoughts screens of dwarves, especially as you start to get over a hundred dwarves. (Again, a reason why dwarven migration should be far, far slower...) When they finally do look it up, it's mostly just talk about being horrified by one thing or another, and a bajillion messages about how friggin' INTERESTING every random door is. Not a specific door, just "a door". No zoom-in here.
The big problem is that everything in this game needs to be visually identifiable for players to really understand it. Players understand minecarts and fluids and even to some extent combat (although they have to read the reports to get the blow-by-blow, they understand where they are standing, and what is dead). Players do not understand conversations, social relations, thoughts and mood until it has hit critical stages, and general problems dwarves have with why they are picking one job over another.
That last one is especially critical when Toady wants to move away from enabled and disabled labors to dwarves-choose-jobs. Why does a dwarf choose one job over another? WHO KNOWS! What can we do about it? APPARENTLY NOTHING! Sure, there's going to be an elite few that get how to make this work, and build elaborate systems to exploit the subtle quirks of the system for maximum efficiency, the way that we used to control which side of a wall dwarves stood on by ordering suspended wall construction where we didn't want them to stand, but most players wind up walling a few dwarves into a closed-off space, and have no idea why.
Adding in this tavern stuff, with musicians whose actions we can't see, visitors whose thoughts we can't see, but whose happiness we need to ensure so that we get more paying customers, and all sorts of other invisible data problems all add up to a major problem going on.
In The Sims, we can see what a character is thinking - not through some details view that requires dropping all else from the screen to focus on just that one character - but just because a bubble pops out of their head saying "I wanna go to the bathroom". And frankly, OF COURSE they do that, because understanding what your sim is doing, AND WHY, is critical to playing the game.
DF needs to have this capacity to show when a dwarf is playing or listening to music if this is going to be some sort of important aspect of gameplay. We need to know why a dwarf is doing one thing, and not another thing when both choices are available to them, and what we can do to influence that decision in the future, and do so natively in the game, not only if you search and read up some obscure forum post where SCIENCE was done.
We need to be able to see when a dwarf gets unhappy because they saw some swarm of flies because there's a rotting untreated leather in the stockpile so we can remedy that, rather than just see problems occuring, but having no idea WHY. We need to be able to see the relationships, and what they do, or they're just some invisible bar filling up to a marriage that you can't even distinguish from being single except for when straight dwarves randomly spawn more babies. If we have these taverns, we need to see what parts of the tavern are working well at satisfying customers or what parts of dining halls dwarves love, and which ones are annoying dwarves. Armok forbid we start getting advanced social structures or factions within a fortress or thieves that pose as fortress members, and we have no means of telling what's happening or why.
Interface, and showing what's actually happening as it happens, not just when a player randomly chases a cause down after the disaster has already occurred is critical to letting dwarves become more than just the smiley faced automatons that blithely do whatever they are ordered without questioning orders, because we have no means of seeing when it is they are questioning orders.
Worse, I've seen some fights on the wiki about people saying that such-and-such is how you do something, and not mentioning it's only available via DFHack plugin because they didn't know it was a plugin. When you have people who never use vanilla DF, they have trouble telling where DFHack ends, and vanilla begins...
I get that DFHack makes great features available, but when someone can make a third-party interface that replicates the functions of Dwarf Therapist ENTIRELY IN-GAME USING IN-GAME ASSETS, then it's basically as close to a slap in the face as a programmer can get. Since it's literally already coded out for him, it just begs the question why Toady can't just sheepishly accept it and copy that code?
does the df::global::world.buildings.all vector contain every building ever made, including removed ones?
I'm trying to decide how I will send over constructed buildings to Armok vision. I don't want to send more than I need to, but besides searching through all buildings and picking the ones that are inside a specific map block, I'm not sure how that could be done.