You don't even see the leaps you're making. "Structures"? There are no structures, only individual cells. (And buildings like workshops, but those won't remain atomic for long, I think). "Events"? Do you have a working definition for that? How do you make a lake draining an event, for example? Ponder the field of event calculus and the frame problem for example. "Areas"? How do you decide which cells form an area? Are you perhaps just assuming that areas are available for you?
Structures are things like statues, supports, and buildings. Events are things like cave-ins and the removal of structures, which the game models discretely. I am only talking about tracking centered around things that the game models in a discrete fashion.
I assumed that this fact was obvious enough to not require stating; the fact that
you immediately make the leap to vague and hand-waving
You make light mention of some extremely complicated notions that still have AI researchers working full-time to understand them. "Struggling with in my head"? Yes, trying to make a living understanding them, as a matter of fact. Why aren't you in spatial abstraction research if these things are not complicated to you? Were you being willfully offensive or just unaware?
Are you perhaps just skimming my posts? As I stated earlier, I have a masters in Computer Science, and
I do, in fact, make a living with it.
I have no idea why you are bringing up spatial abstraction; I never mentioned it, and I do not believe it has the slightest relevance to the problem. It is the wrong approach for this. The goal here is not to provide a perfect map for all possible alterations that dwarves could make to the system. The goal is to find a dwarf that has done something that is vaguely related to what happened, so the Hammerer can go hit them with a hammer.
For instance, with fluid: Give each tile a potential blame value, the same way we would assign it to objects. When flooding water into a tile, copy the blame value from the source tiles, if it exists. This is no more complicated than water picking up a bloodstain.
The blame value corresponds to a certain dwarf, correct? It can't be a causal link back to its cause because that cause might no longer exist or might have acquired some other blame in the interim.
When does blame time out? Is it a flat timer, or dependent on events? Is it a different scheme for each type of thing that can have blame attached?
Urist catapults a stone into the sea, creating ripples that extend indefinitely (because all water mixes eventually). Is Urist responsible for all the water in the sea? How does diffusion of blame work?
Urist dams the river with a cave-in and the mines flood. How does the fluid engine know that the cave-in was the cause - no new empty space involved? Will the miner who dug the mine entrance be blamed now?
Most of these questions are implementation details that are not so important for giving a general overview of how the problem can be solved. Tracking every specific case is, as I noted, not necessary -- a cave-in that causes floods does not
have to be covered, since it's distant enough that it's believable that the dwarves could fail to pin the blame on anyone. Objects striking water would not need to be covered, for the same reason.
I do not know why you brought up channels and pools and holes. Channels and pools are not meaningful terms. 'Holes', in this context, just mean that the game will assign blame for a blank space to the dwarf that dug it out (or, if it was hit by a falling object or some such thing, it will assign blame to whatever blame-value was assigned to that falling object.) Assigning blame to blank spaces like that is not some complicated and strange thing.
You make it easy for yourself by talking about cases where the effects of the empty space are easily measured. A fluid running through a mined-out cell - fair enough. A goblin slipping through said cell? Tougher. What about channeling out the floor so that your fellow dwarf can't get out of his room and starves - how will you handle that? Or will that require some entirely different scheme?
Death to enemies would be blamed on someone from the guard, if they exist -- grab someone who was off-duty at the time and scapegoat them. Happens in the real world all the time. Doesn't matter that a miner damaged the cell; from a setting standpoint, it's ultimately the guards' responsibility.
Collapses are slightly more complicated, and I don't know exactly how they're handled, but I already explained why that's not a problem, because we don't care about assigning exact blame, just enough to look like some thinking, arbitrary dwarf could assign blame.
"We don't need to have the computer understand English, it just needs to look like it does."
If this argument made things easy, the Turing test would have been beat decades ago.
Sure, it can be made acceptable for special cases. But they tend to create outrageous results when you try to generalize.
That's what I
said. We only need to cover a few special, common cases where we can apply vague and general responses that let the system to look believable enough. Pulling levers to activate spikes, smashing structures, things like that.
We don't have to convince the player that there is an actual real dwarf out there finding responsibility; we have to make it so they can suspend their disbelief that the dwarves are real. Showing the dwarves arresting someone -- even if it's just the kind of approximation that we get with the Dwarf Eliza -- is better than having them fail to respond at all.
Grabbing responsibility from the nearest mined-out section or destroyed support is perfectly fine. (As collapses are rare, this is not a check that will have to be done often.) Sure, it'll assign blame to the wrong dwarf sometimes -- so what? Most of the time, it will incorrectly assign blame in a believable manner, which is all we care about.
If an innocent dwarf channels the floor right above the collapse and gets blamed, well, sucks to be them, but it's not an unreasonable leap of logic for the sheriff (or whoever) to make, so it's good enough for our purposes.
Again, the trouble is when the miner is executed for the flood caused by the cave beavers eating your dam.
That's not trouble. That's an interesting story. The Hammerer blamed a random dwarf who was doing some mining in the general area for causing a cave-in or a flood that was actually caused by something else -- so what? Things like that happen in the real world all the time.
Giving the appearance that the Hammerer is going after someone -- and that the dwarves, as a whole, take what happened seriously enough to try and find someone to blame -- is much more important than actually catching the right dwarf.
Blame starvation on the mayor if you want to. It doesn't really matter. It's good to be able to recognize that the dwarf who pulled the lever that directly caused spikes to kill another dwarf is responsible, but it isn't necessary to know exactly who filled in a noble's door and made them starve (wouldn't the other dwarves have heard the screams, anyway?) It's much more important to show
someone being blamed... tracing a chain of responsibility to a particular dwarf is only a way to make it look a bit more believable under certain situations.