The Case of the Fake Database
Created on 2023-08-04T00:10:17-05:00
Using a single numeric ID to identify an actor in an infinitely large population.
The ID is then used along with procedural generation to create a single identity with various details.
A "total ordering" of records is created by their ID number. If 90% of a population is A and 10% is B, then the IDs are sorted such that 1-90 are A and 91-100 are B.
This trick is combined in some way with all other attributes to be generated. So looking at the ID number tells you where in each distribution the NPC "rolled" membership within.
The fake database can be "queried" by asking for certain statistics. It will reverse the qualifications to find, based on probability distributions, what actor IDs would generate those qualifications.
Parameters are specified by a tag and a probability. So you set them as 50% "male" or 50% "female." Or 25% "criminal."
Parameters can be conditioned. For example the probability of being married, while "child," is 0%.
Responses for queries give "thickets" which are arrays of ID ranges.
Individual attributes are only produced when accessed.
Question: with the spouse generator, how does that work? both records have to point at one another in some way.
Apparently its done by having marriage be an attribute. Then men and women are sorted in to A/B groups as before. To find the exact spouses: find the index of an actor in the married female set, and go to the same name in the married male set, to create the bidirectional relationships.