A late recommendation. I use hundred of AI controlled NPC´s with behavior tree and perceptions. To make this to work without network and server performance hit, some actions have to be taken.
- Use NPC trigger volume, telling players are around, and enable/disable AI accordingly.
- Enable/Disable AI with SpawnDefaultController/Unposses.
- Hide disabled NPC´s.
- Enable/Disable ticks for NPC and all it´s components.
- Set NPC mesh draw distance.
- Consider to disable dedicated server tick´s and set tick interval to other then zero.
- Sometimes you may have a low rate timer to replicate values instead of movement replication.
- Let client do calculation along with server for smooth effect, server correct client with low replication rate. i.e. a ship increase/decrease speed according to +/- difference from server.