I'm looking for a procedural way to fake dynamics NPC with local procedurality, complete with travel, genealogy, etc.
It's a thought experiment at that point, maybe I'll find some use in the future, current project don't allow it
Ie
Local mean if you evaluate a tile for generation you wouldn't need to look neighbor, or past state, to find the correct state, just solving with (x,y,z,t) with the global parameters.
For example let's look at how to do it to geography first. Let say you have a planet and it had x number of civilization randomly place on its surface. For each tiles you can solve its current event by computing the distance of the tiles to civilization weighted by time, so if the weight is below a certain threshold the tile is wild and have no civilization influences. By computing all the weights and using the filter and parameter of each civilization you can determine the exact events on a tile at moment t.
For example, let's you have a tile under influence from civilization A and condition are solved into a fortified town, Civilization B is war like and its influence grew on that tile, the formula solve it by creating an increasing siege to full war over time. Another example is a tile is wild, a Civilization influence grew on that tile, so you see explorer spawning on the tile then settlers, etc ... over time. It had the benefit that you have not only the illusion of dynamism but also time travel and dimension hopping come for free. The main concept was to convert cause relation into correlation.
But how that would translate to dynamic npc that travel, meet peoples, have adventures with them, without any need to bookkeeping?
The trick is to find a function from which we can infer those things. The difficulty is that generation is tile local and character, through travelling, are not, and also having relationship make it supposedly non local. So the function must take as input a tile in a certain time and infer a character that is non local :/ kind of defeat the point ? Well that's what I'm investigating, what if we ties character to a procedural list generated at a bigger hierarchical level and use time to index that least based on character and tile parameter? Another idea is not index character but parameters and those parameter index the character (ie instead of character owning parameter you have parameters owning characters) which make it easier to link tile state to character.
Another trick would be to separate time into frequencies, with lower frequencies state informing higher frequencies. Also character are kind of predictable, they need to sleep, eat and have some sort of occupations, all of that daily, they also age predictably in a fixed sequence, which give pattern for procedural solving. As environment impact character we can also infer his behavior and presence in a tile, and relation can be deduce from "collision" of character generation in the same tile (almost because we should be able to infer relationship without solving the tile, so relation is the hardest to solve with local procedurality).
I wonder if any people have idea to ameliorate the concept, the great thing with procedural generation is to see it as an implicit storage and virtual memory access.
I post this here because it might be more fit to technical mind than design people. It is also a great thought challenge, I have a feeling there is a solution, it's like it's on the tip of my tongue but I can't "see it" yet! It is mostly not trying to generate the character by itself but as a result of parameter (aka you don't fill an empty structure that describe the character, rather the character is the result of intersecting parameters).
The image that keep popping in my mind is two intersecting parallel helix with different rotation direction and chirality, with a glowing point at each intersection being a character, the helix is deformed by noise along parameter space to determine the final constitution of the character. THAT'S WEIRD I KNOW, but some people will get it ... Even though this does not account for genealogies which is the hard stuff I'm not sure is possible. But basically you take a spatial tile, look at his parameter, confront it to another algorythm who map it's property to a generated social space and define the character, something like that.
edit:
additional thought to the seventh pargraph
"Almost" because we should be able to infer relationship without solving the tile, so relation is the hardest to solve with local procedurality as they rely on past events,any formula must have this past implicitly like intersections of function. Maybe we should find formulas that tend to aggregate into similar (conceptual) space for some time. Or maybe those intersection is precisely what need to be generated and from which we derive character.