public override void Step() { NotifyServerDataReceived(); string jsonData = _communicator.ReceiveFromServer(); AgentMessage message = JsonConvert.DeserializeObject <AgentMessage>(jsonData); AgentStepMessage stepMsg = _env.Step((Action)message.Action); string stepData = JsonConvert.SerializeObject(stepMsg, Formatting.Indented); SendDataBytesToServer(Encoding.ASCII.GetBytes(stepData)); SendDataBytesToServer(_env.GetEnvironmentImageBytes()); }
private void Update() { #if UNITY_EDITOR || UNITY_STANDALONE AgentStepMessage msg = null; if (Input.GetKeyDown(KeyCode.LeftArrow)) { msg = _env.Step(Action.Left); } else if (Input.GetKeyDown(KeyCode.RightArrow)) { msg = _env.Step(Action.Right); } else if (Input.GetKeyDown(KeyCode.UpArrow)) { msg = _env.Step(Action.Up); } else if (Input.GetKeyDown(KeyCode.DownArrow)) { msg = _env.Step(Action.Down); } else if (Input.GetKeyDown(KeyCode.Space)) { _env.ResetEnv(); } else if (Input.GetKeyDown(KeyCode.Tab)) { #if ENABLE_TENSORFLOW _env.AIStep(); #endif } if (msg != null) { Logger.Print("Reward: {0} IsDone: {1}", msg.Reward, msg.IsDone); if (msg.IsDone) { _env.ResetEnv(); } } #endif scoreText.text = _env.TotalReward.ToString(); }
public AgentStepMessage Step(Action action) { if (_agent == null) { return(null); } switch (action) { case Action.Up: MoveUp(); break; case Action.Down: MoveDown(); break; case Action.Left: MoveLeft(); break; case Action.Right: MoveRight(); break; default: break; } _currMoveSteps += 1; InnerState state = GetCurrentState(); AgentStepMessage msg = new AgentStepMessage { Reward = state.reward, IsDone = state.isDone }; TotalReward += msg.Reward; _prevAgentPos = _agent.transform.position; ClearColliderObj(state.colliderObj); return(msg); }