private async Task Run(AIService aiService, uint playerId) { var gameInfoReq = new Request(); gameInfoReq.GameInfo = new RequestGameInfo(); var gameInfoResponse = await proxy.SendRequest(gameInfoReq); var dataReq = new Request(); dataReq.Data = new RequestData(); dataReq.Data.UnitTypeId = true; dataReq.Data.AbilityId = true; dataReq.Data.BuffId = true; dataReq.Data.EffectId = true; dataReq.Data.UpgradeId = true; var dataResponse = await proxy.SendRequest(dataReq); Controller.gameInfo = gameInfoResponse.GameInfo; Controller.gameData = dataResponse.Data; if (Controller.gameInfo == null) { File.WriteAllText(@"D:\GitProjects\SC2-CSharpe-Starterkit\gameInfoResponse.json", JsonConvert.SerializeObject(gameInfoResponse)); } while (true) { var observationRequest = new Request(); observationRequest.Observation = new RequestObservation(); var response = await proxy.SendRequest(observationRequest); var observation = response.Observation; if (response.Status == Status.Ended || response.Status == Status.Quit) { break; } Controller.obs = observation; var actions = aiService.Frame(); var actionRequest = new Request(); actionRequest.Action = new RequestAction(); actionRequest.Action.Actions.AddRange(actions); if (actionRequest.Action.Actions.Count > 0) { await proxy.SendRequest(actionRequest); } var stepRequest = new Request(); stepRequest.Step = new RequestStep(); stepRequest.Step.Count = stepSize; await proxy.SendRequest(stepRequest); } }