Every entity has a relationship with /repsect to time/ with at least one other entity.
Every entity has a relationship with the economy.
Every entity must have three-dimensional path finding when they are on the present map.
Every entity must have problem solving when they are interacting with the player's hostile actions.
That first bulletpoint is remarkably descriptive of something i accomplished.
The second bulletpoint is up to the game designer. My economies are more emergent than anything formal you might have in mind.
The third point is I think a reflection we gamers have on the history of AAA games with hiccups in the pathing technology which makes the AI look mentally deficient.
I have to forfeit the final point. There are many ways to attempt a solution to a problem that I can't afford CPUwise.
The third and final questions of my OP allow me to account for optimization opportunities. But I also feel for the third question if the answer is infinite, like AGX-17 suggested, the dynamics can get out of control and distort intended gameplay.
@ManifestedISO
"Oh man, imagine truly an infinitely accurate and specifically detailed historical archive of readable data. "
We don't need infinity we just need better.
@anubite
"Nevermind that it would be very hard to write a linear sort of story for players in such a chaotic world as this."
In that case the game developer's job becomes to create a very good base for the game to start from. A history.
@Agx17
"Yes, my binary-code brain is fully capable and willing of accurately processing your AI constructs. Don't worry, Prosper, we all believe in you. We all know you're the one who's going to make the Matrix a reality."
I do have 98% of the work finished on my AI. The AI can fool you but I can't make an entire world that fools you.
@Walsingham
"I'm a people watcher, and am fascinated by people. I don't want a smart AI. I want live characters.
Check out a few Noel Coward plays, you'll see what I'm talking about."
Live characters are too human to play the role of every AI.
@BruceVC
"In the game this should be relevant to the lore"
Exactly. We don't need AI that capable of doing everything and anything in worlds they aren't apart of. Although later I have some pretty herp derp revelations for you guys about what should be possible in a well-balanced game.
@All
Interesting reads. The Dos and Donts are very important so I know what to spend my time on. Since you all have ideas about the AI, does that mean you want to design AI enabled party members? It would allow you to experiment with characters I wont necessarily think to add to the game.
Because I've officially given up trying to mod anything into Bethesda's games I'm going to share something i made on Tuesday when I was under the impression I had not given up.
struct SPosition2D
{
signed int X;
signed int Y;
};
struct SProperty
{
unsigned int Type;
signed int Value;
};
struct STime
{
std::string Name; // if empty, start and end is displayed only
unsigned int Start;
unsigned int End;
};
struct SSubject
{
unsigned int Type; // Time, Character, Object, Landmark, Cell, Region, Property
unsigned int IndexOfThing; // its index in SAllegedEvent
std::vector<unsigned int> Properties; // if size() == 0 then its refered to just as itself
std::vector<bool> ShowPropertyValue;
std::vector<unsigned int> Prepend; // text to introduce subject (this could be individual words and phrases)
std::vector<unsigned int> Postpend; // text to introduce after subject (this could be individual words and phrases)
};
struct SAllegedEvent
{
std::vector<STime*> Times; // name and timeline
std::vector<SCharacter*> Persons; // name
std::vector<SObject*> Objects; // name
std::vector<SLandmark*> Landmark; // name
std::vector<SCell*> Areas; // name
std::vector<SProperty*> Properties; // names
std::vector<SSubject> Testimony;
};
struct SHistory
{
std::vector<SAllegedEvent> Events;
};
struct SCharacter
{
std::string Name;
std::string Description;
SPosition2D Location;
std::vector<SProperty> Properties;
SCell* Area;
SRegion* Region;
SCell* HomeArea;
SRegion* HomeRegion;
SHistory HistoricalKnowledge;
// depending this character's properties and personal history it tells more or less
void Ask(SSubject* pSubject, SCharacter* whosAsking);
// Personal Thinking about a subject has results based on character's current goals
void Think(SSubject* pSubject);
};
struct SObject
{
std::string Name;
std::string Description;
SPosition2D Location;
std::vector<SProperty> Properties;
SCell* Area;
SRegion* Region;
SRegion* HomeRegion;
SCell* HomeArea;
// depeding on the character's perception and intelligence more or less is learned
void Examine(SCharacter* pExaminer);
};
struct SLandmark
{
std::string Name;
std::string Description;
SPosition2D Location;
std::vector<SProperty> Properties;
SCell* Area;
SRegion* Region;
// depeding on the character's perception and intelligence more or less is learned
void Examine(SCharacter* pExaminer);
};
struct SCell
{
std::string Name;
std::string Description;
SPosition2D Location;
SRegion* Region;
std::vector<SCharacter*> Entities;
std::vector<SObject*> Objects;
std::vector<SLandmark*> Landmarks;
};
struct SRegion
{
std::string Name;
std::string Description;
std::vector<SCell*> Cells;
std::vector<SCharacter*> Entities;
std::vector<SLandmark*> Landmarks;
};
* I didn't include my code for goals because that must be kept secret it's too close to my AI.
I'll explain the code after I get some pizza. This is unrelated to the AI but still pretty significant wrappings for gameplay.