Studio can handle a client and server simultaneously when you press the play button, so having multiple clients in a playmode session for testing seems feasible. Would be better than starting separate studio instances for the server and every player.
There could be a RunService.IsBot() to check if the script is being run by a bot and then give UserInputService methods to create and alter InputObjects.
I’m not sure about live games, though. It’d have to duplicate and replicate the DataModel on another thread and run local scripts. It would be more performant to put avatar functionality in a module and call it on an NPC.