See the answers of Tomáš “Vegeta” Plch from your questions now here:
There are many. The most fun stuff is when NPC’s start acting up, like orbiting other NPCs, playing silly animations or some physics acting poorly. One time the horse, when it hit water after death, flew away. Or the sheep drowning in a lake one by one.
It depends on the technical designers and how many they can script. From an AI standpoint, there is no limit
[quote=“kaiman, post:31, topic:29619”]
Even after nearly 25 years, Ultima VII is still my reference in open world NPC behaviour. Why is it that modern games constantly fail to achieve this level in simulating a living and breathing world (Dwarf Fortress aside)? Will KC:D do any better?[/quote]
To be honest, I never played the Ultima series, so I cannot put that reference in perspective. The problem in simulating a believable world is imho, the “Uncanny valley” problem. The graphics get so real that we naturally are more and more frustrated by the little indifference’s from real life behaviors. There is also the problem with an exponential growth of the possibilities when new stuff, NPC capabilities, etc are introduced. Lastly, the issue is computational power. More and more complex stuff requires a lot of computational power and the problems tend to explode (in a mathematical sense).
Why is KC:D better? We try to attempt a different approach to various stuff other games either did not do or did not manage to complete. We try to mimic various stuff that is present in our minds about our own thinking (humans thinking about thinking humans ). There are many novel things we came up with. You can read some of it up even in scientific articles we published. Anyhow, the problem with an open world is the actual contrast with it being a game and being a fun game.
As for being better, it really depends on what you compare it to. Commonly, AI in a shooter game is different from an open world AI.
Grey Knights, DeathWatch, Soul Drinkers, Imperial Fists
About the, “Far Away NPC” – our LOD system is rather complicated. Technical details may be boring, but there are two plains of LOD – a soft and a hard LOD. A soft LOD is script based, where our decision-making system tells the scripter the NPC is being LOD’ed thus he can change the structure of its behavior. The Hard LOD is at the level of the actual low level execution which is changed in respect to the LOD (NPCs stop playing animations and only execute effects, movement is more “teleport like” etc). But all in all, the NPC have all their abilities, they only “shut them down if not needed”.
NPCs are a complicated thing; they are actually very generic on the highest level of their decision making. The NPC fetches information from its relation to places and stuff in the world and from its schedule (which is a combination of a preset schedule and an emergent patching system). The NPCs can request a behavior injection from the environment, items, quests (intellect displacement) etc. which make it smarter, add abilities etc. The NPC knows only generic stuff and “grows” its intellect contextually based on its schedule.
Affiliations are based on our Faction system. But an NPC is in respect to its behavior made up from the relations to the environment (it’s a graph-based database), objects, quests etc. So a script can turn an NPC from something to something else, simply by changing its respective relations (e.g. a farmer goes to work to a field, removing the relation to the field and adding a relation to the guardhouse can turn him into a soldier).
Crimes are mainly the domain of the player, they are a fairly complex system, but in our world, the player is an NPC, thus NPCs may commit crimes. But to keep the world consistent, everybody behaves so it does not mess up the game.
We have no children, but a child NPC is not reduced, it just deals with different stuff (has a different schedule). For example, an animal has the same “logical” structure like a human, but also has a different job and different reactions.
I tend to sleep a lot, and when I was young, DBZ was very popular. I bear a lot of commonalities with that character (hair included).
There are many difficult things we are/were working on. One of the craziest things I did was a graph-query-language put into a tree-like structure. Another was the AI Action System that runs the actions that the NPCs do.
[quote=“Waldkauz, post:35, topic:29619”]
The AI programming seems like to be pure math, making it logical. […] Can we expect illogical decisions in the
AI is a broad field of science. There is the pure math crazy AI and then there is the soft AI for games (for example: believable, behavioral-simulation research I do). Math is only a language; logic is actually a philosophy marked up in weird symbols.
Behavioral psychology is a very novel field of science. And again – it’s humans thinking about thinking humans. Making a decision you cannot explain by reasoning does not mean it was not contextually correct. And yes, our NPCs do a lot of nonsensical decisions.
The basis of the language is Behavior Tree inspired. But some concepts are different. It’s a combination of Behavior Trees and Finite State Machines (at the node level). Every NPC receives a tree template and can extend it on the run from the environment. I haven’t studied the UE4’s implementation in detail, but there are some nice things that we can do in our BTs. But essentially, it’s a language like any other. What I’m proud of is the idea of putting behaviors into the environment (inspired by Sims) where a NPC can get their BTs extended based on the present context either from areas, objects, quests, whatever we “make smart”.
Sure, all my academic work is in English
If you want some intro into the basic ideas of our system, try to get hold of my master thesis, should be somewhere online.
The NPCs work differently from processing “parameters”. So there is always something the NPC can do. It always can rely on the “smart world” to get its “WTF happened” behavior.
Loosing sheep is actually not a logical exception; it is a situation that can be reasoned with. For example, the shepherd has a relation to every sheep in its herd. If they get home and he misses one, he goes and searches for it. If he is asleep and all his sheep are gone, he will go look for them.
We try to keep the behavior of NPCs consistent with actual reasoning of humans. But in most cases we avoid concurrency in NPC goals. If a goal may be concurrent, we have to think about how to solve it on a local level. If you imagine it, you solve your own “concurrent goals” from your local perspective or do only a very shallow reasoning about “who does who in Beverly Hills”. The player is only another NPC from our standpoint. If he does something, the world reacts, but it reacts in its well-structured way. But yes, the game design and the overall structure gets rather “explosive” if there are any conflicts. But you prepare your NPCs for that and they deal with it.
Radiant AI System got trashed because it was more in the planning area of AI. They did a goal-based system where they wanted to satisfy the needs of an NPC by combining various small plans. The issue is that if you have a computationally-complex problem, it’s rather unpredictable what it may come up with.
We go into a more structured way, where NPCs can have a high level planning system, but they rely on a structured view of the world. So we are very local in context, thus it can be more easily managed. The problem with “global problem solving” (i.e. Radiant) is that it often gets unmanageable. We are more about putting bits and pieces of knowledge together from the world, where the “local knowledge” is better than “global knowledge”.
But that is for a much longer talk. I would love to talk to guys at Bethesda about their AI systems…maybe someday.
A little. I tried to learn it but never had the time to get serious about it. I can make up basic stuff, if you’d like.