public async Task RunLadder(ISharkyBot bot, Race myRace, int gamePort, int startPort, String opponentID) { await Connect(gamePort); var playerId = await JoinGameLadder(myRace, startPort); await Run(bot, playerId, opponentID); }
public async Task RunSinglePlayer(ISharkyBot bot, string map, Race myRace, Race opponentRace, Difficulty opponentDifficulty, AIBuild aIBuild) { readSettings(); StartSC2Instance(5678); await Connect(5678); await CreateGame(map, opponentRace, opponentDifficulty, aIBuild); var playerId = await JoinGame(myRace); await Run(bot, playerId, "test"); }
public async Task RunLadder(ISharkyBot bot, Race myRace, string[] args) { var clargs = new CLArgs(args); await RunLadder(bot, myRace, clargs.GamePort, clargs.StartPort, clargs.OpponentID); }
public async Task Run(ISharkyBot bot, uint playerId, string opponentID) { var gameInfoReq = new Request(); gameInfoReq.GameInfo = new RequestGameInfo(); var gameInfoResponse = await Proxy.SendRequest(gameInfoReq); var gameDataRequest = new Request(); gameDataRequest.Data = new RequestData(); gameDataRequest.Data.UnitTypeId = true; gameDataRequest.Data.AbilityId = true; gameDataRequest.Data.BuffId = true; gameDataRequest.Data.EffectId = true; gameDataRequest.Data.UpgradeId = true; var dataResponse = await Proxy.SendRequest(gameDataRequest); var pingResponse = await Ping(); var start = true; var observationRequest = new Request { Observation = new RequestObservation() }; var stepRequest = new Request { Step = new RequestStep { Count = 1 } }; double totalTime = 0; int frames = 0; double specificTime = 0; int actionCount = 0; while (true) { var beginTotal = DateTime.UtcNow; if (!start) { await Proxy.SendRequest(stepRequest); } var begin = DateTime.UtcNow; var response = await Proxy.SendRequest(observationRequest); specificTime += (DateTime.UtcNow - begin).TotalMilliseconds; var observation = response.Observation; if (observation == null) { bot.OnEnd(observation, Result.Undecided); break; } if (response.Status == Status.Ended || response.Status == Status.Quit) { bot.OnEnd(observation, observation.PlayerResult[(int)playerId - 1].Result); break; } if (start) { start = false; bot.OnStart(gameInfoResponse.GameInfo, dataResponse.Data, pingResponse, observation, playerId, opponentID); } var actions = bot.OnFrame(observation); var actionRequest = new Request(); actionRequest.Action = new RequestAction(); actionRequest.Action.Actions.AddRange(actions); if (actionRequest.Action.Actions.Count > 0) { await Proxy.SendRequest(actionRequest); actionCount += actionRequest.Action.Actions.Count; } var frameTotal = (DateTime.UtcNow - beginTotal).TotalMilliseconds; totalTime += frameTotal; frames++; } }