Ummm, Hi, I know I am new to all this, but was wondering after I didn't see it here, is there a way of seeing "relationships" between objects in FO worlds, and those who have them/use them &or Locations ...
Like (as a example only) https://neo4j.com/sandbox-v2/
They use Data to draw relational charts, I was wondering if something similar exists here, not as charts so much, but how data is linked in game, so you see, who owns what, where it is/can be. Also for quests to see how stages link maybe, or am I asking too much ..
If I understand what your asking is...
How and why do NPCs interact in certain ways with certain objects? In some cases "idles" are set to look for specific "data" points in the cell. In terms of simulated AI, all the data is just that data. Indifferent one from another. It's impossible to tell what is what without a massive code base to try and "understand and learn" about it's environment. Still, it would need to know color, shapes, why it looks that way, how it's used, it's purpose, limitations ... lots of things. We really take for granted how complex our own biology really is and how much it can actually do.
The easiest way is... by setting certain types of data points and giving that data x,y,z (an object let's say), we can now "path" to it. Once there, we can now "idle"- though conflict and other things could "kick" the npc out of "idle" and into another behaviour package. It's the same for "navmeshing"- where can I walk- an easier calculation than trying to navigate over and around everything (thus, things get stuck often).
In the GECK, you'd need to set or have already set one of those "data" points (like a path to point, or a sitting point, things like that). Then you'd need to attach idles and behaviour packages to an npc. If the npc is to do something, the object might have to be owned by the npc, but depends. Like, have the npc "path" (walk) to a chair (object), engage "sitting" idle for the npc. The packages are combinations of animations and other data used by the game engine to perform a "higher" level function.
Most everything Bethesda did was take very simple things and combine them into "packages" giving the illusion of very complex systems; npcs having a life. Todd Howard gave an interview where he also mentioned it. The trick was to switch between them making it look seemless. Data at lower levels need timers, wait for a specific animation sequence to complete (idle thinking pose) before moving to the next. By doing it this way, once you get to the higher level stuff, you just need to say if it's past 8pm execute the go-home-to-sleep package; path to owned home. enter. go to owned bed. sleep. That kinda thing.
Todd mentioned they can't work on the new anything without the tools. It's those tools that take the very low level stuff the animators and coders create and build them into usable packages that are not only controlled by conditionals in the engine, but also every other library (havok for example) that's compiled in, and can be easily referenced in scripts. It's a nice design- don't recompile the program, just recompile the script. The low level programmers (who put all the conditionals in the engine, etc.,.) move on to the next project, while those with less programming ability just use the higher level languages like scripting to build the game.
It's that design that allowed the game to easily (in most cases) modded.