Howdy Kyunh, that sounds like one way, and how I have thought about implementing AI.
Have another “AI server” as a client, that perhaps receives less network updates than normal clients from the main server. Allowing just AI calculations on AI-Client, to then send consolidated movement data to the main host who accepts it as authoritative. … and then replicates out to all the human-player clients those updates plus the client update data.
This would allow for AI, and anything else, to be stripped off the host server to other applications/servers… but then you start to battle latency! Latency on AI calculations would not be due ONLY to the server load, but rather the server load, plus network load, plus network latency, and then plus the AI server load as well. All this can be adjusted for… but will be needed to.
An AI-Host-Client would take up a server “slot” but the player “slots” do not have a hard-coded limit of 16. You can adjust the player max above 16 via the console and also configs files, the recommendation is around 16 clients, due to the current network implementation and what gets sent to all clients (all data from all clients.)
Unity mentioned working on improving this shortly, to allow for much more than 16 players with good performance, by limiting what server updates are seen/sent to each connected client to just what they need to see/update. Instead of send ALL updates to all connected clients. This hopefully will allow for area-of-affect network updates, and so perhaps, unlimited player count… but with a soon network update.
So I am working a bit more on other items, waiting on this network update, until I have to…
Otherwise, you could run a script in the client/server to act as AI… All depends what you need to do. 1000 AI agents, or just 2-3 AI… could drive different implementations. A script on the server/client would then just update AI actions off some type of network update to sync the AI movements. Which is something we will need to figure out how to mod-into the network updates sent to all clients. Really, firing a gun and syncing a projectile has the basic needs for AI. Its checking if something happens constantly (input/collisions, ect,) and its up to you/that script, to twist and modify that basic system, to make people think the gun is thinking about shooting them, not just running a script to shoot them when triggers are hit…
Which is all it really is, triggers.
Good Luck, Have Fun.
Micah