def load_grid(agent): wait_time = 0 keeper = TimeKeeper() while wait_time < 10: #sys.stdout.write(".") world_state = agent.getWorldState() if not world_state.is_mission_running: return None if len(world_state.errors) > 0: raise AssertionError('Could not load grid.') if world_state.number_of_observations_since_last_state > 0 and \ json.loads(world_state.observations[-1].text): result = json.loads(world_state.observations[-1].text) result["time"] = time.time() return result keeper.advance_by(0.05) wait_time += 0.05
#Run shooter ticks if target exists #agent step if initial_delay > 0: initial_delay -= 1 else: if shoot_agent.shooter_step(shooter_obs, move_agent, target): #Change mover direction my_mission.ai_toggle(move_agent, target.transform) my_mission.ai_step(move_agent, target.transform) #If shoot agent hits target, end mission early if shoot_agent.end_mission: print("Ending mission early...") break keeper.advance_by(0.05) print() print("Mission ended") if shoot_agent.total_shots > 0: print("Mission Accuracy: {}/{} -- {}".format( shoot_agent.mission_hits, shoot_agent.mission_shots, (shoot_agent.mission_hits * 1.0 / shoot_agent.mission_shots))) print("Total Accuracy: {}/{} -- {}".format( shoot_agent.total_hits, shoot_agent.total_shots, (shoot_agent.total_hits * 1.0 / shoot_agent.total_shots))) mission_accuracies.append(shoot_agent.mission_hits * 1.0 / shoot_agent.mission_shots) else: mission_accuracies.append(0) # Mission has ended.