Kitty Cats and Artificial Intelligence
There is something I really enjoy about living things that isn’t well simulated in games quite yet. I noticed it earlier while lazing about with my wife and our cats. She was playing with a headband to catch their attention as they both sat nearby.
Artemis look at the headband and then around the room, presumably she was either unenthused or she was looking for areas of attack. Knowing our little huntress, either was plausible.
Venus on the other hand was staring at it with a great level of interest and her beautiful golden eyes focused in on it.
The same stimulus to two different cats, both standing roughly in the same place and looking at the same stimulus. But their response to the situation was different and varied. This is something that delights me deeply.
When you think about animals in a video game they tend to all act in the same pattern. The AI for them is universal across their species. The same can be said for human non-playable characters as well. These things all fall under one blanket and I think that’s our current hurdle.
Procedural generation is without a doubt in my mind the next stage of gaming. Graphics have hit their crescendo, the pinnacle of visual acuity is basically here and the costs are exponentially higher for exponentially lower returns.
But life, in essence, is procedural. Everything happens or does not happen because of a series of complimentary random events. Each one bounces off the next to create a harmony of largely unpredictable outcomes. Each person acts slightly different than the next, there are certain patterns that are more common and those do give us the illusion of herds, sameness, blandness.
But that’s not what is interesting, at least not for me at this exact moment, for me the excitement comes from the little chips on our statuettes. Those tiny differences that would make one of us run right in a gun fight and another run left.
I think artificial intelligence needs more randomness to it, not utterly unpredictable as that is not accurate either. But examining the organism we wish to simulate and gathering the likelihood of varying responses to stimuli.
On the most basic level having organisms belong to multiple AI routines even though they are port of the same macro level group. In the case of AI cats, create a base of macro traits. Playful, serious, defensive, avoidant, etc.
This way when you gather the npcs into an area they will act dynamically, not harmoniously but not entirely chaotic either.
This, to me, is the next stage of gaming. Creating believable worlds by building many profiles for organisms. Another thought is dynamism through scorecards.
In a Grand Theft Auto style game you could have default values for the NPC nodes, as these nodes commit to activities in the city they will earn points in various traits. Perhaps athleticism, aggressiveness, intelligence, and even things like wealth level. The scale can be fairly small and still get a good return.
A scale of –10 to +10 would probably be enough. Each action during a day would add or subtract points in each category and various daily activities would become more or less common by how far along the scale you are in either direction. A character with +8 points in health consciousness (or more simply intelligence) would be much less likely to eat at the local hotdog stand in Vice City than someone with –6.
A single trip to the library could add 1 point to Intelligence and raise likelihood of visiting again. Likewise if you have characters committing to activities that blow their income the activities they can participate in will become less and less legal and they are more likely to turn to crime. One they are part of the criminal underworld they are less and less likely to go back to being a normal citizen.
This, I think, wouldn’t require a fairly deep level of coding. The same routine can run for every character and would simply be a large number of if then loops. You could pause every npc outside of a certain radius around the playable character. This would greatly reduce the CPU load without actually depreciating the simulation. Perhaps each time the player saves their game the routine would simulate a full day worth of activities for the entire population to help keep the game dynamic.
Adding reproduction and life cycles to this could create a self contained evolving environment. Anytime you wished to deepen the simulation you’d just find another activity, set up score values, and add them to the IF/Then routine. Modulation is king here.
In the end this is the case with all of us. Each action we commit to adds or subtracts from the likelihood that we will do various things. It’s still certainly free will but a free will that we reinforce through operant conditioning.
I’m slightly tempted to try and build something like this with little squares as people. Just as a proof of concept.
One goes left and the other right.
Slight variations make all the difference.