How much of the AI that we see is affected by general server performance?
TL;DRServer performance affects AI quite a bit, since calculations are spread over time and slow updates make social reactions, vision and ship aiming sluggish or off; server meshing is expected to help.
There is quite a bit. Maybe Andrea or Will can also talk about some examples with the spaceships. But for example, if you look at the bartender right now, let's take one social example. What sometimes happens is that he's reacting to you a bit slowly. And that happens because when the performance of the server goes down too much, it takes a bit of time for him to find, for example, where you are sitting and how to navigate to you, especially if there are lots of characters. I think the worst case scenario is something like 2,000 characters or 1,500 characters active at the same time on one server. And that is quite a lot. Basically, to not go too heavy on the server, we of course distribute calculations over time, but that means that if you have so many requests at the same time, it just takes more time to receive the results. So of course server meshing is going to be beneficial for that. Some other stuff we see is the reaction time. In the FPS combat that Dan just mentioned, let's mention how we handle vision. Vision is physical vision. So you can really tell if a character there is seeing in that type of environment, like the player. But even that one is a distributed calculation. So you have a sort of cached information that you persist inside your perception system, and it updates every time it can. And if the player just pops out and it's not updating in that case, of course it's not that fast. We introduced some stuff like, for example, having priorities for people next to the player and stuff like this. But when the server is really heavy, with too much usage, then of course it's not that easy to make it as snappy as it would be in a single player experience.
Yeah, this is the same for ship AI. Imagine combat, a dogfight, when the AI and the player are very close to each other. The AI needs to continuously update its aiming position and its trajectory, because it changes continuously. And it wants to maybe orbit around the target, which can be the player or another AI. If the update is slow, then with every new update the relative position of the ships will be really different. So you will notice maybe the look direction or the gun direction is really off where it should not be. For example, William did some work on the accuracy for ship AI, for pilots. The accuracy basically simulates the aiming skill of the pilot or the gunner, and it updates over time. So the longer you are aiming at your target, the better you are; you have a higher chance to hit. And if the frame rate is too slow, this will never happen, basically. So the aiming will always be off, a bit behind, a bit higher, maybe depending on the strategy. Convergence will take a lot more.
If the frame rate is low... it's not based on the frame rate, obviously. It's not like per tick you add this much, but it's...
It's not based on the tick, it's really based on the time, but still, if you have one update per second, the player does so much, because the player is not updating one time per second. The player on his client is super snappy, and it's like, oh, I see it there. Now it's over there. Now it's over there. It's just really hard for the AI to find a great solution when the performance is very low, of course. When the performance is medium, then it's a different thing. We also have these updates on the behaviors: when things are a bit far, we update less; when things are closer, we update more often. Of course not everything is implemented yet, but we want to have better weighting of what is the action, what is the important thing that we need to update as well.