Partial GameManager class, implements bot spawning. Provides a console command bot_add that when run on the host creates one or more GameObject PlayerData instances, assigns a GUID, name, incremental BotId, network-spawns them and calls SpawnPlayer on the manager.
public sealed partial class GameManager
{
private static int BotIdCounter = 0;
[ConCmd( "bot_add", ConVarFlags.Cheat )]
public static void SpawnBot( int count )
{
if ( !Networking.IsHost ) return;
for ( int i = 0; i < count; i++ )
{
int botId = BotIdCounter++;
string name = $"Bot - {botId}";
var go = new GameObject( true, $"PlayerInfo - {name}" );
var data = go.AddComponent<PlayerData>();
data.PlayerId = Guid.NewGuid();
data.DisplayName = name;
data.BotId = botId;
go.NetworkSpawn( null );
go.Network.SetOwnerTransfer( OwnerTransfer.Fixed );
Current.SpawnPlayer( data );
}
}
}