All right, lets get a bit technical shall we?
Conan Exiles has a very big world with everything running on one server.
The world has 6000+ NPCs roaming the world, not counting player thralls and pets. Actually, probably even more by now.
The simple fact is that running NPC behavior on all of these NPCs all the time on such a big world is not something current hardware can handle with UE4.
And it only gets worse when you add in players and their dynamic content, such as buildings, placeables, thralls and pets.
We have however done a lot of trickery to counter this. And the performance we have today is leaps improved from the early days. We are also constantly working on improving this and have more optimization coming with one of the next patches.
The “static world” that you are describing is part of a system we call the AI LOD (Level of Detail) system. Which turns down the amount of CPU resources an actor (Placeable, building or NPC) receives based on their proximity to a player.
Outside of a certain range they go into a suspended mode where they are not given any CPU cycles, and basically go into a sleeping mode.
We do this because there is, in most cases, no point in having the actor run at full speed without a player nearby. And we have “catch up” methods in place where they are needed to make sure they account for the suspended time.
Example: A crafting station.
The crafting station needs to tick and update the progress of whatever is being crafted at real time when a player is standing nearby, so that you can see the progress bar move if you are inspecting it, or see the fire in your furnace turn off the moment the crafting is done.
If a player can not even see the crafting station, it can do this much slower or even not at all. When a player returns to the area and wakes it up, it needs to catch up on X amount of minutes of work. And when you inspect it, you will see the same result as if you had been standing there for those X minutes. (The reality is slightly different, we run a few ticks of crafting here and there even if the player is not around).
PLEASE BE CAREFUL WITH THIS AND TRY AT YOUR OWN RISK:
If an admin wants to have some “fun” and see what happens when nothing is allowed to be suspended, and all logic will run at full speed and all NPCs will start roaming around, you can attempt this command: ForceAILOD 0
.
Could be a fun experiment for you to see what our optimizations have actually contributed on this front. You can turn it back on with ForceAILOD -1
. It’s very possible that you will not be able to do so, so be prepared to restart your server. This shouldn’t influence anything on the server per se.
tldr; NPCs remaining fully awake when players aren’t nearby is not worth no one being able to play.
However as mentioned, there are still more performance improvements to be made and coming your way