diff --git a/idl/service.proto b/idl/service.proto index 98608ab..1519b88 100644 --- a/idl/service.proto +++ b/idl/service.proto @@ -1,3 +1,5 @@ +// version 0 + syntax = "proto3"; package protos; @@ -758,6 +760,7 @@ message HeliosChainAction { bool simple_pass = 7; bool simple_dribble = 8; bool simple_shoot = 9; + bool server_side_decision = 10; } message HeliosBasicOffensive {} @@ -836,6 +839,7 @@ message PlayerAction { HeliosSetPlay helios_set_play = 62; HeliosPenalty helios_penalty = 63; HeliosCommunicaion helios_communication = 64; + } } @@ -1202,6 +1206,59 @@ message PlayerType { float player_speed_max = 34; } +enum RpcActionCategory { + AC_Hold = 0; + AC_Dribble = 1; + AC_Pass = 2; + AC_Shoot = 3; + AC_Clear = 4; + AC_Move = 5; + AC_NoAction = 6; +} +message RpcCooperativeAction { + RpcActionCategory category = 1; + int32 index = 2; + int32 sender_unum = 3; + int32 target_unum = 4; + RpcVector2D target_point = 5; + double first_ball_speed = 6; + double first_turn_moment = 7; + double first_dash_power = 8; + double first_dash_angle_relative = 9; + int32 duration_step = 10; + int32 kick_count = 11; + int32 turn_count = 12; + int32 dash_count = 13; + bool final_action = 14; + string description = 15; + int32 parent_index = 16; +} + +message RpcPredictState { + int32 spend_time = 1; + int32 ball_holder_unum = 2; + RpcVector2D ball_position = 3; + RpcVector2D ball_velocity = 4; + double our_defense_line_x = 5; + double our_offense_line_x = 6; +} + +message RpcActionState { + RpcCooperativeAction action = 1; + RpcPredictState predict_state = 2; + double evaluation = 3; +} + +message BestPlannerActionRequest { + RegisterResponse register_response = 1; + map pairs = 2; + State state = 3; +} + +message BestPlannerActionResponse { + int32 index = 1; +} + message Empty { } @@ -1215,4 +1272,5 @@ service Game { rpc SendPlayerType(PlayerType) returns (Empty) {} //should be PlayerTypes rpc Register(RegisterRequest) returns (RegisterResponse) {} rpc SendByeCommand(RegisterResponse) returns (Empty) {} + rpc GetBestPlannerAction(BestPlannerActionRequest) returns (BestPlannerActionResponse) {} } \ No newline at end of file diff --git a/server.py b/server.py index 38474db..64fe003 100644 --- a/server.py +++ b/server.py @@ -11,7 +11,6 @@ logging.basicConfig(level=logging.DEBUG) - class GrpcAgent: def __init__(self, agent_type, uniform_number) -> None: self.agent_type: pb2.AgentType = agent_type @@ -43,7 +42,9 @@ def GetPlayerActions(self, state: pb2.State): long_dribble=True, simple_shoot=True, simple_dribble=True, - cross=True))) + cross=True, + server_side_decision=False + ))) else: actions.append(pb2.PlayerAction(helios_basic_move=pb2.HeliosBasicMove())) else: @@ -125,15 +126,15 @@ def Register(self, register_request: pb2.RegisterRequest, context): f"agent_type: {register_request.agent_type}") with self.shared_lock: self.shared_number_of_connections.value += 1 - logging.debug(f"Number of connections {self.shared_number_of_connections.value}") - team_name = register_request.team_name - uniform_number = register_request.uniform_number - agent_type = register_request.agent_type - self.agents[self.shared_number_of_connections.value] = GrpcAgent(agent_type, uniform_number) - res = pb2.RegisterResponse(client_id=self.shared_number_of_connections.value, - team_name=team_name, - uniform_number=uniform_number, - agent_type=agent_type) + logging.debug(f"Number of connections {self.shared_number_of_connections.value}") + team_name = register_request.team_name + uniform_number = register_request.uniform_number + agent_type = register_request.agent_type + self.agents[self.shared_number_of_connections.value] = GrpcAgent(agent_type, uniform_number) + res = pb2.RegisterResponse(client_id=self.shared_number_of_connections.value, + team_name=team_name, + uniform_number=uniform_number, + agent_type=agent_type) return res def SendByeCommand(self, register_response: pb2.RegisterResponse, context): @@ -143,6 +144,15 @@ def SendByeCommand(self, register_response: pb2.RegisterResponse, context): res = pb2.Empty() return res + + def GetBestPlannerAction(self, pairs: pb2.BestPlannerActionRequest, context): + logging.debug(f"GetBestPlannerAction cycle:{pairs.state.world_model.cycle} pairs:{len(pairs.pairs)} unum:{pairs.state.register_response.uniform_number}") + pairs_list: list[int, pb2.RpcActionState] = [(k, v) for k, v in pairs.pairs.items()] + pairs_list.sort(key=lambda x: x[0]) + best_action = max(pairs_list, key=lambda x: -1000 if x[1].action.parent_index != -1 else x[1].predict_state.ball_position.x) + logging.debug(f"Best action: {best_action[0]} {best_action[1].action.description} to {best_action[1].action.target_unum} in ({round(best_action[1].action.target_point.x, 2)},{round(best_action[1].action.target_point.y, 2)}) e:{round(best_action[1].evaluation,2)}") + res = pb2.BestPlannerActionResponse(index=best_action[0]) + return res def serve(port, shared_lock, shared_number_of_connections): server = grpc.server(futures.ThreadPoolExecutor(max_workers=22)) diff --git a/service_pb2.py b/service_pb2.py index cd777cc..a5448d4 100644 --- a/service_pb2.py +++ b/service_pb2.py @@ -14,8 +14,7 @@ - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rservice.proto\x12\x06protos\"@\n\x0bRpcVector2D\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\x0c\n\x04\x64ist\x18\x03 \x01(\x02\x12\r\n\x05\x61ngle\x18\x04 \x01(\x02\"c\n\x0fRegisterRequest\x12%\n\nagent_type\x18\x01 \x01(\x0e\x32\x11.protos.AgentType\x12\x11\n\tteam_name\x18\x02 \x01(\t\x12\x16\n\x0euniform_number\x18\x03 \x01(\x05\"w\n\x10RegisterResponse\x12\x11\n\tclient_id\x18\x01 \x01(\x05\x12%\n\nagent_type\x18\x02 \x01(\x0e\x32\x11.protos.AgentType\x12\x11\n\tteam_name\x18\x03 \x01(\t\x12\x16\n\x0euniform_number\x18\x04 \x01(\x05\"\x98\x04\n\x04\x42\x61ll\x12%\n\x08position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12.\n\x11relative_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12+\n\x0eheard_position\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12%\n\x08velocity\x18\x05 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_velocity\x18\x06 \x01(\x0b\x32\x13.protos.RpcVector2D\x12+\n\x0eheard_velocity\x18\x07 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x11\n\tpos_count\x18\x08 \x01(\x05\x12\x16\n\x0eseen_pos_count\x18\t \x01(\x05\x12\x17\n\x0fheard_pos_count\x18\n \x01(\x05\x12\x11\n\tvel_count\x18\x0b \x01(\x05\x12\x16\n\x0eseen_vel_count\x18\x0c \x01(\x05\x12\x17\n\x0fheard_vel_count\x18\r \x01(\x05\x12\x12\n\nlost_count\x18\x0e \x01(\x05\x12\x13\n\x0bghost_count\x18\x0f \x01(\x05\x12\x16\n\x0e\x64ist_from_self\x18\x10 \x01(\x02\x12\x17\n\x0f\x61ngle_from_self\x18\x11 \x01(\x02\"\xb0\x06\n\x06Player\x12%\n\x08position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12+\n\x0eheard_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12%\n\x08velocity\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_velocity\x18\x05 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x11\n\tpos_count\x18\x06 \x01(\x05\x12\x16\n\x0eseen_pos_count\x18\x07 \x01(\x05\x12\x17\n\x0fheard_pos_count\x18\x08 \x01(\x05\x12\x11\n\tvel_count\x18\t \x01(\x05\x12\x16\n\x0eseen_vel_count\x18\n \x01(\x05\x12\x13\n\x0bghost_count\x18\x0b \x01(\x05\x12\x16\n\x0e\x64ist_from_self\x18\x0c \x01(\x02\x12\x17\n\x0f\x61ngle_from_self\x18\r \x01(\x02\x12\n\n\x02id\x18\x0e \x01(\x05\x12\x1a\n\x04side\x18\x0f \x01(\x0e\x32\x0c.protos.Side\x12\x16\n\x0euniform_number\x18\x10 \x01(\x05\x12\x1c\n\x14uniform_number_count\x18\x11 \x01(\x05\x12\x11\n\tis_goalie\x18\x12 \x01(\x08\x12\x16\n\x0e\x62ody_direction\x18\x13 \x01(\x02\x12\x1c\n\x14\x62ody_direction_count\x18\x14 \x01(\x05\x12\x16\n\x0e\x66\x61\x63\x65_direction\x18\x15 \x01(\x02\x12\x1c\n\x14\x66\x61\x63\x65_direction_count\x18\x16 \x01(\x05\x12\x1a\n\x12point_to_direction\x18\x17 \x01(\x02\x12 \n\x18point_to_direction_count\x18\x18 \x01(\x05\x12\x12\n\nis_kicking\x18\x19 \x01(\x08\x12\x16\n\x0e\x64ist_from_ball\x18\x1a \x01(\x02\x12\x17\n\x0f\x61ngle_from_ball\x18\x1b \x01(\x02\x12\x18\n\x10\x62\x61ll_reach_steps\x18\x1c \x01(\x05\x12\x13\n\x0bis_tackling\x18\x1d \x01(\x08\x12\x0f\n\x07type_id\x18\x1e \x01(\x05\"\xcf\x07\n\x04Self\x12%\n\x08position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12+\n\x0eheard_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12%\n\x08velocity\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_velocity\x18\x05 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x11\n\tpos_count\x18\x06 \x01(\x05\x12\x16\n\x0eseen_pos_count\x18\x07 \x01(\x05\x12\x17\n\x0fheard_pos_count\x18\x08 \x01(\x05\x12\x11\n\tvel_count\x18\t \x01(\x05\x12\x16\n\x0eseen_vel_count\x18\n \x01(\x05\x12\x13\n\x0bghost_count\x18\x0b \x01(\x05\x12\n\n\x02id\x18\x0c \x01(\x05\x12\x1a\n\x04side\x18\r \x01(\x0e\x32\x0c.protos.Side\x12\x16\n\x0euniform_number\x18\x0e \x01(\x05\x12\x1c\n\x14uniform_number_count\x18\x0f \x01(\x05\x12\x11\n\tis_goalie\x18\x10 \x01(\x08\x12\x16\n\x0e\x62ody_direction\x18\x11 \x01(\x02\x12\x1c\n\x14\x62ody_direction_count\x18\x12 \x01(\x05\x12\x16\n\x0e\x66\x61\x63\x65_direction\x18\x13 \x01(\x02\x12\x1c\n\x14\x66\x61\x63\x65_direction_count\x18\x14 \x01(\x05\x12\x1a\n\x12point_to_direction\x18\x15 \x01(\x02\x12 \n\x18point_to_direction_count\x18\x16 \x01(\x05\x12\x12\n\nis_kicking\x18\x17 \x01(\x08\x12\x16\n\x0e\x64ist_from_ball\x18\x18 \x01(\x02\x12\x17\n\x0f\x61ngle_from_ball\x18\x19 \x01(\x02\x12\x18\n\x10\x62\x61ll_reach_steps\x18\x1a \x01(\x05\x12\x13\n\x0bis_tackling\x18\x1b \x01(\x08\x12\x1f\n\x17relative_neck_direction\x18\x1c \x01(\x02\x12\x0f\n\x07stamina\x18\x1d \x01(\x02\x12\x13\n\x0bis_kickable\x18\x1e \x01(\x08\x12\x19\n\x11\x63\x61tch_probability\x18\x1f \x01(\x02\x12\x1a\n\x12tackle_probability\x18 \x01(\x02\x12\x18\n\x10\x66oul_probability\x18! \x01(\x02\x12%\n\nview_width\x18\" \x01(\x0e\x32\x11.protos.ViewWidth\x12\x0f\n\x07type_id\x18# \x01(\x05\x12\x11\n\tkick_rate\x18$ \x01(\x02\"\x94\x02\n\rInterceptInfo\x12\x30\n\x0b\x61\x63tion_type\x18\x01 \x01(\x0e\x32\x1b.protos.InterceptActionType\x12\x12\n\nturn_steps\x18\x02 \x01(\x05\x12\x12\n\nturn_angle\x18\x03 \x01(\x02\x12\x12\n\ndash_steps\x18\x04 \x01(\x05\x12\x12\n\ndash_power\x18\x05 \x01(\x02\x12\x10\n\x08\x64\x61sh_dir\x18\x06 \x01(\x02\x12\x30\n\x13\x66inal_self_position\x18\x07 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x17\n\x0f\x66inal_ball_dist\x18\x08 \x01(\x02\x12\x15\n\rfinal_stamina\x18\t \x01(\x02\x12\r\n\x05value\x18\n \x01(\x02\"\xde\x02\n\x0eInterceptTable\x12\x18\n\x10self_reach_steps\x18\x01 \x01(\x05\x12\"\n\x1a\x66irst_teammate_reach_steps\x18\x02 \x01(\x05\x12#\n\x1bsecond_teammate_reach_steps\x18\x03 \x01(\x05\x12\"\n\x1a\x66irst_opponent_reach_steps\x18\x04 \x01(\x05\x12#\n\x1bsecond_opponent_reach_steps\x18\x05 \x01(\x05\x12\x19\n\x11\x66irst_teammate_id\x18\x06 \x01(\x05\x12\x1a\n\x12second_teammate_id\x18\x07 \x01(\x05\x12\x19\n\x11\x66irst_opponent_id\x18\x08 \x01(\x05\x12\x1a\n\x12second_opponent_id\x18\t \x01(\x05\x12\x32\n\x13self_intercept_info\x18\n \x03(\x0b\x32\x15.protos.InterceptInfo\"\x91\n\n\nWorldModel\x12/\n\x0fintercept_table\x18\x01 \x01(\x0b\x32\x16.protos.InterceptTable\x12\x15\n\rour_team_name\x18\x02 \x01(\t\x12\x17\n\x0ftheir_team_name\x18\x03 \x01(\t\x12\x1e\n\x08our_side\x18\x04 \x01(\x0e\x32\x0c.protos.Side\x12 \n\x18last_set_play_start_time\x18\x05 \x01(\x05\x12\x1a\n\x04self\x18\x06 \x01(\x0b\x32\x0c.protos.Self\x12\x1a\n\x04\x62\x61ll\x18\x07 \x01(\x0b\x32\x0c.protos.Ball\x12!\n\tteammates\x18\x08 \x03(\x0b\x32\x0e.protos.Player\x12!\n\topponents\x18\t \x03(\x0b\x32\x0e.protos.Player\x12 \n\x08unknowns\x18\n \x03(\x0b\x32\x0e.protos.Player\x12@\n\x10our_players_dict\x18\x0b \x03(\x0b\x32&.protos.WorldModel.OurPlayersDictEntry\x12\x44\n\x12their_players_dict\x18\x0c \x03(\x0b\x32(.protos.WorldModel.TheirPlayersDictEntry\x12!\n\x19our_goalie_uniform_number\x18\r \x01(\x05\x12#\n\x1btheir_goalie_uniform_number\x18\x0e \x01(\x05\x12\x16\n\x0eoffside_line_x\x18\x0f \x01(\x02\x12\x1b\n\x13ofside_line_x_count\x18\x10 \x01(\x05\x12\x1c\n\x14kickable_teammate_id\x18\x11 \x01(\x05\x12\x1c\n\x14kickable_opponent_id\x18\x12 \x01(\x05\x12$\n\x0elast_kick_side\x18\x13 \x01(\x0e\x32\x0c.protos.Side\x12\"\n\x1alast_kicker_uniform_number\x18\x14 \x01(\x05\x12\r\n\x05\x63ycle\x18\x15 \x01(\x05\x12,\n\x0egame_mode_type\x18\x16 \x01(\x0e\x32\x14.protos.GameModeType\x12\x17\n\x0fleft_team_score\x18\x17 \x01(\x05\x12\x18\n\x10right_team_score\x18\x18 \x01(\x05\x12\x17\n\x0fis_our_set_play\x18\x19 \x01(\x08\x12\x19\n\x11is_their_set_play\x18\x1a \x01(\x08\x12\x14\n\x0cstoped_cycle\x18\x1b \x01(\x05\x12\x16\n\x0eour_team_score\x18\x1c \x01(\x05\x12\x18\n\x10their_team_score\x18\x1d \x01(\x05\x12\x1c\n\x14is_penalty_kick_mode\x18\x1e \x01(\x08\x12J\n\x15helios_home_positions\x18\x1f \x03(\x0b\x32+.protos.WorldModel.HeliosHomePositionsEntry\x1a\x45\n\x13OurPlayersDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.protos.Player:\x02\x38\x01\x1aG\n\x15TheirPlayersDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.protos.Player:\x02\x38\x01\x1aO\n\x18HeliosHomePositionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D:\x02\x38\x01\"\xac\x01\n\x05State\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\x12\'\n\x0bworld_model\x18\x02 \x01(\x0b\x32\x12.protos.WorldModel\x12,\n\x10\x66ull_world_model\x18\x03 \x01(\x0b\x32\x12.protos.WorldModel\x12\x17\n\x0fneed_preprocess\x18\x04 \x01(\x08\"V\n\x0bInitMessage\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\x12\x12\n\ndebug_mode\x18\x02 \x01(\x08\"1\n\x04\x44\x61sh\x12\r\n\x05power\x18\x01 \x01(\x02\x12\x1a\n\x12relative_direction\x18\x02 \x01(\x02\"\"\n\x04Turn\x12\x1a\n\x12relative_direction\x18\x01 \x01(\x02\"1\n\x04Kick\x12\r\n\x05power\x18\x01 \x01(\x02\x12\x1a\n\x12relative_direction\x18\x02 \x01(\x02\",\n\x06Tackle\x12\x14\n\x0cpower_or_dir\x18\x01 \x01(\x02\x12\x0c\n\x04\x66oul\x18\x02 \x01(\x08\"\x07\n\x05\x43\x61tch\"\x1c\n\x04Move\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\"\x1a\n\x08TurnNeck\x12\x0e\n\x06moment\x18\x01 \x01(\x02\"3\n\nChangeView\x12%\n\nview_width\x18\x01 \x01(\x0e\x32\x11.protos.ViewWidth\"e\n\x0b\x42\x61llMessage\x12*\n\rball_position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_velocity\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\"\xb3\x01\n\x0bPassMessage\x12\x1f\n\x17receiver_uniform_number\x18\x01 \x01(\x05\x12+\n\x0ereceiver_point\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_velocity\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\"F\n\x10InterceptMessage\x12\x0b\n\x03our\x18\x01 \x01(\x08\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12\r\n\x05\x63ycle\x18\x03 \x01(\x05\"{\n\rGoalieMessage\x12\x1d\n\x15goalie_uniform_number\x18\x01 \x01(\x05\x12,\n\x0fgoalie_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1d\n\x15goalie_body_direction\x18\x03 \x01(\x02\"\xd1\x01\n\x16GoalieAndPlayerMessage\x12\x1d\n\x15goalie_uniform_number\x18\x01 \x01(\x05\x12,\n\x0fgoalie_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1d\n\x15goalie_body_direction\x18\x03 \x01(\x02\x12\x1d\n\x15player_uniform_number\x18\x04 \x01(\x05\x12,\n\x0fplayer_position\x18\x05 \x01(\x0b\x32\x13.protos.RpcVector2D\",\n\x12OffsideLineMessage\x12\x16\n\x0eoffside_line_x\x18\x01 \x01(\x02\",\n\x12\x44\x65\x66\x65nseLineMessage\x12\x16\n\x0e\x64\x65\x66\x65nse_line_x\x18\x01 \x01(\x02\"\x14\n\x12WaitRequestMessage\"#\n\x0eSetplayMessage\x12\x11\n\twait_step\x18\x01 \x01(\x05\"?\n\x12PassRequestMessage\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\"!\n\x0eStaminaMessage\x12\x0f\n\x07stamina\x18\x01 \x01(\x02\"#\n\x0fRecoveryMessage\x12\x10\n\x08recovery\x18\x01 \x01(\x02\"2\n\x16StaminaCapacityMessage\x12\x18\n\x10stamina_capacity\x18\x01 \x01(\x02\"P\n\x0e\x44ribbleMessage\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x13\n\x0bqueue_count\x18\x02 \x01(\x05\"\xb8\x01\n\x11\x42\x61llGoalieMessage\x12*\n\rball_position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_velocity\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12,\n\x0fgoalie_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1d\n\x15goalie_body_direction\x18\x04 \x01(\x02\"Q\n\x10OnePlayerMessage\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12%\n\x08position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\"\xaa\x01\n\x10TwoPlayerMessage\x12\x1c\n\x14\x66irst_uniform_number\x18\x01 \x01(\x05\x12+\n\x0e\x66irst_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1d\n\x15second_uniform_number\x18\x03 \x01(\x05\x12,\n\x0fsecond_position\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\"\xf7\x01\n\x12ThreePlayerMessage\x12\x1c\n\x14\x66irst_uniform_number\x18\x01 \x01(\x05\x12+\n\x0e\x66irst_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1d\n\x15second_uniform_number\x18\x03 \x01(\x05\x12,\n\x0fsecond_position\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1c\n\x14third_uniform_number\x18\x05 \x01(\x05\x12+\n\x0ethird_position\x18\x06 \x01(\x0b\x32\x13.protos.RpcVector2D\"l\n\x0bSelfMessage\x12*\n\rself_position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1b\n\x13self_body_direction\x18\x02 \x01(\x02\x12\x14\n\x0cself_stamina\x18\x03 \x01(\x02\"h\n\x0fTeammateMessage\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12%\n\x08position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x16\n\x0e\x62ody_direction\x18\x03 \x01(\x02\"h\n\x0fOpponentMessage\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12%\n\x08position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x16\n\x0e\x62ody_direction\x18\x03 \x01(\x02\"\xc9\x01\n\x11\x42\x61llPlayerMessage\x12*\n\rball_position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_velocity\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x16\n\x0euniform_number\x18\x03 \x01(\x05\x12,\n\x0fplayer_position\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x16\n\x0e\x62ody_direction\x18\x05 \x01(\x02\"\xd0\t\n\x03Say\x12+\n\x0c\x62\x61ll_message\x18\x01 \x01(\x0b\x32\x13.protos.BallMessageH\x00\x12+\n\x0cpass_message\x18\x02 \x01(\x0b\x32\x13.protos.PassMessageH\x00\x12\x35\n\x11intercept_message\x18\x03 \x01(\x0b\x32\x18.protos.InterceptMessageH\x00\x12/\n\x0egoalie_message\x18\x04 \x01(\x0b\x32\x15.protos.GoalieMessageH\x00\x12\x43\n\x19goalie_and_player_message\x18\x05 \x01(\x0b\x32\x1e.protos.GoalieAndPlayerMessageH\x00\x12:\n\x14offside_line_message\x18\x06 \x01(\x0b\x32\x1a.protos.OffsideLineMessageH\x00\x12:\n\x14\x64\x65\x66\x65nse_line_message\x18\x07 \x01(\x0b\x32\x1a.protos.DefenseLineMessageH\x00\x12:\n\x14wait_request_message\x18\x08 \x01(\x0b\x32\x1a.protos.WaitRequestMessageH\x00\x12\x31\n\x0fsetplay_message\x18\t \x01(\x0b\x32\x16.protos.SetplayMessageH\x00\x12:\n\x14pass_request_message\x18\n \x01(\x0b\x32\x1a.protos.PassRequestMessageH\x00\x12\x31\n\x0fstamina_message\x18\x0b \x01(\x0b\x32\x16.protos.StaminaMessageH\x00\x12\x33\n\x10recovery_message\x18\x0c \x01(\x0b\x32\x17.protos.RecoveryMessageH\x00\x12\x42\n\x18stamina_capacity_message\x18\r \x01(\x0b\x32\x1e.protos.StaminaCapacityMessageH\x00\x12\x31\n\x0f\x64ribble_message\x18\x0e \x01(\x0b\x32\x16.protos.DribbleMessageH\x00\x12\x38\n\x13\x62\x61ll_goalie_message\x18\x0f \x01(\x0b\x32\x19.protos.BallGoalieMessageH\x00\x12\x36\n\x12one_player_message\x18\x10 \x01(\x0b\x32\x18.protos.OnePlayerMessageH\x00\x12\x36\n\x12two_player_message\x18\x11 \x01(\x0b\x32\x18.protos.TwoPlayerMessageH\x00\x12:\n\x14three_player_message\x18\x12 \x01(\x0b\x32\x1a.protos.ThreePlayerMessageH\x00\x12+\n\x0cself_message\x18\x13 \x01(\x0b\x32\x13.protos.SelfMessageH\x00\x12\x33\n\x10teammate_message\x18\x14 \x01(\x0b\x32\x17.protos.TeammateMessageH\x00\x12\x33\n\x10opponent_message\x18\x15 \x01(\x0b\x32\x17.protos.OpponentMessageH\x00\x12\x38\n\x13\x62\x61ll_player_message\x18\x16 \x01(\x0b\x32\x19.protos.BallPlayerMessageH\x00\x42\t\n\x07message\"\x1f\n\x07PointTo\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\"\x0b\n\tPointToOf\"7\n\x0b\x41ttentionTo\x12\x1a\n\x04side\x18\x01 \x01(\x0e\x32\x0c.protos.Side\x12\x0c\n\x04unum\x18\x02 \x01(\x05\"\x0f\n\rAttentionToOf\">\n\x07\x41\x64\x64Text\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\x0f\n\x07message\x18\x02 \x01(\t\"a\n\x08\x41\x64\x64Point\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\"\n\x05point\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\r\n\x05\x63olor\x18\x03 \x01(\t\"\x82\x01\n\x07\x41\x64\x64Line\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\"\n\x05start\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12 \n\x03\x65nd\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\r\n\x05\x63olor\x18\x04 \x01(\t\"\x99\x01\n\x06\x41\x64\x64\x41rc\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12#\n\x06\x63\x65nter\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x0e\n\x06radius\x18\x03 \x01(\x02\x12\x13\n\x0bstart_angle\x18\x04 \x01(\x02\x12\x12\n\nspan_angel\x18\x05 \x01(\x02\x12\r\n\x05\x63olor\x18\x06 \x01(\t\"\x81\x01\n\tAddCircle\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12#\n\x06\x63\x65nter\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x0e\n\x06radius\x18\x03 \x01(\x02\x12\r\n\x05\x63olor\x18\x04 \x01(\t\x12\x0c\n\x04\x66ill\x18\x05 \x01(\x08\"\xbd\x01\n\x0b\x41\x64\x64Triangle\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12#\n\x06point1\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12#\n\x06point2\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12#\n\x06point3\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\r\n\x05\x63olor\x18\x05 \x01(\t\x12\x0c\n\x04\x66ill\x18\x06 \x01(\x08\"\x89\x01\n\x0c\x41\x64\x64Rectangle\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\x0c\n\x04left\x18\x02 \x01(\x02\x12\x0b\n\x03top\x18\x03 \x01(\x02\x12\x0e\n\x06length\x18\x04 \x01(\x02\x12\r\n\x05width\x18\x05 \x01(\x02\x12\r\n\x05\x63olor\x18\x06 \x01(\t\x12\x0c\n\x04\x66ill\x18\x07 \x01(\x08\"\xc2\x01\n\tAddSector\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12#\n\x06\x63\x65nter\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x12\n\nmin_radius\x18\x03 \x01(\x02\x12\x12\n\nmax_radius\x18\x04 \x01(\x02\x12\x13\n\x0bstart_angle\x18\x05 \x01(\x02\x12\x12\n\nspan_angel\x18\x06 \x01(\x02\x12\r\n\x05\x63olor\x18\x07 \x01(\t\x12\x0c\n\x04\x66ill\x18\x08 \x01(\x08\"w\n\nAddMessage\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12%\n\x08position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\r\n\x05\x63olor\x18\x04 \x01(\t\"\xf9\x02\n\x03Log\x12#\n\x08\x61\x64\x64_text\x18\x01 \x01(\x0b\x32\x0f.protos.AddTextH\x00\x12%\n\tadd_point\x18\x02 \x01(\x0b\x32\x10.protos.AddPointH\x00\x12#\n\x08\x61\x64\x64_line\x18\x03 \x01(\x0b\x32\x0f.protos.AddLineH\x00\x12!\n\x07\x61\x64\x64_arc\x18\x04 \x01(\x0b\x32\x0e.protos.AddArcH\x00\x12\'\n\nadd_circle\x18\x05 \x01(\x0b\x32\x11.protos.AddCircleH\x00\x12+\n\x0c\x61\x64\x64_triangle\x18\x06 \x01(\x0b\x32\x13.protos.AddTriangleH\x00\x12-\n\radd_rectangle\x18\x07 \x01(\x0b\x32\x14.protos.AddRectangleH\x00\x12\'\n\nadd_sector\x18\x08 \x01(\x0b\x32\x11.protos.AddSectorH\x00\x12)\n\x0b\x61\x64\x64_message\x18\t \x01(\x0b\x32\x12.protos.AddMessageH\x00\x42\x05\n\x03log\"\x1e\n\x0b\x44\x65\x62ugClient\x12\x0f\n\x07message\x18\x01 \x01(\t\"o\n\x0e\x42ody_GoToPoint\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1a\n\x12\x64istance_threshold\x18\x02 \x01(\x02\x12\x16\n\x0emax_dash_power\x18\x03 \x01(\x02\"\x82\x01\n\x0e\x42ody_SmartKick\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x13\n\x0b\x66irst_speed\x18\x02 \x01(\x02\x12\x1d\n\x15\x66irst_speed_threshold\x18\x03 \x01(\x02\x12\x11\n\tmax_steps\x18\x04 \x01(\x05\"7\n\x11\x42hv_BeforeKickOff\x12\"\n\x05point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\"\x14\n\x12\x42hv_BodyNeckToBall\"9\n\x13\x42hv_BodyNeckToPoint\x12\"\n\x05point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\"\x0f\n\rBhv_Emergency\"v\n\x15\x42hv_GoToPointLookBall\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1a\n\x12\x64istance_threshold\x18\x02 \x01(\x02\x12\x16\n\x0emax_dash_power\x18\x03 \x01(\x02\"\'\n\x12\x42hv_NeckBodyToBall\x12\x11\n\tangle_buf\x18\x01 \x01(\x02\"L\n\x13\x42hv_NeckBodyToPoint\x12\"\n\x05point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x11\n\tangle_buf\x18\x02 \x01(\x02\"\x0f\n\rBhv_ScanField\"\x12\n\x10\x42ody_AdvanceBall\"\x10\n\x0e\x42ody_ClearBall\"\x8c\x01\n\x0c\x42ody_Dribble\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1a\n\x12\x64istance_threshold\x18\x02 \x01(\x02\x12\x12\n\ndash_power\x18\x03 \x01(\x02\x12\x12\n\ndash_count\x18\x04 \x01(\x05\x12\r\n\x05\x64odge\x18\x05 \x01(\x08\"T\n\x13\x42ody_GoToPointDodge\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x12\n\ndash_power\x18\x02 \x01(\x02\"\x80\x01\n\rBody_HoldBall\x12\x0f\n\x07\x64o_turn\x18\x01 \x01(\x08\x12.\n\x11turn_target_point\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12.\n\x11kick_target_point\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\"P\n\x0e\x42ody_Intercept\x12\x15\n\rsave_recovery\x18\x01 \x01(\x08\x12\'\n\nface_point\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\"f\n\x10\x42ody_KickOneStep\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x13\n\x0b\x66irst_speed\x18\x02 \x01(\x02\x12\x12\n\nforce_mode\x18\x03 \x01(\x08\"\x0f\n\rBody_StopBall\"&\n\rBody_StopDash\x12\x15\n\rsave_recovery\x18\x01 \x01(\x08\"k\n\x12\x42ody_TackleToPoint\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x17\n\x0fmin_probability\x18\x02 \x01(\x02\x12\x11\n\tmin_speed\x18\x03 \x01(\x02\"!\n\x10\x42ody_TurnToAngle\x12\r\n\x05\x61ngle\x18\x01 \x01(\x02\" \n\x0f\x42ody_TurnToBall\x12\r\n\x05\x63ycle\x18\x01 \x01(\x05\"L\n\x10\x42ody_TurnToPoint\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\r\n\x05\x63ycle\x18\x02 \x01(\x05\">\n\x11\x46ocus_MoveToPoint\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\"\r\n\x0b\x46ocus_Reset\"\x10\n\x0eNeck_ScanField\"\x12\n\x10Neck_ScanPlayers\"g\n\x18Neck_TurnToBallAndPlayer\x12\x1a\n\x04side\x18\x01 \x01(\x0e\x32\x0c.protos.Side\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12\x17\n\x0f\x63ount_threshold\x18\x03 \x01(\x05\"0\n\x15Neck_TurnToBallOrScan\x12\x17\n\x0f\x63ount_threshold\x18\x01 \x01(\x05\"\x11\n\x0fNeck_TurnToBall\"2\n\x17Neck_TurnToGoalieOrScan\x12\x17\n\x0f\x63ount_threshold\x18\x01 \x01(\x05\"\x1c\n\x1aNeck_TurnToLowConfTeammate\"f\n\x17Neck_TurnToPlayerOrScan\x12\x1a\n\x04side\x18\x01 \x01(\x0e\x32\x0c.protos.Side\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12\x17\n\x0f\x63ount_threshold\x18\x03 \x01(\x05\"=\n\x10Neck_TurnToPoint\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\"$\n\x13Neck_TurnToRelative\x12\r\n\x05\x61ngle\x18\x01 \x01(\x02\"9\n\x10View_ChangeWidth\x12%\n\nview_width\x18\x01 \x01(\x0e\x32\x11.protos.ViewWidth\"\r\n\x0bView_Normal\"\x0c\n\nView_Synch\"\x0b\n\tView_Wide\"\x0e\n\x0cHeliosGoalie\"\x12\n\x10HeliosGoalieMove\"\x12\n\x10HeliosGoalieKick\"\r\n\x0bHeliosShoot\"\xd0\x01\n\x11HeliosChainAction\x12\x13\n\x0b\x64irect_pass\x18\x01 \x01(\x08\x12\x11\n\tlead_pass\x18\x02 \x01(\x08\x12\x14\n\x0cthrough_pass\x18\x03 \x01(\x08\x12\x15\n\rshort_dribble\x18\x04 \x01(\x08\x12\x14\n\x0clong_dribble\x18\x05 \x01(\x08\x12\r\n\x05\x63ross\x18\x06 \x01(\x08\x12\x13\n\x0bsimple_pass\x18\x07 \x01(\x08\x12\x16\n\x0esimple_dribble\x18\x08 \x01(\x08\x12\x14\n\x0csimple_shoot\x18\t \x01(\x08\"\x16\n\x14HeliosBasicOffensive\"\x11\n\x0fHeliosBasicMove\"\x0f\n\rHeliosSetPlay\"\x0f\n\rHeliosPenalty\"\x14\n\x12HeliosCommunicaion\"\xe3\x19\n\x0cPlayerAction\x12\x1c\n\x04\x64\x61sh\x18\x01 \x01(\x0b\x32\x0c.protos.DashH\x00\x12\x1c\n\x04turn\x18\x02 \x01(\x0b\x32\x0c.protos.TurnH\x00\x12\x1c\n\x04kick\x18\x03 \x01(\x0b\x32\x0c.protos.KickH\x00\x12 \n\x06tackle\x18\x04 \x01(\x0b\x32\x0e.protos.TackleH\x00\x12\x1e\n\x05\x63\x61tch\x18\x05 \x01(\x0b\x32\r.protos.CatchH\x00\x12\x1c\n\x04move\x18\x06 \x01(\x0b\x32\x0c.protos.MoveH\x00\x12%\n\tturn_neck\x18\x07 \x01(\x0b\x32\x10.protos.TurnNeckH\x00\x12)\n\x0b\x63hange_view\x18\x08 \x01(\x0b\x32\x12.protos.ChangeViewH\x00\x12\x1a\n\x03say\x18\t \x01(\x0b\x32\x0b.protos.SayH\x00\x12#\n\x08point_to\x18\n \x01(\x0b\x32\x0f.protos.PointToH\x00\x12(\n\x0bpoint_to_of\x18\x0b \x01(\x0b\x32\x11.protos.PointToOfH\x00\x12+\n\x0c\x61ttention_to\x18\x0c \x01(\x0b\x32\x13.protos.AttentionToH\x00\x12\x30\n\x0f\x61ttention_to_of\x18\r \x01(\x0b\x32\x15.protos.AttentionToOfH\x00\x12\x1a\n\x03log\x18\x0e \x01(\x0b\x32\x0b.protos.LogH\x00\x12+\n\x0c\x64\x65\x62ug_client\x18\x0f \x01(\x0b\x32\x13.protos.DebugClientH\x00\x12\x32\n\x10\x62ody_go_to_point\x18\x10 \x01(\x0b\x32\x16.protos.Body_GoToPointH\x00\x12\x31\n\x0f\x62ody_smart_kick\x18\x11 \x01(\x0b\x32\x16.protos.Body_SmartKickH\x00\x12\x38\n\x13\x62hv_before_kick_off\x18\x12 \x01(\x0b\x32\x19.protos.Bhv_BeforeKickOffH\x00\x12;\n\x15\x62hv_body_neck_to_ball\x18\x13 \x01(\x0b\x32\x1a.protos.Bhv_BodyNeckToBallH\x00\x12=\n\x16\x62hv_body_neck_to_point\x18\x14 \x01(\x0b\x32\x1b.protos.Bhv_BodyNeckToPointH\x00\x12.\n\rbhv_emergency\x18\x15 \x01(\x0b\x32\x15.protos.Bhv_EmergencyH\x00\x12\x42\n\x19\x62hv_go_to_point_look_ball\x18\x16 \x01(\x0b\x32\x1d.protos.Bhv_GoToPointLookBallH\x00\x12;\n\x15\x62hv_neck_body_to_ball\x18\x17 \x01(\x0b\x32\x1a.protos.Bhv_NeckBodyToBallH\x00\x12=\n\x16\x62hv_neck_body_to_point\x18\x18 \x01(\x0b\x32\x1b.protos.Bhv_NeckBodyToPointH\x00\x12/\n\x0e\x62hv_scan_field\x18\x19 \x01(\x0b\x32\x15.protos.Bhv_ScanFieldH\x00\x12\x35\n\x11\x62ody_advance_ball\x18\x1a \x01(\x0b\x32\x18.protos.Body_AdvanceBallH\x00\x12\x31\n\x0f\x62ody_clear_ball\x18\x1b \x01(\x0b\x32\x16.protos.Body_ClearBallH\x00\x12,\n\x0c\x62ody_dribble\x18\x1c \x01(\x0b\x32\x14.protos.Body_DribbleH\x00\x12=\n\x16\x62ody_go_to_point_dodge\x18\x1d \x01(\x0b\x32\x1b.protos.Body_GoToPointDodgeH\x00\x12/\n\x0e\x62ody_hold_ball\x18\x1e \x01(\x0b\x32\x15.protos.Body_HoldBallH\x00\x12\x30\n\x0e\x62ody_intercept\x18\x1f \x01(\x0b\x32\x16.protos.Body_InterceptH\x00\x12\x36\n\x12\x62ody_kick_one_step\x18 \x01(\x0b\x32\x18.protos.Body_KickOneStepH\x00\x12/\n\x0e\x62ody_stop_ball\x18! \x01(\x0b\x32\x15.protos.Body_StopBallH\x00\x12/\n\x0e\x62ody_stop_dash\x18\" \x01(\x0b\x32\x15.protos.Body_StopDashH\x00\x12:\n\x14\x62ody_tackle_to_point\x18# \x01(\x0b\x32\x1a.protos.Body_TackleToPointH\x00\x12\x36\n\x12\x62ody_turn_to_angle\x18$ \x01(\x0b\x32\x18.protos.Body_TurnToAngleH\x00\x12\x34\n\x11\x62ody_turn_to_ball\x18% \x01(\x0b\x32\x17.protos.Body_TurnToBallH\x00\x12\x36\n\x12\x62ody_turn_to_point\x18& \x01(\x0b\x32\x18.protos.Body_TurnToPointH\x00\x12\x38\n\x13\x66ocus_move_to_point\x18\' \x01(\x0b\x32\x19.protos.Focus_MoveToPointH\x00\x12*\n\x0b\x66ocus_reset\x18( \x01(\x0b\x32\x13.protos.Focus_ResetH\x00\x12\x31\n\x0fneck_scan_field\x18) \x01(\x0b\x32\x16.protos.Neck_ScanFieldH\x00\x12\x35\n\x11neck_scan_players\x18* \x01(\x0b\x32\x18.protos.Neck_ScanPlayersH\x00\x12H\n\x1cneck_turn_to_ball_and_player\x18+ \x01(\x0b\x32 .protos.Neck_TurnToBallAndPlayerH\x00\x12\x42\n\x19neck_turn_to_ball_or_scan\x18, \x01(\x0b\x32\x1d.protos.Neck_TurnToBallOrScanH\x00\x12\x34\n\x11neck_turn_to_ball\x18- \x01(\x0b\x32\x17.protos.Neck_TurnToBallH\x00\x12\x46\n\x1bneck_turn_to_goalie_or_scan\x18. \x01(\x0b\x32\x1f.protos.Neck_TurnToGoalieOrScanH\x00\x12L\n\x1eneck_turn_to_low_conf_teammate\x18/ \x01(\x0b\x32\".protos.Neck_TurnToLowConfTeammateH\x00\x12\x46\n\x1bneck_turn_to_player_or_scan\x18\x30 \x01(\x0b\x32\x1f.protos.Neck_TurnToPlayerOrScanH\x00\x12\x36\n\x12neck_turn_to_point\x18\x31 \x01(\x0b\x32\x18.protos.Neck_TurnToPointH\x00\x12<\n\x15neck_turn_to_relative\x18\x32 \x01(\x0b\x32\x1b.protos.Neck_TurnToRelativeH\x00\x12\x35\n\x11view_change_width\x18\x33 \x01(\x0b\x32\x18.protos.View_ChangeWidthH\x00\x12*\n\x0bview_normal\x18\x34 \x01(\x0b\x32\x13.protos.View_NormalH\x00\x12(\n\nview_synch\x18\x35 \x01(\x0b\x32\x12.protos.View_SynchH\x00\x12&\n\tview_wide\x18\x36 \x01(\x0b\x32\x11.protos.View_WideH\x00\x12-\n\rhelios_goalie\x18\x37 \x01(\x0b\x32\x14.protos.HeliosGoalieH\x00\x12\x36\n\x12helios_goalie_move\x18\x38 \x01(\x0b\x32\x18.protos.HeliosGoalieMoveH\x00\x12\x36\n\x12helios_goalie_kick\x18\x39 \x01(\x0b\x32\x18.protos.HeliosGoalieKickH\x00\x12+\n\x0chelios_shoot\x18: \x01(\x0b\x32\x13.protos.HeliosShootH\x00\x12\x38\n\x13helios_chain_action\x18; \x01(\x0b\x32\x19.protos.HeliosChainActionH\x00\x12>\n\x16helios_basic_offensive\x18< \x01(\x0b\x32\x1c.protos.HeliosBasicOffensiveH\x00\x12\x34\n\x11helios_basic_move\x18= \x01(\x0b\x32\x17.protos.HeliosBasicMoveH\x00\x12\x30\n\x0fhelios_set_play\x18> \x01(\x0b\x32\x15.protos.HeliosSetPlayH\x00\x12/\n\x0ehelios_penalty\x18? \x01(\x0b\x32\x15.protos.HeliosPenaltyH\x00\x12:\n\x14helios_communication\x18@ \x01(\x0b\x32\x1a.protos.HeliosCommunicaionH\x00\x42\x08\n\x06\x61\x63tion\"Q\n\rPlayerActions\x12%\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x14.protos.PlayerAction\x12\x19\n\x11ignore_preprocess\x18\x02 \x01(\x08\"8\n\x10\x43hangePlayerType\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12\x0c\n\x04type\x18\x02 \x01(\x05\"\x14\n\x12\x44oHeliosSubstitute\"\x18\n\x16\x44oHeliosSayPlayerTypes\"\xd2\x01\n\x0b\x43oachAction\x12\x37\n\x13\x63hange_player_types\x18\x01 \x01(\x0b\x32\x18.protos.ChangePlayerTypeH\x00\x12:\n\x14\x64o_helios_substitute\x18\x02 \x01(\x0b\x32\x1a.protos.DoHeliosSubstituteH\x00\x12\x44\n\x1a\x64o_helios_say_player_types\x18\x03 \x01(\x0b\x32\x1e.protos.DoHeliosSayPlayerTypesH\x00\x42\x08\n\x06\x61\x63tion\"4\n\x0c\x43oachActions\x12$\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x13.protos.CoachAction\"\x0b\n\tDoKickOff\"Z\n\nDoMoveBall\x12%\n\x08position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12%\n\x08velocity\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\"w\n\x0c\x44oMovePlayer\x12\x10\n\x08our_side\x18\x01 \x01(\x08\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12%\n\x08position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x16\n\x0e\x62ody_direction\x18\x04 \x01(\x02\"\x0b\n\tDoRecover\"X\n\x0c\x44oChangeMode\x12,\n\x0egame_mode_type\x18\x01 \x01(\x0e\x32\x14.protos.GameModeType\x12\x1a\n\x04side\x18\x02 \x01(\x0e\x32\x0c.protos.Side\"L\n\x12\x44oChangePlayerType\x12\x10\n\x08our_side\x18\x01 \x01(\x08\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12\x0c\n\x04type\x18\x03 \x01(\x05\"\xb5\x02\n\rTrainerAction\x12(\n\x0b\x64o_kick_off\x18\x01 \x01(\x0b\x32\x11.protos.DoKickOffH\x00\x12*\n\x0c\x64o_move_ball\x18\x02 \x01(\x0b\x32\x12.protos.DoMoveBallH\x00\x12.\n\x0e\x64o_move_player\x18\x03 \x01(\x0b\x32\x14.protos.DoMovePlayerH\x00\x12\'\n\ndo_recover\x18\x04 \x01(\x0b\x32\x11.protos.DoRecoverH\x00\x12.\n\x0e\x64o_change_mode\x18\x05 \x01(\x0b\x32\x14.protos.DoChangeModeH\x00\x12;\n\x15\x64o_change_player_type\x18\x06 \x01(\x0b\x32\x1a.protos.DoChangePlayerTypeH\x00\x42\x08\n\x06\x61\x63tion\"8\n\x0eTrainerActions\x12&\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x15.protos.TrainerAction\"\xdd,\n\x0bServerParam\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\x12\x16\n\x0einertia_moment\x18\x02 \x01(\x02\x12\x13\n\x0bplayer_size\x18\x03 \x01(\x02\x12\x14\n\x0cplayer_decay\x18\x04 \x01(\x02\x12\x13\n\x0bplayer_rand\x18\x05 \x01(\x02\x12\x15\n\rplayer_weight\x18\x06 \x01(\x02\x12\x18\n\x10player_speed_max\x18\x07 \x01(\x02\x12\x18\n\x10player_accel_max\x18\x08 \x01(\x02\x12\x13\n\x0bstamina_max\x18\t \x01(\x02\x12\x17\n\x0fstamina_inc_max\x18\n \x01(\x02\x12\x14\n\x0crecover_init\x18\x0b \x01(\x02\x12\x17\n\x0frecover_dec_thr\x18\x0c \x01(\x02\x12\x13\n\x0brecover_min\x18\r \x01(\x02\x12\x13\n\x0brecover_dec\x18\x0e \x01(\x02\x12\x13\n\x0b\x65\x66\x66ort_init\x18\x0f \x01(\x02\x12\x16\n\x0e\x65\x66\x66ort_dec_thr\x18\x10 \x01(\x02\x12\x12\n\neffort_min\x18\x11 \x01(\x02\x12\x12\n\neffort_dec\x18\x12 \x01(\x02\x12\x16\n\x0e\x65\x66\x66ort_inc_thr\x18\x13 \x01(\x02\x12\x12\n\neffort_inc\x18\x14 \x01(\x02\x12\x11\n\tkick_rand\x18\x15 \x01(\x02\x12\x1b\n\x13team_actuator_noise\x18\x16 \x01(\x08\x12\x1c\n\x14player_rand_factor_l\x18\x17 \x01(\x02\x12\x1c\n\x14player_rand_factor_r\x18\x18 \x01(\x02\x12\x1a\n\x12kick_rand_factor_l\x18\x19 \x01(\x02\x12\x1a\n\x12kick_rand_factor_r\x18\x1a \x01(\x02\x12\x11\n\tball_size\x18\x1b \x01(\x02\x12\x12\n\nball_decay\x18\x1c \x01(\x02\x12\x11\n\tball_rand\x18\x1d \x01(\x02\x12\x13\n\x0b\x62\x61ll_weight\x18\x1e \x01(\x02\x12\x16\n\x0e\x62\x61ll_speed_max\x18\x1f \x01(\x02\x12\x16\n\x0e\x62\x61ll_accel_max\x18 \x01(\x02\x12\x17\n\x0f\x64\x61sh_power_rate\x18! \x01(\x02\x12\x17\n\x0fkick_power_rate\x18\" \x01(\x02\x12\x17\n\x0fkickable_margin\x18# \x01(\x02\x12\x16\n\x0e\x63ontrol_radius\x18$ \x01(\x02\x12\x1c\n\x14\x63ontrol_radius_width\x18% \x01(\x02\x12\x11\n\tmax_power\x18& \x01(\x02\x12\x11\n\tmin_power\x18\' \x01(\x02\x12\x12\n\nmax_moment\x18( \x01(\x02\x12\x12\n\nmin_moment\x18) \x01(\x02\x12\x17\n\x0fmax_neck_moment\x18* \x01(\x02\x12\x17\n\x0fmin_neck_moment\x18+ \x01(\x02\x12\x16\n\x0emax_neck_angle\x18, \x01(\x02\x12\x16\n\x0emin_neck_angle\x18- \x01(\x02\x12\x15\n\rvisible_angle\x18. \x01(\x02\x12\x18\n\x10visible_distance\x18/ \x01(\x02\x12\x10\n\x08wind_dir\x18\x30 \x01(\x02\x12\x12\n\nwind_force\x18\x31 \x01(\x02\x12\x12\n\nwind_angle\x18\x32 \x01(\x02\x12\x11\n\twind_rand\x18\x33 \x01(\x02\x12\x15\n\rkickable_area\x18\x34 \x01(\x02\x12\x14\n\x0c\x63\x61tch_area_l\x18\x35 \x01(\x02\x12\x14\n\x0c\x63\x61tch_area_w\x18\x36 \x01(\x02\x12\x19\n\x11\x63\x61tch_probability\x18\x37 \x01(\x02\x12\x18\n\x10goalie_max_moves\x18\x38 \x01(\x05\x12\x1a\n\x12\x63orner_kick_margin\x18\x39 \x01(\x02\x12 \n\x18offside_active_area_size\x18: \x01(\x02\x12\x11\n\twind_none\x18; \x01(\x08\x12\x17\n\x0fuse_wind_random\x18< \x01(\x08\x12\x1b\n\x13\x63oach_say_count_max\x18= \x01(\x05\x12\x1a\n\x12\x63oach_say_msg_size\x18> \x01(\x05\x12\x16\n\x0e\x63lang_win_size\x18? \x01(\x05\x12\x18\n\x10\x63lang_define_win\x18@ \x01(\x05\x12\x16\n\x0e\x63lang_meta_win\x18\x41 \x01(\x05\x12\x18\n\x10\x63lang_advice_win\x18\x42 \x01(\x05\x12\x16\n\x0e\x63lang_info_win\x18\x43 \x01(\x05\x12\x18\n\x10\x63lang_mess_delay\x18\x44 \x01(\x05\x12\x1c\n\x14\x63lang_mess_per_cycle\x18\x45 \x01(\x05\x12\x11\n\thalf_time\x18\x46 \x01(\x05\x12\x16\n\x0esimulator_step\x18G \x01(\x05\x12\x11\n\tsend_step\x18H \x01(\x05\x12\x11\n\trecv_step\x18I \x01(\x05\x12\x17\n\x0fsense_body_step\x18J \x01(\x05\x12\x10\n\x08lcm_step\x18K \x01(\x05\x12\x1b\n\x13player_say_msg_size\x18L \x01(\x05\x12\x17\n\x0fplayer_hear_max\x18M \x01(\x05\x12\x17\n\x0fplayer_hear_inc\x18N \x01(\x05\x12\x19\n\x11player_hear_decay\x18O \x01(\x05\x12\x17\n\x0f\x63\x61tch_ban_cycle\x18P \x01(\x05\x12\x18\n\x10slow_down_factor\x18Q \x01(\x05\x12\x13\n\x0buse_offside\x18R \x01(\x08\x12\x17\n\x0fkickoff_offside\x18S \x01(\x08\x12\x1b\n\x13offside_kick_margin\x18T \x01(\x02\x12\x16\n\x0e\x61udio_cut_dist\x18U \x01(\x02\x12\x1a\n\x12\x64ist_quantize_step\x18V \x01(\x02\x12#\n\x1blandmark_dist_quantize_step\x18W \x01(\x02\x12\x19\n\x11\x64ir_quantize_step\x18X \x01(\x02\x12\x1c\n\x14\x64ist_quantize_step_l\x18Y \x01(\x02\x12\x1c\n\x14\x64ist_quantize_step_r\x18Z \x01(\x02\x12%\n\x1dlandmark_dist_quantize_step_l\x18[ \x01(\x02\x12%\n\x1dlandmark_dist_quantize_step_r\x18\\ \x01(\x02\x12\x1b\n\x13\x64ir_quantize_step_l\x18] \x01(\x02\x12\x1b\n\x13\x64ir_quantize_step_r\x18^ \x01(\x02\x12\x12\n\ncoach_mode\x18_ \x01(\x08\x12\x1f\n\x17\x63oach_with_referee_mode\x18` \x01(\x08\x12\x1a\n\x12use_old_coach_hear\x18\x61 \x01(\x08\x12%\n\x1dslowness_on_top_for_left_team\x18\x62 \x01(\x02\x12&\n\x1eslowness_on_top_for_right_team\x18\x63 \x01(\x02\x12\x14\n\x0cstart_goal_l\x18\x64 \x01(\x05\x12\x14\n\x0cstart_goal_r\x18\x65 \x01(\x05\x12\x13\n\x0b\x66ullstate_l\x18\x66 \x01(\x08\x12\x13\n\x0b\x66ullstate_r\x18g \x01(\x08\x12\x16\n\x0e\x64rop_ball_time\x18h \x01(\x05\x12\x12\n\nsynch_mode\x18i \x01(\x08\x12\x14\n\x0csynch_offset\x18j \x01(\x05\x12\x19\n\x11synch_micro_sleep\x18k \x01(\x05\x12\x14\n\x0cpoint_to_ban\x18l \x01(\x05\x12\x19\n\x11point_to_duration\x18m \x01(\x05\x12\x13\n\x0bplayer_port\x18n \x01(\x05\x12\x14\n\x0ctrainer_port\x18o \x01(\x05\x12\x19\n\x11online_coach_port\x18p \x01(\x05\x12\x14\n\x0cverbose_mode\x18q \x01(\x08\x12\x1a\n\x12\x63oach_send_vi_step\x18r \x01(\x05\x12\x13\n\x0breplay_file\x18s \x01(\t\x12\x15\n\rlandmark_file\x18t \x01(\t\x12\x12\n\nsend_comms\x18u \x01(\x08\x12\x14\n\x0ctext_logging\x18v \x01(\x08\x12\x14\n\x0cgame_logging\x18w \x01(\x08\x12\x18\n\x10game_log_version\x18x \x01(\x05\x12\x14\n\x0ctext_log_dir\x18y \x01(\t\x12\x14\n\x0cgame_log_dir\x18z \x01(\t\x12\x1b\n\x13text_log_fixed_name\x18{ \x01(\t\x12\x1b\n\x13game_log_fixed_name\x18| \x01(\t\x12\x1a\n\x12use_text_log_fixed\x18} \x01(\x08\x12\x1a\n\x12use_game_log_fixed\x18~ \x01(\x08\x12\x1a\n\x12use_text_log_dated\x18\x7f \x01(\x08\x12\x1b\n\x12use_game_log_dated\x18\x80\x01 \x01(\x08\x12\x18\n\x0flog_date_format\x18\x81\x01 \x01(\t\x12\x12\n\tlog_times\x18\x82\x01 \x01(\x08\x12\x17\n\x0erecord_message\x18\x83\x01 \x01(\x08\x12\x1d\n\x14text_log_compression\x18\x84\x01 \x01(\x05\x12\x1d\n\x14game_log_compression\x18\x85\x01 \x01(\x05\x12\x14\n\x0buse_profile\x18\x86\x01 \x01(\x08\x12\x14\n\x0btackle_dist\x18\x87\x01 \x01(\x02\x12\x19\n\x10tackle_back_dist\x18\x88\x01 \x01(\x02\x12\x15\n\x0ctackle_width\x18\x89\x01 \x01(\x02\x12\x18\n\x0ftackle_exponent\x18\x8a\x01 \x01(\x02\x12\x16\n\rtackle_cycles\x18\x8b\x01 \x01(\x05\x12\x1a\n\x11tackle_power_rate\x18\x8c\x01 \x01(\x02\x12\x1d\n\x14\x66reeform_wait_period\x18\x8d\x01 \x01(\x05\x12\x1d\n\x14\x66reeform_send_period\x18\x8e\x01 \x01(\x05\x12\x19\n\x10\x66ree_kick_faults\x18\x8f\x01 \x01(\x08\x12\x14\n\x0b\x62\x61\x63k_passes\x18\x90\x01 \x01(\x08\x12\x1a\n\x11proper_goal_kicks\x18\x91\x01 \x01(\x08\x12\x19\n\x10stopped_ball_vel\x18\x92\x01 \x01(\x02\x12\x17\n\x0emax_goal_kicks\x18\x93\x01 \x01(\x05\x12\x16\n\rclang_del_win\x18\x94\x01 \x01(\x05\x12\x17\n\x0e\x63lang_rule_win\x18\x95\x01 \x01(\x05\x12\x12\n\tauto_mode\x18\x96\x01 \x01(\x08\x12\x16\n\rkick_off_wait\x18\x97\x01 \x01(\x05\x12\x15\n\x0c\x63onnect_wait\x18\x98\x01 \x01(\x05\x12\x17\n\x0egame_over_wait\x18\x99\x01 \x01(\x05\x12\x15\n\x0cteam_l_start\x18\x9a\x01 \x01(\t\x12\x15\n\x0cteam_r_start\x18\x9b\x01 \x01(\t\x12\x16\n\rkeepaway_mode\x18\x9c\x01 \x01(\x08\x12\x18\n\x0fkeepaway_length\x18\x9d\x01 \x01(\x02\x12\x17\n\x0ekeepaway_width\x18\x9e\x01 \x01(\x02\x12\x19\n\x10keepaway_logging\x18\x9f\x01 \x01(\x08\x12\x19\n\x10keepaway_log_dir\x18\xa0\x01 \x01(\t\x12 \n\x17keepaway_log_fixed_name\x18\xa1\x01 \x01(\t\x12\x1b\n\x12keepaway_log_fixed\x18\xa2\x01 \x01(\x08\x12\x1b\n\x12keepaway_log_dated\x18\xa3\x01 \x01(\x08\x12\x17\n\x0ekeepaway_start\x18\xa4\x01 \x01(\x05\x12\x18\n\x0fnr_normal_halfs\x18\xa5\x01 \x01(\x05\x12\x17\n\x0enr_extra_halfs\x18\xa6\x01 \x01(\x05\x12\x1b\n\x12penalty_shoot_outs\x18\xa7\x01 \x01(\x08\x12\x1e\n\x15pen_before_setup_wait\x18\xa8\x01 \x01(\x05\x12\x17\n\x0epen_setup_wait\x18\xa9\x01 \x01(\x05\x12\x17\n\x0epen_ready_wait\x18\xaa\x01 \x01(\x05\x12\x17\n\x0epen_taken_wait\x18\xab\x01 \x01(\x05\x12\x15\n\x0cpen_nr_kicks\x18\xac\x01 \x01(\x05\x12\x1c\n\x13pen_max_extra_kicks\x18\xad\x01 \x01(\x05\x12\x13\n\npen_dist_x\x18\xae\x01 \x01(\x02\x12\x1a\n\x11pen_random_winner\x18\xaf\x01 \x01(\x08\x12\x1d\n\x14pen_allow_mult_kicks\x18\xb0\x01 \x01(\x08\x12\x1e\n\x15pen_max_goalie_dist_x\x18\xb1\x01 \x01(\x02\x12 \n\x17pen_coach_moves_players\x18\xb2\x01 \x01(\x08\x12\x13\n\nmodule_dir\x18\xb3\x01 \x01(\t\x12\x18\n\x0f\x62\x61ll_stuck_area\x18\xb4\x01 \x01(\x02\x12\x17\n\x0e\x63oach_msg_file\x18\xb5\x01 \x01(\t\x12\x19\n\x10max_tackle_power\x18\xb6\x01 \x01(\x02\x12\x1e\n\x15max_back_tackle_power\x18\xb7\x01 \x01(\x02\x12\x1d\n\x14player_speed_max_min\x18\xb8\x01 \x01(\x02\x12\x16\n\rextra_stamina\x18\xb9\x01 \x01(\x02\x12\x19\n\x10synch_see_offset\x18\xba\x01 \x01(\x05\x12\x18\n\x0f\x65xtra_half_time\x18\xbb\x01 \x01(\x05\x12\x19\n\x10stamina_capacity\x18\xbc\x01 \x01(\x02\x12\x17\n\x0emax_dash_angle\x18\xbd\x01 \x01(\x02\x12\x17\n\x0emin_dash_angle\x18\xbe\x01 \x01(\x02\x12\x18\n\x0f\x64\x61sh_angle_step\x18\xbf\x01 \x01(\x02\x12\x17\n\x0eside_dash_rate\x18\xc0\x01 \x01(\x02\x12\x17\n\x0e\x62\x61\x63k_dash_rate\x18\xc1\x01 \x01(\x02\x12\x17\n\x0emax_dash_power\x18\xc2\x01 \x01(\x02\x12\x17\n\x0emin_dash_power\x18\xc3\x01 \x01(\x02\x12\x1b\n\x12tackle_rand_factor\x18\xc4\x01 \x01(\x02\x12 \n\x17\x66oul_detect_probability\x18\xc5\x01 \x01(\x02\x12\x16\n\rfoul_exponent\x18\xc6\x01 \x01(\x02\x12\x14\n\x0b\x66oul_cycles\x18\xc7\x01 \x01(\x05\x12\x14\n\x0bgolden_goal\x18\xc8\x01 \x01(\x08\x12\x1d\n\x14red_card_probability\x18\xc9\x01 \x01(\x02\x12!\n\x18illegal_defense_duration\x18\xca\x01 \x01(\x05\x12\x1f\n\x16illegal_defense_number\x18\xcb\x01 \x01(\x05\x12\x1f\n\x16illegal_defense_dist_x\x18\xcc\x01 \x01(\x02\x12\x1e\n\x15illegal_defense_width\x18\xcd\x01 \x01(\x02\x12\x19\n\x10\x66ixed_teamname_l\x18\xce\x01 \x01(\t\x12\x19\n\x10\x66ixed_teamname_r\x18\xcf\x01 \x01(\t\x12\x18\n\x0fmax_catch_angle\x18\xd0\x01 \x01(\x02\x12\x18\n\x0fmin_catch_angle\x18\xd1\x01 \x01(\x02\x12\x14\n\x0brandom_seed\x18\xd2\x01 \x01(\x05\x12\x1f\n\x16long_kick_power_factor\x18\xd3\x01 \x01(\x02\x12\x18\n\x0flong_kick_delay\x18\xd4\x01 \x01(\x05\x12\x15\n\x0cmax_monitors\x18\xd5\x01 \x01(\x05\x12\x17\n\x0e\x63\x61tchable_area\x18\xd6\x01 \x01(\x02\x12\x17\n\x0ereal_speed_max\x18\xd7\x01 \x01(\x02\x12\x1a\n\x11pitch_half_length\x18\xd8\x01 \x01(\x02\x12\x19\n\x10pitch_half_width\x18\xd9\x01 \x01(\x02\x12 \n\x17our_penalty_area_line_x\x18\xda\x01 \x01(\x02\x12\"\n\x19their_penalty_area_line_x\x18\xdb\x01 \x01(\x02\x12 \n\x17penalty_area_half_width\x18\xdc\x01 \x01(\x02\x12\x1c\n\x13penalty_area_length\x18\xdd\x01 \x01(\x02\x12\x13\n\ngoal_width\x18\xde\x01 \x01(\x02\"\x8d\x08\n\x0bPlayerParam\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\x12\x14\n\x0cplayer_types\x18\x02 \x01(\x05\x12\x10\n\x08subs_max\x18\x03 \x01(\x05\x12\x0e\n\x06pt_max\x18\x04 \x01(\x05\x12\x1f\n\x17\x61llow_mult_default_type\x18\x05 \x01(\x08\x12\"\n\x1aplayer_speed_max_delta_min\x18\x06 \x01(\x02\x12\"\n\x1aplayer_speed_max_delta_max\x18\x07 \x01(\x02\x12$\n\x1cstamina_inc_max_delta_factor\x18\x08 \x01(\x02\x12\x1e\n\x16player_decay_delta_min\x18\t \x01(\x02\x12\x1e\n\x16player_decay_delta_max\x18\n \x01(\x02\x12#\n\x1binertia_moment_delta_factor\x18\x0b \x01(\x02\x12!\n\x19\x64\x61sh_power_rate_delta_min\x18\x0c \x01(\x02\x12!\n\x19\x64\x61sh_power_rate_delta_max\x18\r \x01(\x02\x12 \n\x18player_size_delta_factor\x18\x0e \x01(\x02\x12!\n\x19kickable_margin_delta_min\x18\x0f \x01(\x02\x12!\n\x19kickable_margin_delta_max\x18\x10 \x01(\x02\x12\x1e\n\x16kick_rand_delta_factor\x18\x11 \x01(\x02\x12\x1f\n\x17\x65xtra_stamina_delta_min\x18\x12 \x01(\x02\x12\x1f\n\x17\x65xtra_stamina_delta_max\x18\x13 \x01(\x02\x12\x1f\n\x17\x65\x66\x66ort_max_delta_factor\x18\x14 \x01(\x02\x12\x1f\n\x17\x65\x66\x66ort_min_delta_factor\x18\x15 \x01(\x02\x12\x13\n\x0brandom_seed\x18\x16 \x01(\x05\x12%\n\x1dnew_dash_power_rate_delta_min\x18\x17 \x01(\x02\x12%\n\x1dnew_dash_power_rate_delta_max\x18\x18 \x01(\x02\x12(\n new_stamina_inc_max_delta_factor\x18\x19 \x01(\x02\x12!\n\x19kick_power_rate_delta_min\x18\x1a \x01(\x02\x12!\n\x19kick_power_rate_delta_max\x18\x1b \x01(\x02\x12,\n$foul_detect_probability_delta_factor\x18\x1c \x01(\x02\x12$\n\x1c\x63\x61tchable_area_l_stretch_min\x18\x1d \x01(\x02\x12$\n\x1c\x63\x61tchable_area_l_stretch_max\x18\x1e \x01(\x02\"\xbf\x07\n\nPlayerType\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x17\n\x0fstamina_inc_max\x18\x03 \x01(\x02\x12\x14\n\x0cplayer_decay\x18\x04 \x01(\x02\x12\x16\n\x0einertia_moment\x18\x05 \x01(\x02\x12\x17\n\x0f\x64\x61sh_power_rate\x18\x06 \x01(\x02\x12\x13\n\x0bplayer_size\x18\x07 \x01(\x02\x12\x17\n\x0fkickable_margin\x18\x08 \x01(\x02\x12\x11\n\tkick_rand\x18\t \x01(\x02\x12\x15\n\rextra_stamina\x18\n \x01(\x02\x12\x12\n\neffort_max\x18\x0b \x01(\x02\x12\x12\n\neffort_min\x18\x0c \x01(\x02\x12\x17\n\x0fkick_power_rate\x18\r \x01(\x02\x12\x1f\n\x17\x66oul_detect_probability\x18\x0e \x01(\x02\x12 \n\x18\x63\x61tchable_area_l_stretch\x18\x0f \x01(\x02\x12\x17\n\x0funum_far_length\x18\x10 \x01(\x02\x12\x1b\n\x13unum_too_far_length\x18\x11 \x01(\x02\x12\x17\n\x0fteam_far_length\x18\x12 \x01(\x02\x12\x1b\n\x13team_too_far_length\x18\x13 \x01(\x02\x12%\n\x1dplayer_max_observation_length\x18\x14 \x01(\x02\x12\x1b\n\x13\x62\x61ll_vel_far_length\x18\x15 \x01(\x02\x12\x1f\n\x17\x62\x61ll_vel_too_far_length\x18\x16 \x01(\x02\x12#\n\x1b\x62\x61ll_max_observation_length\x18\x17 \x01(\x02\x12\x1b\n\x13\x66lag_chg_far_length\x18\x18 \x01(\x02\x12\x1f\n\x17\x66lag_chg_too_far_length\x18\x19 \x01(\x02\x12#\n\x1b\x66lag_max_observation_length\x18\x1a \x01(\x02\x12\x15\n\rkickable_area\x18\x1b \x01(\x02\x12\x1f\n\x17reliable_catchable_dist\x18\x1c \x01(\x02\x12\x1a\n\x12max_catchable_dist\x18\x1d \x01(\x02\x12\x16\n\x0ereal_speed_max\x18\x1e \x01(\x02\x12\x19\n\x11player_speed_max2\x18\x1f \x01(\x02\x12\x17\n\x0freal_speed_max2\x18 \x01(\x02\x12!\n\x19\x63ycles_to_reach_max_speed\x18! \x01(\x05\x12\x18\n\x10player_speed_max\x18\" \x01(\x02\"\x07\n\x05\x45mpty*-\n\tViewWidth\x12\n\n\x06NARROW\x10\x00\x12\n\n\x06NORMAL\x10\x01\x12\x08\n\x04WIDE\x10\x02*(\n\x04Side\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02*\xb2\x02\n\x0bLoggerLevel\x12\r\n\tNoneLevel\x10\x00\x12\n\n\x06SYSTEM\x10\x01\x12\n\n\x06SENSOR\x10\x02\x12\t\n\x05WORLD\x10\x04\x12\n\n\x06\x41\x43TION\x10\x08\x12\r\n\tINTERCEPT\x10\x10\x12\x08\n\x04KICK\x10 \x12\x08\n\x04HOLD\x10@\x12\x0c\n\x07\x44RIBBLE\x10\x80\x01\x12\t\n\x04PASS\x10\x80\x02\x12\n\n\x05\x43ROSS\x10\x80\x04\x12\n\n\x05SHOOT\x10\x80\x08\x12\n\n\x05\x43LEAR\x10\x80\x10\x12\n\n\x05\x42LOCK\x10\x80 \x12\t\n\x04MARK\x10\x80@\x12\x11\n\x0bPOSITIONING\x10\x80\x80\x01\x12\n\n\x04ROLE\x10\x80\x80\x02\x12\n\n\x04TEAM\x10\x80\x80\x04\x12\x13\n\rCOMMUNICATION\x10\x80\x80\x08\x12\x0e\n\x08\x41NALYZER\x10\x80\x80\x10\x12\x12\n\x0c\x41\x43TION_CHAIN\x10\x80\x80 \x12\n\n\x04PLAN\x10\x80\x80@*v\n\x13InterceptActionType\x12!\n\x1dUNKNOWN_Intercept_Action_Type\x10\x00\x12\r\n\tOMNI_DASH\x10\x01\x12\x15\n\x11TURN_FORWARD_DASH\x10\x02\x12\x16\n\x12TURN_BACKWARD_DASH\x10\x03*\xbb\x04\n\x0cGameModeType\x12\x11\n\rBeforeKickOff\x10\x00\x12\x0c\n\x08TimeOver\x10\x01\x12\n\n\x06PlayOn\x10\x02\x12\x0c\n\x08KickOff_\x10\x03\x12\x0b\n\x07KickIn_\x10\x04\x12\r\n\tFreeKick_\x10\x05\x12\x0f\n\x0b\x43ornerKick_\x10\x06\x12\r\n\tGoalKick_\x10\x07\x12\x0e\n\nAfterGoal_\x10\x08\x12\x0c\n\x08OffSide_\x10\t\x12\x10\n\x0cPenaltyKick_\x10\n\x12\x11\n\rFirstHalfOver\x10\x0b\x12\t\n\x05Pause\x10\x0c\x12\t\n\x05Human\x10\r\x12\x0f\n\x0b\x46oulCharge_\x10\x0e\x12\r\n\tFoulPush_\x10\x0f\x12\x19\n\x15\x46oulMultipleAttacker_\x10\x10\x12\x10\n\x0c\x46oulBallOut_\x10\x11\x12\r\n\tBackPass_\x10\x12\x12\x12\n\x0e\x46reeKickFault_\x10\x13\x12\x0f\n\x0b\x43\x61tchFault_\x10\x14\x12\x10\n\x0cIndFreeKick_\x10\x15\x12\x11\n\rPenaltySetup_\x10\x16\x12\x11\n\rPenaltyReady_\x10\x17\x12\x11\n\rPenaltyTaken_\x10\x18\x12\x10\n\x0cPenaltyMiss_\x10\x19\x12\x11\n\rPenaltyScore_\x10\x1a\x12\x13\n\x0fIllegalDefense_\x10\x1b\x12\x13\n\x0fPenaltyOnfield_\x10\x1c\x12\x10\n\x0cPenaltyFoul_\x10\x1d\x12\x10\n\x0cGoalieCatch_\x10\x1e\x12\x0e\n\nExtendHalf\x10\x1f\x12\x0c\n\x08MODE_MAX\x10 *2\n\tAgentType\x12\x0b\n\x07PlayerT\x10\x00\x12\n\n\x06\x43oachT\x10\x01\x12\x0c\n\x08TrainerT\x10\x02\x32\x9c\x04\n\x04Game\x12:\n\x10GetPlayerActions\x12\r.protos.State\x1a\x15.protos.PlayerActions\"\x00\x12\x38\n\x0fGetCoachActions\x12\r.protos.State\x1a\x14.protos.CoachActions\"\x00\x12<\n\x11GetTrainerActions\x12\r.protos.State\x1a\x16.protos.TrainerActions\"\x00\x12\x37\n\x0fSendInitMessage\x12\x13.protos.InitMessage\x1a\r.protos.Empty\"\x00\x12\x38\n\x10SendServerParams\x12\x13.protos.ServerParam\x1a\r.protos.Empty\"\x00\x12\x38\n\x10SendPlayerParams\x12\x13.protos.PlayerParam\x1a\r.protos.Empty\"\x00\x12\x35\n\x0eSendPlayerType\x12\x12.protos.PlayerType\x1a\r.protos.Empty\"\x00\x12?\n\x08Register\x12\x17.protos.RegisterRequest\x1a\x18.protos.RegisterResponse\"\x00\x12;\n\x0eSendByeCommand\x12\x18.protos.RegisterResponse\x1a\r.protos.Empty\"\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rservice.proto\x12\x06protos\"@\n\x0bRpcVector2D\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\x0c\n\x04\x64ist\x18\x03 \x01(\x02\x12\r\n\x05\x61ngle\x18\x04 \x01(\x02\"c\n\x0fRegisterRequest\x12%\n\nagent_type\x18\x01 \x01(\x0e\x32\x11.protos.AgentType\x12\x11\n\tteam_name\x18\x02 \x01(\t\x12\x16\n\x0euniform_number\x18\x03 \x01(\x05\"w\n\x10RegisterResponse\x12\x11\n\tclient_id\x18\x01 \x01(\x05\x12%\n\nagent_type\x18\x02 \x01(\x0e\x32\x11.protos.AgentType\x12\x11\n\tteam_name\x18\x03 \x01(\t\x12\x16\n\x0euniform_number\x18\x04 \x01(\x05\"\x98\x04\n\x04\x42\x61ll\x12%\n\x08position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12.\n\x11relative_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12+\n\x0eheard_position\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12%\n\x08velocity\x18\x05 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_velocity\x18\x06 \x01(\x0b\x32\x13.protos.RpcVector2D\x12+\n\x0eheard_velocity\x18\x07 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x11\n\tpos_count\x18\x08 \x01(\x05\x12\x16\n\x0eseen_pos_count\x18\t \x01(\x05\x12\x17\n\x0fheard_pos_count\x18\n \x01(\x05\x12\x11\n\tvel_count\x18\x0b \x01(\x05\x12\x16\n\x0eseen_vel_count\x18\x0c \x01(\x05\x12\x17\n\x0fheard_vel_count\x18\r \x01(\x05\x12\x12\n\nlost_count\x18\x0e \x01(\x05\x12\x13\n\x0bghost_count\x18\x0f \x01(\x05\x12\x16\n\x0e\x64ist_from_self\x18\x10 \x01(\x02\x12\x17\n\x0f\x61ngle_from_self\x18\x11 \x01(\x02\"\xb0\x06\n\x06Player\x12%\n\x08position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12+\n\x0eheard_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12%\n\x08velocity\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_velocity\x18\x05 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x11\n\tpos_count\x18\x06 \x01(\x05\x12\x16\n\x0eseen_pos_count\x18\x07 \x01(\x05\x12\x17\n\x0fheard_pos_count\x18\x08 \x01(\x05\x12\x11\n\tvel_count\x18\t \x01(\x05\x12\x16\n\x0eseen_vel_count\x18\n \x01(\x05\x12\x13\n\x0bghost_count\x18\x0b \x01(\x05\x12\x16\n\x0e\x64ist_from_self\x18\x0c \x01(\x02\x12\x17\n\x0f\x61ngle_from_self\x18\r \x01(\x02\x12\n\n\x02id\x18\x0e \x01(\x05\x12\x1a\n\x04side\x18\x0f \x01(\x0e\x32\x0c.protos.Side\x12\x16\n\x0euniform_number\x18\x10 \x01(\x05\x12\x1c\n\x14uniform_number_count\x18\x11 \x01(\x05\x12\x11\n\tis_goalie\x18\x12 \x01(\x08\x12\x16\n\x0e\x62ody_direction\x18\x13 \x01(\x02\x12\x1c\n\x14\x62ody_direction_count\x18\x14 \x01(\x05\x12\x16\n\x0e\x66\x61\x63\x65_direction\x18\x15 \x01(\x02\x12\x1c\n\x14\x66\x61\x63\x65_direction_count\x18\x16 \x01(\x05\x12\x1a\n\x12point_to_direction\x18\x17 \x01(\x02\x12 \n\x18point_to_direction_count\x18\x18 \x01(\x05\x12\x12\n\nis_kicking\x18\x19 \x01(\x08\x12\x16\n\x0e\x64ist_from_ball\x18\x1a \x01(\x02\x12\x17\n\x0f\x61ngle_from_ball\x18\x1b \x01(\x02\x12\x18\n\x10\x62\x61ll_reach_steps\x18\x1c \x01(\x05\x12\x13\n\x0bis_tackling\x18\x1d \x01(\x08\x12\x0f\n\x07type_id\x18\x1e \x01(\x05\"\xcf\x07\n\x04Self\x12%\n\x08position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12+\n\x0eheard_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12%\n\x08velocity\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rseen_velocity\x18\x05 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x11\n\tpos_count\x18\x06 \x01(\x05\x12\x16\n\x0eseen_pos_count\x18\x07 \x01(\x05\x12\x17\n\x0fheard_pos_count\x18\x08 \x01(\x05\x12\x11\n\tvel_count\x18\t \x01(\x05\x12\x16\n\x0eseen_vel_count\x18\n \x01(\x05\x12\x13\n\x0bghost_count\x18\x0b \x01(\x05\x12\n\n\x02id\x18\x0c \x01(\x05\x12\x1a\n\x04side\x18\r \x01(\x0e\x32\x0c.protos.Side\x12\x16\n\x0euniform_number\x18\x0e \x01(\x05\x12\x1c\n\x14uniform_number_count\x18\x0f \x01(\x05\x12\x11\n\tis_goalie\x18\x10 \x01(\x08\x12\x16\n\x0e\x62ody_direction\x18\x11 \x01(\x02\x12\x1c\n\x14\x62ody_direction_count\x18\x12 \x01(\x05\x12\x16\n\x0e\x66\x61\x63\x65_direction\x18\x13 \x01(\x02\x12\x1c\n\x14\x66\x61\x63\x65_direction_count\x18\x14 \x01(\x05\x12\x1a\n\x12point_to_direction\x18\x15 \x01(\x02\x12 \n\x18point_to_direction_count\x18\x16 \x01(\x05\x12\x12\n\nis_kicking\x18\x17 \x01(\x08\x12\x16\n\x0e\x64ist_from_ball\x18\x18 \x01(\x02\x12\x17\n\x0f\x61ngle_from_ball\x18\x19 \x01(\x02\x12\x18\n\x10\x62\x61ll_reach_steps\x18\x1a \x01(\x05\x12\x13\n\x0bis_tackling\x18\x1b \x01(\x08\x12\x1f\n\x17relative_neck_direction\x18\x1c \x01(\x02\x12\x0f\n\x07stamina\x18\x1d \x01(\x02\x12\x13\n\x0bis_kickable\x18\x1e \x01(\x08\x12\x19\n\x11\x63\x61tch_probability\x18\x1f \x01(\x02\x12\x1a\n\x12tackle_probability\x18 \x01(\x02\x12\x18\n\x10\x66oul_probability\x18! \x01(\x02\x12%\n\nview_width\x18\" \x01(\x0e\x32\x11.protos.ViewWidth\x12\x0f\n\x07type_id\x18# \x01(\x05\x12\x11\n\tkick_rate\x18$ \x01(\x02\"\x94\x02\n\rInterceptInfo\x12\x30\n\x0b\x61\x63tion_type\x18\x01 \x01(\x0e\x32\x1b.protos.InterceptActionType\x12\x12\n\nturn_steps\x18\x02 \x01(\x05\x12\x12\n\nturn_angle\x18\x03 \x01(\x02\x12\x12\n\ndash_steps\x18\x04 \x01(\x05\x12\x12\n\ndash_power\x18\x05 \x01(\x02\x12\x10\n\x08\x64\x61sh_dir\x18\x06 \x01(\x02\x12\x30\n\x13\x66inal_self_position\x18\x07 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x17\n\x0f\x66inal_ball_dist\x18\x08 \x01(\x02\x12\x15\n\rfinal_stamina\x18\t \x01(\x02\x12\r\n\x05value\x18\n \x01(\x02\"\xde\x02\n\x0eInterceptTable\x12\x18\n\x10self_reach_steps\x18\x01 \x01(\x05\x12\"\n\x1a\x66irst_teammate_reach_steps\x18\x02 \x01(\x05\x12#\n\x1bsecond_teammate_reach_steps\x18\x03 \x01(\x05\x12\"\n\x1a\x66irst_opponent_reach_steps\x18\x04 \x01(\x05\x12#\n\x1bsecond_opponent_reach_steps\x18\x05 \x01(\x05\x12\x19\n\x11\x66irst_teammate_id\x18\x06 \x01(\x05\x12\x1a\n\x12second_teammate_id\x18\x07 \x01(\x05\x12\x19\n\x11\x66irst_opponent_id\x18\x08 \x01(\x05\x12\x1a\n\x12second_opponent_id\x18\t \x01(\x05\x12\x32\n\x13self_intercept_info\x18\n \x03(\x0b\x32\x15.protos.InterceptInfo\"\x91\n\n\nWorldModel\x12/\n\x0fintercept_table\x18\x01 \x01(\x0b\x32\x16.protos.InterceptTable\x12\x15\n\rour_team_name\x18\x02 \x01(\t\x12\x17\n\x0ftheir_team_name\x18\x03 \x01(\t\x12\x1e\n\x08our_side\x18\x04 \x01(\x0e\x32\x0c.protos.Side\x12 \n\x18last_set_play_start_time\x18\x05 \x01(\x05\x12\x1a\n\x04self\x18\x06 \x01(\x0b\x32\x0c.protos.Self\x12\x1a\n\x04\x62\x61ll\x18\x07 \x01(\x0b\x32\x0c.protos.Ball\x12!\n\tteammates\x18\x08 \x03(\x0b\x32\x0e.protos.Player\x12!\n\topponents\x18\t \x03(\x0b\x32\x0e.protos.Player\x12 \n\x08unknowns\x18\n \x03(\x0b\x32\x0e.protos.Player\x12@\n\x10our_players_dict\x18\x0b \x03(\x0b\x32&.protos.WorldModel.OurPlayersDictEntry\x12\x44\n\x12their_players_dict\x18\x0c \x03(\x0b\x32(.protos.WorldModel.TheirPlayersDictEntry\x12!\n\x19our_goalie_uniform_number\x18\r \x01(\x05\x12#\n\x1btheir_goalie_uniform_number\x18\x0e \x01(\x05\x12\x16\n\x0eoffside_line_x\x18\x0f \x01(\x02\x12\x1b\n\x13ofside_line_x_count\x18\x10 \x01(\x05\x12\x1c\n\x14kickable_teammate_id\x18\x11 \x01(\x05\x12\x1c\n\x14kickable_opponent_id\x18\x12 \x01(\x05\x12$\n\x0elast_kick_side\x18\x13 \x01(\x0e\x32\x0c.protos.Side\x12\"\n\x1alast_kicker_uniform_number\x18\x14 \x01(\x05\x12\r\n\x05\x63ycle\x18\x15 \x01(\x05\x12,\n\x0egame_mode_type\x18\x16 \x01(\x0e\x32\x14.protos.GameModeType\x12\x17\n\x0fleft_team_score\x18\x17 \x01(\x05\x12\x18\n\x10right_team_score\x18\x18 \x01(\x05\x12\x17\n\x0fis_our_set_play\x18\x19 \x01(\x08\x12\x19\n\x11is_their_set_play\x18\x1a \x01(\x08\x12\x14\n\x0cstoped_cycle\x18\x1b \x01(\x05\x12\x16\n\x0eour_team_score\x18\x1c \x01(\x05\x12\x18\n\x10their_team_score\x18\x1d \x01(\x05\x12\x1c\n\x14is_penalty_kick_mode\x18\x1e \x01(\x08\x12J\n\x15helios_home_positions\x18\x1f \x03(\x0b\x32+.protos.WorldModel.HeliosHomePositionsEntry\x1a\x45\n\x13OurPlayersDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.protos.Player:\x02\x38\x01\x1aG\n\x15TheirPlayersDictEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\x1d\n\x05value\x18\x02 \x01(\x0b\x32\x0e.protos.Player:\x02\x38\x01\x1aO\n\x18HeliosHomePositionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\"\n\x05value\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D:\x02\x38\x01\"\xac\x01\n\x05State\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\x12\'\n\x0bworld_model\x18\x02 \x01(\x0b\x32\x12.protos.WorldModel\x12,\n\x10\x66ull_world_model\x18\x03 \x01(\x0b\x32\x12.protos.WorldModel\x12\x17\n\x0fneed_preprocess\x18\x04 \x01(\x08\"V\n\x0bInitMessage\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\x12\x12\n\ndebug_mode\x18\x02 \x01(\x08\"1\n\x04\x44\x61sh\x12\r\n\x05power\x18\x01 \x01(\x02\x12\x1a\n\x12relative_direction\x18\x02 \x01(\x02\"\"\n\x04Turn\x12\x1a\n\x12relative_direction\x18\x01 \x01(\x02\"1\n\x04Kick\x12\r\n\x05power\x18\x01 \x01(\x02\x12\x1a\n\x12relative_direction\x18\x02 \x01(\x02\",\n\x06Tackle\x12\x14\n\x0cpower_or_dir\x18\x01 \x01(\x02\x12\x0c\n\x04\x66oul\x18\x02 \x01(\x08\"\x07\n\x05\x43\x61tch\"\x1c\n\x04Move\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\"\x1a\n\x08TurnNeck\x12\x0e\n\x06moment\x18\x01 \x01(\x02\"3\n\nChangeView\x12%\n\nview_width\x18\x01 \x01(\x0e\x32\x11.protos.ViewWidth\"e\n\x0b\x42\x61llMessage\x12*\n\rball_position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_velocity\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\"\xb3\x01\n\x0bPassMessage\x12\x1f\n\x17receiver_uniform_number\x18\x01 \x01(\x05\x12+\n\x0ereceiver_point\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_velocity\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\"F\n\x10InterceptMessage\x12\x0b\n\x03our\x18\x01 \x01(\x08\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12\r\n\x05\x63ycle\x18\x03 \x01(\x05\"{\n\rGoalieMessage\x12\x1d\n\x15goalie_uniform_number\x18\x01 \x01(\x05\x12,\n\x0fgoalie_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1d\n\x15goalie_body_direction\x18\x03 \x01(\x02\"\xd1\x01\n\x16GoalieAndPlayerMessage\x12\x1d\n\x15goalie_uniform_number\x18\x01 \x01(\x05\x12,\n\x0fgoalie_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1d\n\x15goalie_body_direction\x18\x03 \x01(\x02\x12\x1d\n\x15player_uniform_number\x18\x04 \x01(\x05\x12,\n\x0fplayer_position\x18\x05 \x01(\x0b\x32\x13.protos.RpcVector2D\",\n\x12OffsideLineMessage\x12\x16\n\x0eoffside_line_x\x18\x01 \x01(\x02\",\n\x12\x44\x65\x66\x65nseLineMessage\x12\x16\n\x0e\x64\x65\x66\x65nse_line_x\x18\x01 \x01(\x02\"\x14\n\x12WaitRequestMessage\"#\n\x0eSetplayMessage\x12\x11\n\twait_step\x18\x01 \x01(\x05\"?\n\x12PassRequestMessage\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\"!\n\x0eStaminaMessage\x12\x0f\n\x07stamina\x18\x01 \x01(\x02\"#\n\x0fRecoveryMessage\x12\x10\n\x08recovery\x18\x01 \x01(\x02\"2\n\x16StaminaCapacityMessage\x12\x18\n\x10stamina_capacity\x18\x01 \x01(\x02\"P\n\x0e\x44ribbleMessage\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x13\n\x0bqueue_count\x18\x02 \x01(\x05\"\xb8\x01\n\x11\x42\x61llGoalieMessage\x12*\n\rball_position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_velocity\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12,\n\x0fgoalie_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1d\n\x15goalie_body_direction\x18\x04 \x01(\x02\"Q\n\x10OnePlayerMessage\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12%\n\x08position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\"\xaa\x01\n\x10TwoPlayerMessage\x12\x1c\n\x14\x66irst_uniform_number\x18\x01 \x01(\x05\x12+\n\x0e\x66irst_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1d\n\x15second_uniform_number\x18\x03 \x01(\x05\x12,\n\x0fsecond_position\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\"\xf7\x01\n\x12ThreePlayerMessage\x12\x1c\n\x14\x66irst_uniform_number\x18\x01 \x01(\x05\x12+\n\x0e\x66irst_position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1d\n\x15second_uniform_number\x18\x03 \x01(\x05\x12,\n\x0fsecond_position\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1c\n\x14third_uniform_number\x18\x05 \x01(\x05\x12+\n\x0ethird_position\x18\x06 \x01(\x0b\x32\x13.protos.RpcVector2D\"l\n\x0bSelfMessage\x12*\n\rself_position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1b\n\x13self_body_direction\x18\x02 \x01(\x02\x12\x14\n\x0cself_stamina\x18\x03 \x01(\x02\"h\n\x0fTeammateMessage\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12%\n\x08position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x16\n\x0e\x62ody_direction\x18\x03 \x01(\x02\"h\n\x0fOpponentMessage\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12%\n\x08position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x16\n\x0e\x62ody_direction\x18\x03 \x01(\x02\"\xc9\x01\n\x11\x42\x61llPlayerMessage\x12*\n\rball_position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_velocity\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x16\n\x0euniform_number\x18\x03 \x01(\x05\x12,\n\x0fplayer_position\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x16\n\x0e\x62ody_direction\x18\x05 \x01(\x02\"\xd0\t\n\x03Say\x12+\n\x0c\x62\x61ll_message\x18\x01 \x01(\x0b\x32\x13.protos.BallMessageH\x00\x12+\n\x0cpass_message\x18\x02 \x01(\x0b\x32\x13.protos.PassMessageH\x00\x12\x35\n\x11intercept_message\x18\x03 \x01(\x0b\x32\x18.protos.InterceptMessageH\x00\x12/\n\x0egoalie_message\x18\x04 \x01(\x0b\x32\x15.protos.GoalieMessageH\x00\x12\x43\n\x19goalie_and_player_message\x18\x05 \x01(\x0b\x32\x1e.protos.GoalieAndPlayerMessageH\x00\x12:\n\x14offside_line_message\x18\x06 \x01(\x0b\x32\x1a.protos.OffsideLineMessageH\x00\x12:\n\x14\x64\x65\x66\x65nse_line_message\x18\x07 \x01(\x0b\x32\x1a.protos.DefenseLineMessageH\x00\x12:\n\x14wait_request_message\x18\x08 \x01(\x0b\x32\x1a.protos.WaitRequestMessageH\x00\x12\x31\n\x0fsetplay_message\x18\t \x01(\x0b\x32\x16.protos.SetplayMessageH\x00\x12:\n\x14pass_request_message\x18\n \x01(\x0b\x32\x1a.protos.PassRequestMessageH\x00\x12\x31\n\x0fstamina_message\x18\x0b \x01(\x0b\x32\x16.protos.StaminaMessageH\x00\x12\x33\n\x10recovery_message\x18\x0c \x01(\x0b\x32\x17.protos.RecoveryMessageH\x00\x12\x42\n\x18stamina_capacity_message\x18\r \x01(\x0b\x32\x1e.protos.StaminaCapacityMessageH\x00\x12\x31\n\x0f\x64ribble_message\x18\x0e \x01(\x0b\x32\x16.protos.DribbleMessageH\x00\x12\x38\n\x13\x62\x61ll_goalie_message\x18\x0f \x01(\x0b\x32\x19.protos.BallGoalieMessageH\x00\x12\x36\n\x12one_player_message\x18\x10 \x01(\x0b\x32\x18.protos.OnePlayerMessageH\x00\x12\x36\n\x12two_player_message\x18\x11 \x01(\x0b\x32\x18.protos.TwoPlayerMessageH\x00\x12:\n\x14three_player_message\x18\x12 \x01(\x0b\x32\x1a.protos.ThreePlayerMessageH\x00\x12+\n\x0cself_message\x18\x13 \x01(\x0b\x32\x13.protos.SelfMessageH\x00\x12\x33\n\x10teammate_message\x18\x14 \x01(\x0b\x32\x17.protos.TeammateMessageH\x00\x12\x33\n\x10opponent_message\x18\x15 \x01(\x0b\x32\x17.protos.OpponentMessageH\x00\x12\x38\n\x13\x62\x61ll_player_message\x18\x16 \x01(\x0b\x32\x19.protos.BallPlayerMessageH\x00\x42\t\n\x07message\"\x1f\n\x07PointTo\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\"\x0b\n\tPointToOf\"7\n\x0b\x41ttentionTo\x12\x1a\n\x04side\x18\x01 \x01(\x0e\x32\x0c.protos.Side\x12\x0c\n\x04unum\x18\x02 \x01(\x05\"\x0f\n\rAttentionToOf\">\n\x07\x41\x64\x64Text\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\x0f\n\x07message\x18\x02 \x01(\t\"a\n\x08\x41\x64\x64Point\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\"\n\x05point\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\r\n\x05\x63olor\x18\x03 \x01(\t\"\x82\x01\n\x07\x41\x64\x64Line\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\"\n\x05start\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12 \n\x03\x65nd\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\r\n\x05\x63olor\x18\x04 \x01(\t\"\x99\x01\n\x06\x41\x64\x64\x41rc\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12#\n\x06\x63\x65nter\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x0e\n\x06radius\x18\x03 \x01(\x02\x12\x13\n\x0bstart_angle\x18\x04 \x01(\x02\x12\x12\n\nspan_angel\x18\x05 \x01(\x02\x12\r\n\x05\x63olor\x18\x06 \x01(\t\"\x81\x01\n\tAddCircle\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12#\n\x06\x63\x65nter\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x0e\n\x06radius\x18\x03 \x01(\x02\x12\r\n\x05\x63olor\x18\x04 \x01(\t\x12\x0c\n\x04\x66ill\x18\x05 \x01(\x08\"\xbd\x01\n\x0b\x41\x64\x64Triangle\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12#\n\x06point1\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12#\n\x06point2\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12#\n\x06point3\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\r\n\x05\x63olor\x18\x05 \x01(\t\x12\x0c\n\x04\x66ill\x18\x06 \x01(\x08\"\x89\x01\n\x0c\x41\x64\x64Rectangle\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12\x0c\n\x04left\x18\x02 \x01(\x02\x12\x0b\n\x03top\x18\x03 \x01(\x02\x12\x0e\n\x06length\x18\x04 \x01(\x02\x12\r\n\x05width\x18\x05 \x01(\x02\x12\r\n\x05\x63olor\x18\x06 \x01(\t\x12\x0c\n\x04\x66ill\x18\x07 \x01(\x08\"\xc2\x01\n\tAddSector\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12#\n\x06\x63\x65nter\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x12\n\nmin_radius\x18\x03 \x01(\x02\x12\x12\n\nmax_radius\x18\x04 \x01(\x02\x12\x13\n\x0bstart_angle\x18\x05 \x01(\x02\x12\x12\n\nspan_angel\x18\x06 \x01(\x02\x12\r\n\x05\x63olor\x18\x07 \x01(\t\x12\x0c\n\x04\x66ill\x18\x08 \x01(\x08\"w\n\nAddMessage\x12\"\n\x05level\x18\x01 \x01(\x0e\x32\x13.protos.LoggerLevel\x12%\n\x08position\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x0f\n\x07message\x18\x03 \x01(\t\x12\r\n\x05\x63olor\x18\x04 \x01(\t\"\xf9\x02\n\x03Log\x12#\n\x08\x61\x64\x64_text\x18\x01 \x01(\x0b\x32\x0f.protos.AddTextH\x00\x12%\n\tadd_point\x18\x02 \x01(\x0b\x32\x10.protos.AddPointH\x00\x12#\n\x08\x61\x64\x64_line\x18\x03 \x01(\x0b\x32\x0f.protos.AddLineH\x00\x12!\n\x07\x61\x64\x64_arc\x18\x04 \x01(\x0b\x32\x0e.protos.AddArcH\x00\x12\'\n\nadd_circle\x18\x05 \x01(\x0b\x32\x11.protos.AddCircleH\x00\x12+\n\x0c\x61\x64\x64_triangle\x18\x06 \x01(\x0b\x32\x13.protos.AddTriangleH\x00\x12-\n\radd_rectangle\x18\x07 \x01(\x0b\x32\x14.protos.AddRectangleH\x00\x12\'\n\nadd_sector\x18\x08 \x01(\x0b\x32\x11.protos.AddSectorH\x00\x12)\n\x0b\x61\x64\x64_message\x18\t \x01(\x0b\x32\x12.protos.AddMessageH\x00\x42\x05\n\x03log\"\x1e\n\x0b\x44\x65\x62ugClient\x12\x0f\n\x07message\x18\x01 \x01(\t\"o\n\x0e\x42ody_GoToPoint\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1a\n\x12\x64istance_threshold\x18\x02 \x01(\x02\x12\x16\n\x0emax_dash_power\x18\x03 \x01(\x02\"\x82\x01\n\x0e\x42ody_SmartKick\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x13\n\x0b\x66irst_speed\x18\x02 \x01(\x02\x12\x1d\n\x15\x66irst_speed_threshold\x18\x03 \x01(\x02\x12\x11\n\tmax_steps\x18\x04 \x01(\x05\"7\n\x11\x42hv_BeforeKickOff\x12\"\n\x05point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\"\x14\n\x12\x42hv_BodyNeckToBall\"9\n\x13\x42hv_BodyNeckToPoint\x12\"\n\x05point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\"\x0f\n\rBhv_Emergency\"v\n\x15\x42hv_GoToPointLookBall\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1a\n\x12\x64istance_threshold\x18\x02 \x01(\x02\x12\x16\n\x0emax_dash_power\x18\x03 \x01(\x02\"\'\n\x12\x42hv_NeckBodyToBall\x12\x11\n\tangle_buf\x18\x01 \x01(\x02\"L\n\x13\x42hv_NeckBodyToPoint\x12\"\n\x05point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x11\n\tangle_buf\x18\x02 \x01(\x02\"\x0f\n\rBhv_ScanField\"\x12\n\x10\x42ody_AdvanceBall\"\x10\n\x0e\x42ody_ClearBall\"\x8c\x01\n\x0c\x42ody_Dribble\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1a\n\x12\x64istance_threshold\x18\x02 \x01(\x02\x12\x12\n\ndash_power\x18\x03 \x01(\x02\x12\x12\n\ndash_count\x18\x04 \x01(\x05\x12\r\n\x05\x64odge\x18\x05 \x01(\x08\"T\n\x13\x42ody_GoToPointDodge\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x12\n\ndash_power\x18\x02 \x01(\x02\"\x80\x01\n\rBody_HoldBall\x12\x0f\n\x07\x64o_turn\x18\x01 \x01(\x08\x12.\n\x11turn_target_point\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\x12.\n\x11kick_target_point\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\"P\n\x0e\x42ody_Intercept\x12\x15\n\rsave_recovery\x18\x01 \x01(\x08\x12\'\n\nface_point\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\"f\n\x10\x42ody_KickOneStep\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x13\n\x0b\x66irst_speed\x18\x02 \x01(\x02\x12\x12\n\nforce_mode\x18\x03 \x01(\x08\"\x0f\n\rBody_StopBall\"&\n\rBody_StopDash\x12\x15\n\rsave_recovery\x18\x01 \x01(\x08\"k\n\x12\x42ody_TackleToPoint\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x17\n\x0fmin_probability\x18\x02 \x01(\x02\x12\x11\n\tmin_speed\x18\x03 \x01(\x02\"!\n\x10\x42ody_TurnToAngle\x12\r\n\x05\x61ngle\x18\x01 \x01(\x02\" \n\x0f\x42ody_TurnToBall\x12\r\n\x05\x63ycle\x18\x01 \x01(\x05\"L\n\x10\x42ody_TurnToPoint\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\r\n\x05\x63ycle\x18\x02 \x01(\x05\">\n\x11\x46ocus_MoveToPoint\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\"\r\n\x0b\x46ocus_Reset\"\x10\n\x0eNeck_ScanField\"\x12\n\x10Neck_ScanPlayers\"g\n\x18Neck_TurnToBallAndPlayer\x12\x1a\n\x04side\x18\x01 \x01(\x0e\x32\x0c.protos.Side\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12\x17\n\x0f\x63ount_threshold\x18\x03 \x01(\x05\"0\n\x15Neck_TurnToBallOrScan\x12\x17\n\x0f\x63ount_threshold\x18\x01 \x01(\x05\"\x11\n\x0fNeck_TurnToBall\"2\n\x17Neck_TurnToGoalieOrScan\x12\x17\n\x0f\x63ount_threshold\x18\x01 \x01(\x05\"\x1c\n\x1aNeck_TurnToLowConfTeammate\"f\n\x17Neck_TurnToPlayerOrScan\x12\x1a\n\x04side\x18\x01 \x01(\x0e\x32\x0c.protos.Side\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12\x17\n\x0f\x63ount_threshold\x18\x03 \x01(\x05\"=\n\x10Neck_TurnToPoint\x12)\n\x0ctarget_point\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\"$\n\x13Neck_TurnToRelative\x12\r\n\x05\x61ngle\x18\x01 \x01(\x02\"9\n\x10View_ChangeWidth\x12%\n\nview_width\x18\x01 \x01(\x0e\x32\x11.protos.ViewWidth\"\r\n\x0bView_Normal\"\x0c\n\nView_Synch\"\x0b\n\tView_Wide\"\x0e\n\x0cHeliosGoalie\"\x12\n\x10HeliosGoalieMove\"\x12\n\x10HeliosGoalieKick\"\r\n\x0bHeliosShoot\"\xee\x01\n\x11HeliosChainAction\x12\x13\n\x0b\x64irect_pass\x18\x01 \x01(\x08\x12\x11\n\tlead_pass\x18\x02 \x01(\x08\x12\x14\n\x0cthrough_pass\x18\x03 \x01(\x08\x12\x15\n\rshort_dribble\x18\x04 \x01(\x08\x12\x14\n\x0clong_dribble\x18\x05 \x01(\x08\x12\r\n\x05\x63ross\x18\x06 \x01(\x08\x12\x13\n\x0bsimple_pass\x18\x07 \x01(\x08\x12\x16\n\x0esimple_dribble\x18\x08 \x01(\x08\x12\x14\n\x0csimple_shoot\x18\t \x01(\x08\x12\x1c\n\x14server_side_decision\x18\n \x01(\x08\"\x16\n\x14HeliosBasicOffensive\"\x11\n\x0fHeliosBasicMove\"\x0f\n\rHeliosSetPlay\"\x0f\n\rHeliosPenalty\"\x14\n\x12HeliosCommunicaion\"\xe3\x19\n\x0cPlayerAction\x12\x1c\n\x04\x64\x61sh\x18\x01 \x01(\x0b\x32\x0c.protos.DashH\x00\x12\x1c\n\x04turn\x18\x02 \x01(\x0b\x32\x0c.protos.TurnH\x00\x12\x1c\n\x04kick\x18\x03 \x01(\x0b\x32\x0c.protos.KickH\x00\x12 \n\x06tackle\x18\x04 \x01(\x0b\x32\x0e.protos.TackleH\x00\x12\x1e\n\x05\x63\x61tch\x18\x05 \x01(\x0b\x32\r.protos.CatchH\x00\x12\x1c\n\x04move\x18\x06 \x01(\x0b\x32\x0c.protos.MoveH\x00\x12%\n\tturn_neck\x18\x07 \x01(\x0b\x32\x10.protos.TurnNeckH\x00\x12)\n\x0b\x63hange_view\x18\x08 \x01(\x0b\x32\x12.protos.ChangeViewH\x00\x12\x1a\n\x03say\x18\t \x01(\x0b\x32\x0b.protos.SayH\x00\x12#\n\x08point_to\x18\n \x01(\x0b\x32\x0f.protos.PointToH\x00\x12(\n\x0bpoint_to_of\x18\x0b \x01(\x0b\x32\x11.protos.PointToOfH\x00\x12+\n\x0c\x61ttention_to\x18\x0c \x01(\x0b\x32\x13.protos.AttentionToH\x00\x12\x30\n\x0f\x61ttention_to_of\x18\r \x01(\x0b\x32\x15.protos.AttentionToOfH\x00\x12\x1a\n\x03log\x18\x0e \x01(\x0b\x32\x0b.protos.LogH\x00\x12+\n\x0c\x64\x65\x62ug_client\x18\x0f \x01(\x0b\x32\x13.protos.DebugClientH\x00\x12\x32\n\x10\x62ody_go_to_point\x18\x10 \x01(\x0b\x32\x16.protos.Body_GoToPointH\x00\x12\x31\n\x0f\x62ody_smart_kick\x18\x11 \x01(\x0b\x32\x16.protos.Body_SmartKickH\x00\x12\x38\n\x13\x62hv_before_kick_off\x18\x12 \x01(\x0b\x32\x19.protos.Bhv_BeforeKickOffH\x00\x12;\n\x15\x62hv_body_neck_to_ball\x18\x13 \x01(\x0b\x32\x1a.protos.Bhv_BodyNeckToBallH\x00\x12=\n\x16\x62hv_body_neck_to_point\x18\x14 \x01(\x0b\x32\x1b.protos.Bhv_BodyNeckToPointH\x00\x12.\n\rbhv_emergency\x18\x15 \x01(\x0b\x32\x15.protos.Bhv_EmergencyH\x00\x12\x42\n\x19\x62hv_go_to_point_look_ball\x18\x16 \x01(\x0b\x32\x1d.protos.Bhv_GoToPointLookBallH\x00\x12;\n\x15\x62hv_neck_body_to_ball\x18\x17 \x01(\x0b\x32\x1a.protos.Bhv_NeckBodyToBallH\x00\x12=\n\x16\x62hv_neck_body_to_point\x18\x18 \x01(\x0b\x32\x1b.protos.Bhv_NeckBodyToPointH\x00\x12/\n\x0e\x62hv_scan_field\x18\x19 \x01(\x0b\x32\x15.protos.Bhv_ScanFieldH\x00\x12\x35\n\x11\x62ody_advance_ball\x18\x1a \x01(\x0b\x32\x18.protos.Body_AdvanceBallH\x00\x12\x31\n\x0f\x62ody_clear_ball\x18\x1b \x01(\x0b\x32\x16.protos.Body_ClearBallH\x00\x12,\n\x0c\x62ody_dribble\x18\x1c \x01(\x0b\x32\x14.protos.Body_DribbleH\x00\x12=\n\x16\x62ody_go_to_point_dodge\x18\x1d \x01(\x0b\x32\x1b.protos.Body_GoToPointDodgeH\x00\x12/\n\x0e\x62ody_hold_ball\x18\x1e \x01(\x0b\x32\x15.protos.Body_HoldBallH\x00\x12\x30\n\x0e\x62ody_intercept\x18\x1f \x01(\x0b\x32\x16.protos.Body_InterceptH\x00\x12\x36\n\x12\x62ody_kick_one_step\x18 \x01(\x0b\x32\x18.protos.Body_KickOneStepH\x00\x12/\n\x0e\x62ody_stop_ball\x18! \x01(\x0b\x32\x15.protos.Body_StopBallH\x00\x12/\n\x0e\x62ody_stop_dash\x18\" \x01(\x0b\x32\x15.protos.Body_StopDashH\x00\x12:\n\x14\x62ody_tackle_to_point\x18# \x01(\x0b\x32\x1a.protos.Body_TackleToPointH\x00\x12\x36\n\x12\x62ody_turn_to_angle\x18$ \x01(\x0b\x32\x18.protos.Body_TurnToAngleH\x00\x12\x34\n\x11\x62ody_turn_to_ball\x18% \x01(\x0b\x32\x17.protos.Body_TurnToBallH\x00\x12\x36\n\x12\x62ody_turn_to_point\x18& \x01(\x0b\x32\x18.protos.Body_TurnToPointH\x00\x12\x38\n\x13\x66ocus_move_to_point\x18\' \x01(\x0b\x32\x19.protos.Focus_MoveToPointH\x00\x12*\n\x0b\x66ocus_reset\x18( \x01(\x0b\x32\x13.protos.Focus_ResetH\x00\x12\x31\n\x0fneck_scan_field\x18) \x01(\x0b\x32\x16.protos.Neck_ScanFieldH\x00\x12\x35\n\x11neck_scan_players\x18* \x01(\x0b\x32\x18.protos.Neck_ScanPlayersH\x00\x12H\n\x1cneck_turn_to_ball_and_player\x18+ \x01(\x0b\x32 .protos.Neck_TurnToBallAndPlayerH\x00\x12\x42\n\x19neck_turn_to_ball_or_scan\x18, \x01(\x0b\x32\x1d.protos.Neck_TurnToBallOrScanH\x00\x12\x34\n\x11neck_turn_to_ball\x18- \x01(\x0b\x32\x17.protos.Neck_TurnToBallH\x00\x12\x46\n\x1bneck_turn_to_goalie_or_scan\x18. \x01(\x0b\x32\x1f.protos.Neck_TurnToGoalieOrScanH\x00\x12L\n\x1eneck_turn_to_low_conf_teammate\x18/ \x01(\x0b\x32\".protos.Neck_TurnToLowConfTeammateH\x00\x12\x46\n\x1bneck_turn_to_player_or_scan\x18\x30 \x01(\x0b\x32\x1f.protos.Neck_TurnToPlayerOrScanH\x00\x12\x36\n\x12neck_turn_to_point\x18\x31 \x01(\x0b\x32\x18.protos.Neck_TurnToPointH\x00\x12<\n\x15neck_turn_to_relative\x18\x32 \x01(\x0b\x32\x1b.protos.Neck_TurnToRelativeH\x00\x12\x35\n\x11view_change_width\x18\x33 \x01(\x0b\x32\x18.protos.View_ChangeWidthH\x00\x12*\n\x0bview_normal\x18\x34 \x01(\x0b\x32\x13.protos.View_NormalH\x00\x12(\n\nview_synch\x18\x35 \x01(\x0b\x32\x12.protos.View_SynchH\x00\x12&\n\tview_wide\x18\x36 \x01(\x0b\x32\x11.protos.View_WideH\x00\x12-\n\rhelios_goalie\x18\x37 \x01(\x0b\x32\x14.protos.HeliosGoalieH\x00\x12\x36\n\x12helios_goalie_move\x18\x38 \x01(\x0b\x32\x18.protos.HeliosGoalieMoveH\x00\x12\x36\n\x12helios_goalie_kick\x18\x39 \x01(\x0b\x32\x18.protos.HeliosGoalieKickH\x00\x12+\n\x0chelios_shoot\x18: \x01(\x0b\x32\x13.protos.HeliosShootH\x00\x12\x38\n\x13helios_chain_action\x18; \x01(\x0b\x32\x19.protos.HeliosChainActionH\x00\x12>\n\x16helios_basic_offensive\x18< \x01(\x0b\x32\x1c.protos.HeliosBasicOffensiveH\x00\x12\x34\n\x11helios_basic_move\x18= \x01(\x0b\x32\x17.protos.HeliosBasicMoveH\x00\x12\x30\n\x0fhelios_set_play\x18> \x01(\x0b\x32\x15.protos.HeliosSetPlayH\x00\x12/\n\x0ehelios_penalty\x18? \x01(\x0b\x32\x15.protos.HeliosPenaltyH\x00\x12:\n\x14helios_communication\x18@ \x01(\x0b\x32\x1a.protos.HeliosCommunicaionH\x00\x42\x08\n\x06\x61\x63tion\"Q\n\rPlayerActions\x12%\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x14.protos.PlayerAction\x12\x19\n\x11ignore_preprocess\x18\x02 \x01(\x08\"8\n\x10\x43hangePlayerType\x12\x16\n\x0euniform_number\x18\x01 \x01(\x05\x12\x0c\n\x04type\x18\x02 \x01(\x05\"\x14\n\x12\x44oHeliosSubstitute\"\x18\n\x16\x44oHeliosSayPlayerTypes\"\xd2\x01\n\x0b\x43oachAction\x12\x37\n\x13\x63hange_player_types\x18\x01 \x01(\x0b\x32\x18.protos.ChangePlayerTypeH\x00\x12:\n\x14\x64o_helios_substitute\x18\x02 \x01(\x0b\x32\x1a.protos.DoHeliosSubstituteH\x00\x12\x44\n\x1a\x64o_helios_say_player_types\x18\x03 \x01(\x0b\x32\x1e.protos.DoHeliosSayPlayerTypesH\x00\x42\x08\n\x06\x61\x63tion\"4\n\x0c\x43oachActions\x12$\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x13.protos.CoachAction\"\x0b\n\tDoKickOff\"Z\n\nDoMoveBall\x12%\n\x08position\x18\x01 \x01(\x0b\x32\x13.protos.RpcVector2D\x12%\n\x08velocity\x18\x02 \x01(\x0b\x32\x13.protos.RpcVector2D\"w\n\x0c\x44oMovePlayer\x12\x10\n\x08our_side\x18\x01 \x01(\x08\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12%\n\x08position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x16\n\x0e\x62ody_direction\x18\x04 \x01(\x02\"\x0b\n\tDoRecover\"X\n\x0c\x44oChangeMode\x12,\n\x0egame_mode_type\x18\x01 \x01(\x0e\x32\x14.protos.GameModeType\x12\x1a\n\x04side\x18\x02 \x01(\x0e\x32\x0c.protos.Side\"L\n\x12\x44oChangePlayerType\x12\x10\n\x08our_side\x18\x01 \x01(\x08\x12\x16\n\x0euniform_number\x18\x02 \x01(\x05\x12\x0c\n\x04type\x18\x03 \x01(\x05\"\xb5\x02\n\rTrainerAction\x12(\n\x0b\x64o_kick_off\x18\x01 \x01(\x0b\x32\x11.protos.DoKickOffH\x00\x12*\n\x0c\x64o_move_ball\x18\x02 \x01(\x0b\x32\x12.protos.DoMoveBallH\x00\x12.\n\x0e\x64o_move_player\x18\x03 \x01(\x0b\x32\x14.protos.DoMovePlayerH\x00\x12\'\n\ndo_recover\x18\x04 \x01(\x0b\x32\x11.protos.DoRecoverH\x00\x12.\n\x0e\x64o_change_mode\x18\x05 \x01(\x0b\x32\x14.protos.DoChangeModeH\x00\x12;\n\x15\x64o_change_player_type\x18\x06 \x01(\x0b\x32\x1a.protos.DoChangePlayerTypeH\x00\x42\x08\n\x06\x61\x63tion\"8\n\x0eTrainerActions\x12&\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x15.protos.TrainerAction\"\xdd,\n\x0bServerParam\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\x12\x16\n\x0einertia_moment\x18\x02 \x01(\x02\x12\x13\n\x0bplayer_size\x18\x03 \x01(\x02\x12\x14\n\x0cplayer_decay\x18\x04 \x01(\x02\x12\x13\n\x0bplayer_rand\x18\x05 \x01(\x02\x12\x15\n\rplayer_weight\x18\x06 \x01(\x02\x12\x18\n\x10player_speed_max\x18\x07 \x01(\x02\x12\x18\n\x10player_accel_max\x18\x08 \x01(\x02\x12\x13\n\x0bstamina_max\x18\t \x01(\x02\x12\x17\n\x0fstamina_inc_max\x18\n \x01(\x02\x12\x14\n\x0crecover_init\x18\x0b \x01(\x02\x12\x17\n\x0frecover_dec_thr\x18\x0c \x01(\x02\x12\x13\n\x0brecover_min\x18\r \x01(\x02\x12\x13\n\x0brecover_dec\x18\x0e \x01(\x02\x12\x13\n\x0b\x65\x66\x66ort_init\x18\x0f \x01(\x02\x12\x16\n\x0e\x65\x66\x66ort_dec_thr\x18\x10 \x01(\x02\x12\x12\n\neffort_min\x18\x11 \x01(\x02\x12\x12\n\neffort_dec\x18\x12 \x01(\x02\x12\x16\n\x0e\x65\x66\x66ort_inc_thr\x18\x13 \x01(\x02\x12\x12\n\neffort_inc\x18\x14 \x01(\x02\x12\x11\n\tkick_rand\x18\x15 \x01(\x02\x12\x1b\n\x13team_actuator_noise\x18\x16 \x01(\x08\x12\x1c\n\x14player_rand_factor_l\x18\x17 \x01(\x02\x12\x1c\n\x14player_rand_factor_r\x18\x18 \x01(\x02\x12\x1a\n\x12kick_rand_factor_l\x18\x19 \x01(\x02\x12\x1a\n\x12kick_rand_factor_r\x18\x1a \x01(\x02\x12\x11\n\tball_size\x18\x1b \x01(\x02\x12\x12\n\nball_decay\x18\x1c \x01(\x02\x12\x11\n\tball_rand\x18\x1d \x01(\x02\x12\x13\n\x0b\x62\x61ll_weight\x18\x1e \x01(\x02\x12\x16\n\x0e\x62\x61ll_speed_max\x18\x1f \x01(\x02\x12\x16\n\x0e\x62\x61ll_accel_max\x18 \x01(\x02\x12\x17\n\x0f\x64\x61sh_power_rate\x18! \x01(\x02\x12\x17\n\x0fkick_power_rate\x18\" \x01(\x02\x12\x17\n\x0fkickable_margin\x18# \x01(\x02\x12\x16\n\x0e\x63ontrol_radius\x18$ \x01(\x02\x12\x1c\n\x14\x63ontrol_radius_width\x18% \x01(\x02\x12\x11\n\tmax_power\x18& \x01(\x02\x12\x11\n\tmin_power\x18\' \x01(\x02\x12\x12\n\nmax_moment\x18( \x01(\x02\x12\x12\n\nmin_moment\x18) \x01(\x02\x12\x17\n\x0fmax_neck_moment\x18* \x01(\x02\x12\x17\n\x0fmin_neck_moment\x18+ \x01(\x02\x12\x16\n\x0emax_neck_angle\x18, \x01(\x02\x12\x16\n\x0emin_neck_angle\x18- \x01(\x02\x12\x15\n\rvisible_angle\x18. \x01(\x02\x12\x18\n\x10visible_distance\x18/ \x01(\x02\x12\x10\n\x08wind_dir\x18\x30 \x01(\x02\x12\x12\n\nwind_force\x18\x31 \x01(\x02\x12\x12\n\nwind_angle\x18\x32 \x01(\x02\x12\x11\n\twind_rand\x18\x33 \x01(\x02\x12\x15\n\rkickable_area\x18\x34 \x01(\x02\x12\x14\n\x0c\x63\x61tch_area_l\x18\x35 \x01(\x02\x12\x14\n\x0c\x63\x61tch_area_w\x18\x36 \x01(\x02\x12\x19\n\x11\x63\x61tch_probability\x18\x37 \x01(\x02\x12\x18\n\x10goalie_max_moves\x18\x38 \x01(\x05\x12\x1a\n\x12\x63orner_kick_margin\x18\x39 \x01(\x02\x12 \n\x18offside_active_area_size\x18: \x01(\x02\x12\x11\n\twind_none\x18; \x01(\x08\x12\x17\n\x0fuse_wind_random\x18< \x01(\x08\x12\x1b\n\x13\x63oach_say_count_max\x18= \x01(\x05\x12\x1a\n\x12\x63oach_say_msg_size\x18> \x01(\x05\x12\x16\n\x0e\x63lang_win_size\x18? \x01(\x05\x12\x18\n\x10\x63lang_define_win\x18@ \x01(\x05\x12\x16\n\x0e\x63lang_meta_win\x18\x41 \x01(\x05\x12\x18\n\x10\x63lang_advice_win\x18\x42 \x01(\x05\x12\x16\n\x0e\x63lang_info_win\x18\x43 \x01(\x05\x12\x18\n\x10\x63lang_mess_delay\x18\x44 \x01(\x05\x12\x1c\n\x14\x63lang_mess_per_cycle\x18\x45 \x01(\x05\x12\x11\n\thalf_time\x18\x46 \x01(\x05\x12\x16\n\x0esimulator_step\x18G \x01(\x05\x12\x11\n\tsend_step\x18H \x01(\x05\x12\x11\n\trecv_step\x18I \x01(\x05\x12\x17\n\x0fsense_body_step\x18J \x01(\x05\x12\x10\n\x08lcm_step\x18K \x01(\x05\x12\x1b\n\x13player_say_msg_size\x18L \x01(\x05\x12\x17\n\x0fplayer_hear_max\x18M \x01(\x05\x12\x17\n\x0fplayer_hear_inc\x18N \x01(\x05\x12\x19\n\x11player_hear_decay\x18O \x01(\x05\x12\x17\n\x0f\x63\x61tch_ban_cycle\x18P \x01(\x05\x12\x18\n\x10slow_down_factor\x18Q \x01(\x05\x12\x13\n\x0buse_offside\x18R \x01(\x08\x12\x17\n\x0fkickoff_offside\x18S \x01(\x08\x12\x1b\n\x13offside_kick_margin\x18T \x01(\x02\x12\x16\n\x0e\x61udio_cut_dist\x18U \x01(\x02\x12\x1a\n\x12\x64ist_quantize_step\x18V \x01(\x02\x12#\n\x1blandmark_dist_quantize_step\x18W \x01(\x02\x12\x19\n\x11\x64ir_quantize_step\x18X \x01(\x02\x12\x1c\n\x14\x64ist_quantize_step_l\x18Y \x01(\x02\x12\x1c\n\x14\x64ist_quantize_step_r\x18Z \x01(\x02\x12%\n\x1dlandmark_dist_quantize_step_l\x18[ \x01(\x02\x12%\n\x1dlandmark_dist_quantize_step_r\x18\\ \x01(\x02\x12\x1b\n\x13\x64ir_quantize_step_l\x18] \x01(\x02\x12\x1b\n\x13\x64ir_quantize_step_r\x18^ \x01(\x02\x12\x12\n\ncoach_mode\x18_ \x01(\x08\x12\x1f\n\x17\x63oach_with_referee_mode\x18` \x01(\x08\x12\x1a\n\x12use_old_coach_hear\x18\x61 \x01(\x08\x12%\n\x1dslowness_on_top_for_left_team\x18\x62 \x01(\x02\x12&\n\x1eslowness_on_top_for_right_team\x18\x63 \x01(\x02\x12\x14\n\x0cstart_goal_l\x18\x64 \x01(\x05\x12\x14\n\x0cstart_goal_r\x18\x65 \x01(\x05\x12\x13\n\x0b\x66ullstate_l\x18\x66 \x01(\x08\x12\x13\n\x0b\x66ullstate_r\x18g \x01(\x08\x12\x16\n\x0e\x64rop_ball_time\x18h \x01(\x05\x12\x12\n\nsynch_mode\x18i \x01(\x08\x12\x14\n\x0csynch_offset\x18j \x01(\x05\x12\x19\n\x11synch_micro_sleep\x18k \x01(\x05\x12\x14\n\x0cpoint_to_ban\x18l \x01(\x05\x12\x19\n\x11point_to_duration\x18m \x01(\x05\x12\x13\n\x0bplayer_port\x18n \x01(\x05\x12\x14\n\x0ctrainer_port\x18o \x01(\x05\x12\x19\n\x11online_coach_port\x18p \x01(\x05\x12\x14\n\x0cverbose_mode\x18q \x01(\x08\x12\x1a\n\x12\x63oach_send_vi_step\x18r \x01(\x05\x12\x13\n\x0breplay_file\x18s \x01(\t\x12\x15\n\rlandmark_file\x18t \x01(\t\x12\x12\n\nsend_comms\x18u \x01(\x08\x12\x14\n\x0ctext_logging\x18v \x01(\x08\x12\x14\n\x0cgame_logging\x18w \x01(\x08\x12\x18\n\x10game_log_version\x18x \x01(\x05\x12\x14\n\x0ctext_log_dir\x18y \x01(\t\x12\x14\n\x0cgame_log_dir\x18z \x01(\t\x12\x1b\n\x13text_log_fixed_name\x18{ \x01(\t\x12\x1b\n\x13game_log_fixed_name\x18| \x01(\t\x12\x1a\n\x12use_text_log_fixed\x18} \x01(\x08\x12\x1a\n\x12use_game_log_fixed\x18~ \x01(\x08\x12\x1a\n\x12use_text_log_dated\x18\x7f \x01(\x08\x12\x1b\n\x12use_game_log_dated\x18\x80\x01 \x01(\x08\x12\x18\n\x0flog_date_format\x18\x81\x01 \x01(\t\x12\x12\n\tlog_times\x18\x82\x01 \x01(\x08\x12\x17\n\x0erecord_message\x18\x83\x01 \x01(\x08\x12\x1d\n\x14text_log_compression\x18\x84\x01 \x01(\x05\x12\x1d\n\x14game_log_compression\x18\x85\x01 \x01(\x05\x12\x14\n\x0buse_profile\x18\x86\x01 \x01(\x08\x12\x14\n\x0btackle_dist\x18\x87\x01 \x01(\x02\x12\x19\n\x10tackle_back_dist\x18\x88\x01 \x01(\x02\x12\x15\n\x0ctackle_width\x18\x89\x01 \x01(\x02\x12\x18\n\x0ftackle_exponent\x18\x8a\x01 \x01(\x02\x12\x16\n\rtackle_cycles\x18\x8b\x01 \x01(\x05\x12\x1a\n\x11tackle_power_rate\x18\x8c\x01 \x01(\x02\x12\x1d\n\x14\x66reeform_wait_period\x18\x8d\x01 \x01(\x05\x12\x1d\n\x14\x66reeform_send_period\x18\x8e\x01 \x01(\x05\x12\x19\n\x10\x66ree_kick_faults\x18\x8f\x01 \x01(\x08\x12\x14\n\x0b\x62\x61\x63k_passes\x18\x90\x01 \x01(\x08\x12\x1a\n\x11proper_goal_kicks\x18\x91\x01 \x01(\x08\x12\x19\n\x10stopped_ball_vel\x18\x92\x01 \x01(\x02\x12\x17\n\x0emax_goal_kicks\x18\x93\x01 \x01(\x05\x12\x16\n\rclang_del_win\x18\x94\x01 \x01(\x05\x12\x17\n\x0e\x63lang_rule_win\x18\x95\x01 \x01(\x05\x12\x12\n\tauto_mode\x18\x96\x01 \x01(\x08\x12\x16\n\rkick_off_wait\x18\x97\x01 \x01(\x05\x12\x15\n\x0c\x63onnect_wait\x18\x98\x01 \x01(\x05\x12\x17\n\x0egame_over_wait\x18\x99\x01 \x01(\x05\x12\x15\n\x0cteam_l_start\x18\x9a\x01 \x01(\t\x12\x15\n\x0cteam_r_start\x18\x9b\x01 \x01(\t\x12\x16\n\rkeepaway_mode\x18\x9c\x01 \x01(\x08\x12\x18\n\x0fkeepaway_length\x18\x9d\x01 \x01(\x02\x12\x17\n\x0ekeepaway_width\x18\x9e\x01 \x01(\x02\x12\x19\n\x10keepaway_logging\x18\x9f\x01 \x01(\x08\x12\x19\n\x10keepaway_log_dir\x18\xa0\x01 \x01(\t\x12 \n\x17keepaway_log_fixed_name\x18\xa1\x01 \x01(\t\x12\x1b\n\x12keepaway_log_fixed\x18\xa2\x01 \x01(\x08\x12\x1b\n\x12keepaway_log_dated\x18\xa3\x01 \x01(\x08\x12\x17\n\x0ekeepaway_start\x18\xa4\x01 \x01(\x05\x12\x18\n\x0fnr_normal_halfs\x18\xa5\x01 \x01(\x05\x12\x17\n\x0enr_extra_halfs\x18\xa6\x01 \x01(\x05\x12\x1b\n\x12penalty_shoot_outs\x18\xa7\x01 \x01(\x08\x12\x1e\n\x15pen_before_setup_wait\x18\xa8\x01 \x01(\x05\x12\x17\n\x0epen_setup_wait\x18\xa9\x01 \x01(\x05\x12\x17\n\x0epen_ready_wait\x18\xaa\x01 \x01(\x05\x12\x17\n\x0epen_taken_wait\x18\xab\x01 \x01(\x05\x12\x15\n\x0cpen_nr_kicks\x18\xac\x01 \x01(\x05\x12\x1c\n\x13pen_max_extra_kicks\x18\xad\x01 \x01(\x05\x12\x13\n\npen_dist_x\x18\xae\x01 \x01(\x02\x12\x1a\n\x11pen_random_winner\x18\xaf\x01 \x01(\x08\x12\x1d\n\x14pen_allow_mult_kicks\x18\xb0\x01 \x01(\x08\x12\x1e\n\x15pen_max_goalie_dist_x\x18\xb1\x01 \x01(\x02\x12 \n\x17pen_coach_moves_players\x18\xb2\x01 \x01(\x08\x12\x13\n\nmodule_dir\x18\xb3\x01 \x01(\t\x12\x18\n\x0f\x62\x61ll_stuck_area\x18\xb4\x01 \x01(\x02\x12\x17\n\x0e\x63oach_msg_file\x18\xb5\x01 \x01(\t\x12\x19\n\x10max_tackle_power\x18\xb6\x01 \x01(\x02\x12\x1e\n\x15max_back_tackle_power\x18\xb7\x01 \x01(\x02\x12\x1d\n\x14player_speed_max_min\x18\xb8\x01 \x01(\x02\x12\x16\n\rextra_stamina\x18\xb9\x01 \x01(\x02\x12\x19\n\x10synch_see_offset\x18\xba\x01 \x01(\x05\x12\x18\n\x0f\x65xtra_half_time\x18\xbb\x01 \x01(\x05\x12\x19\n\x10stamina_capacity\x18\xbc\x01 \x01(\x02\x12\x17\n\x0emax_dash_angle\x18\xbd\x01 \x01(\x02\x12\x17\n\x0emin_dash_angle\x18\xbe\x01 \x01(\x02\x12\x18\n\x0f\x64\x61sh_angle_step\x18\xbf\x01 \x01(\x02\x12\x17\n\x0eside_dash_rate\x18\xc0\x01 \x01(\x02\x12\x17\n\x0e\x62\x61\x63k_dash_rate\x18\xc1\x01 \x01(\x02\x12\x17\n\x0emax_dash_power\x18\xc2\x01 \x01(\x02\x12\x17\n\x0emin_dash_power\x18\xc3\x01 \x01(\x02\x12\x1b\n\x12tackle_rand_factor\x18\xc4\x01 \x01(\x02\x12 \n\x17\x66oul_detect_probability\x18\xc5\x01 \x01(\x02\x12\x16\n\rfoul_exponent\x18\xc6\x01 \x01(\x02\x12\x14\n\x0b\x66oul_cycles\x18\xc7\x01 \x01(\x05\x12\x14\n\x0bgolden_goal\x18\xc8\x01 \x01(\x08\x12\x1d\n\x14red_card_probability\x18\xc9\x01 \x01(\x02\x12!\n\x18illegal_defense_duration\x18\xca\x01 \x01(\x05\x12\x1f\n\x16illegal_defense_number\x18\xcb\x01 \x01(\x05\x12\x1f\n\x16illegal_defense_dist_x\x18\xcc\x01 \x01(\x02\x12\x1e\n\x15illegal_defense_width\x18\xcd\x01 \x01(\x02\x12\x19\n\x10\x66ixed_teamname_l\x18\xce\x01 \x01(\t\x12\x19\n\x10\x66ixed_teamname_r\x18\xcf\x01 \x01(\t\x12\x18\n\x0fmax_catch_angle\x18\xd0\x01 \x01(\x02\x12\x18\n\x0fmin_catch_angle\x18\xd1\x01 \x01(\x02\x12\x14\n\x0brandom_seed\x18\xd2\x01 \x01(\x05\x12\x1f\n\x16long_kick_power_factor\x18\xd3\x01 \x01(\x02\x12\x18\n\x0flong_kick_delay\x18\xd4\x01 \x01(\x05\x12\x15\n\x0cmax_monitors\x18\xd5\x01 \x01(\x05\x12\x17\n\x0e\x63\x61tchable_area\x18\xd6\x01 \x01(\x02\x12\x17\n\x0ereal_speed_max\x18\xd7\x01 \x01(\x02\x12\x1a\n\x11pitch_half_length\x18\xd8\x01 \x01(\x02\x12\x19\n\x10pitch_half_width\x18\xd9\x01 \x01(\x02\x12 \n\x17our_penalty_area_line_x\x18\xda\x01 \x01(\x02\x12\"\n\x19their_penalty_area_line_x\x18\xdb\x01 \x01(\x02\x12 \n\x17penalty_area_half_width\x18\xdc\x01 \x01(\x02\x12\x1c\n\x13penalty_area_length\x18\xdd\x01 \x01(\x02\x12\x13\n\ngoal_width\x18\xde\x01 \x01(\x02\"\x8d\x08\n\x0bPlayerParam\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\x12\x14\n\x0cplayer_types\x18\x02 \x01(\x05\x12\x10\n\x08subs_max\x18\x03 \x01(\x05\x12\x0e\n\x06pt_max\x18\x04 \x01(\x05\x12\x1f\n\x17\x61llow_mult_default_type\x18\x05 \x01(\x08\x12\"\n\x1aplayer_speed_max_delta_min\x18\x06 \x01(\x02\x12\"\n\x1aplayer_speed_max_delta_max\x18\x07 \x01(\x02\x12$\n\x1cstamina_inc_max_delta_factor\x18\x08 \x01(\x02\x12\x1e\n\x16player_decay_delta_min\x18\t \x01(\x02\x12\x1e\n\x16player_decay_delta_max\x18\n \x01(\x02\x12#\n\x1binertia_moment_delta_factor\x18\x0b \x01(\x02\x12!\n\x19\x64\x61sh_power_rate_delta_min\x18\x0c \x01(\x02\x12!\n\x19\x64\x61sh_power_rate_delta_max\x18\r \x01(\x02\x12 \n\x18player_size_delta_factor\x18\x0e \x01(\x02\x12!\n\x19kickable_margin_delta_min\x18\x0f \x01(\x02\x12!\n\x19kickable_margin_delta_max\x18\x10 \x01(\x02\x12\x1e\n\x16kick_rand_delta_factor\x18\x11 \x01(\x02\x12\x1f\n\x17\x65xtra_stamina_delta_min\x18\x12 \x01(\x02\x12\x1f\n\x17\x65xtra_stamina_delta_max\x18\x13 \x01(\x02\x12\x1f\n\x17\x65\x66\x66ort_max_delta_factor\x18\x14 \x01(\x02\x12\x1f\n\x17\x65\x66\x66ort_min_delta_factor\x18\x15 \x01(\x02\x12\x13\n\x0brandom_seed\x18\x16 \x01(\x05\x12%\n\x1dnew_dash_power_rate_delta_min\x18\x17 \x01(\x02\x12%\n\x1dnew_dash_power_rate_delta_max\x18\x18 \x01(\x02\x12(\n new_stamina_inc_max_delta_factor\x18\x19 \x01(\x02\x12!\n\x19kick_power_rate_delta_min\x18\x1a \x01(\x02\x12!\n\x19kick_power_rate_delta_max\x18\x1b \x01(\x02\x12,\n$foul_detect_probability_delta_factor\x18\x1c \x01(\x02\x12$\n\x1c\x63\x61tchable_area_l_stretch_min\x18\x1d \x01(\x02\x12$\n\x1c\x63\x61tchable_area_l_stretch_max\x18\x1e \x01(\x02\"\xbf\x07\n\nPlayerType\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x17\n\x0fstamina_inc_max\x18\x03 \x01(\x02\x12\x14\n\x0cplayer_decay\x18\x04 \x01(\x02\x12\x16\n\x0einertia_moment\x18\x05 \x01(\x02\x12\x17\n\x0f\x64\x61sh_power_rate\x18\x06 \x01(\x02\x12\x13\n\x0bplayer_size\x18\x07 \x01(\x02\x12\x17\n\x0fkickable_margin\x18\x08 \x01(\x02\x12\x11\n\tkick_rand\x18\t \x01(\x02\x12\x15\n\rextra_stamina\x18\n \x01(\x02\x12\x12\n\neffort_max\x18\x0b \x01(\x02\x12\x12\n\neffort_min\x18\x0c \x01(\x02\x12\x17\n\x0fkick_power_rate\x18\r \x01(\x02\x12\x1f\n\x17\x66oul_detect_probability\x18\x0e \x01(\x02\x12 \n\x18\x63\x61tchable_area_l_stretch\x18\x0f \x01(\x02\x12\x17\n\x0funum_far_length\x18\x10 \x01(\x02\x12\x1b\n\x13unum_too_far_length\x18\x11 \x01(\x02\x12\x17\n\x0fteam_far_length\x18\x12 \x01(\x02\x12\x1b\n\x13team_too_far_length\x18\x13 \x01(\x02\x12%\n\x1dplayer_max_observation_length\x18\x14 \x01(\x02\x12\x1b\n\x13\x62\x61ll_vel_far_length\x18\x15 \x01(\x02\x12\x1f\n\x17\x62\x61ll_vel_too_far_length\x18\x16 \x01(\x02\x12#\n\x1b\x62\x61ll_max_observation_length\x18\x17 \x01(\x02\x12\x1b\n\x13\x66lag_chg_far_length\x18\x18 \x01(\x02\x12\x1f\n\x17\x66lag_chg_too_far_length\x18\x19 \x01(\x02\x12#\n\x1b\x66lag_max_observation_length\x18\x1a \x01(\x02\x12\x15\n\rkickable_area\x18\x1b \x01(\x02\x12\x1f\n\x17reliable_catchable_dist\x18\x1c \x01(\x02\x12\x1a\n\x12max_catchable_dist\x18\x1d \x01(\x02\x12\x16\n\x0ereal_speed_max\x18\x1e \x01(\x02\x12\x19\n\x11player_speed_max2\x18\x1f \x01(\x02\x12\x17\n\x0freal_speed_max2\x18 \x01(\x02\x12!\n\x19\x63ycles_to_reach_max_speed\x18! \x01(\x05\x12\x18\n\x10player_speed_max\x18\" \x01(\x02\"\xad\x03\n\x14RpcCooperativeAction\x12+\n\x08\x63\x61tegory\x18\x01 \x01(\x0e\x32\x19.protos.RpcActionCategory\x12\r\n\x05index\x18\x02 \x01(\x05\x12\x13\n\x0bsender_unum\x18\x03 \x01(\x05\x12\x13\n\x0btarget_unum\x18\x04 \x01(\x05\x12)\n\x0ctarget_point\x18\x05 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x18\n\x10\x66irst_ball_speed\x18\x06 \x01(\x01\x12\x19\n\x11\x66irst_turn_moment\x18\x07 \x01(\x01\x12\x18\n\x10\x66irst_dash_power\x18\x08 \x01(\x01\x12!\n\x19\x66irst_dash_angle_relative\x18\t \x01(\x01\x12\x15\n\rduration_step\x18\n \x01(\x05\x12\x12\n\nkick_count\x18\x0b \x01(\x05\x12\x12\n\nturn_count\x18\x0c \x01(\x05\x12\x12\n\ndash_count\x18\r \x01(\x05\x12\x14\n\x0c\x66inal_action\x18\x0e \x01(\x08\x12\x13\n\x0b\x64\x65scription\x18\x0f \x01(\t\x12\x14\n\x0cparent_index\x18\x10 \x01(\x05\"\xcf\x01\n\x0fRpcPredictState\x12\x12\n\nspend_time\x18\x01 \x01(\x05\x12\x18\n\x10\x62\x61ll_holder_unum\x18\x02 \x01(\x05\x12*\n\rball_position\x18\x03 \x01(\x0b\x32\x13.protos.RpcVector2D\x12*\n\rball_velocity\x18\x04 \x01(\x0b\x32\x13.protos.RpcVector2D\x12\x1a\n\x12our_defense_line_x\x18\x05 \x01(\x01\x12\x1a\n\x12our_offense_line_x\x18\x06 \x01(\x01\"\x82\x01\n\x0eRpcActionState\x12,\n\x06\x61\x63tion\x18\x01 \x01(\x0b\x32\x1c.protos.RpcCooperativeAction\x12.\n\rpredict_state\x18\x02 \x01(\x0b\x32\x17.protos.RpcPredictState\x12\x12\n\nevaluation\x18\x03 \x01(\x01\"\xef\x01\n\x18\x42\x65stPlannerActionRequest\x12\x33\n\x11register_response\x18\x01 \x01(\x0b\x32\x18.protos.RegisterResponse\x12:\n\x05pairs\x18\x02 \x03(\x0b\x32+.protos.BestPlannerActionRequest.PairsEntry\x12\x1c\n\x05state\x18\x03 \x01(\x0b\x32\r.protos.State\x1a\x44\n\nPairsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.protos.RpcActionState:\x02\x38\x01\"*\n\x19\x42\x65stPlannerActionResponse\x12\r\n\x05index\x18\x01 \x01(\x05\"\x07\n\x05\x45mpty*-\n\tViewWidth\x12\n\n\x06NARROW\x10\x00\x12\n\n\x06NORMAL\x10\x01\x12\x08\n\x04WIDE\x10\x02*(\n\x04Side\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x08\n\x04LEFT\x10\x01\x12\t\n\x05RIGHT\x10\x02*\xb2\x02\n\x0bLoggerLevel\x12\r\n\tNoneLevel\x10\x00\x12\n\n\x06SYSTEM\x10\x01\x12\n\n\x06SENSOR\x10\x02\x12\t\n\x05WORLD\x10\x04\x12\n\n\x06\x41\x43TION\x10\x08\x12\r\n\tINTERCEPT\x10\x10\x12\x08\n\x04KICK\x10 \x12\x08\n\x04HOLD\x10@\x12\x0c\n\x07\x44RIBBLE\x10\x80\x01\x12\t\n\x04PASS\x10\x80\x02\x12\n\n\x05\x43ROSS\x10\x80\x04\x12\n\n\x05SHOOT\x10\x80\x08\x12\n\n\x05\x43LEAR\x10\x80\x10\x12\n\n\x05\x42LOCK\x10\x80 \x12\t\n\x04MARK\x10\x80@\x12\x11\n\x0bPOSITIONING\x10\x80\x80\x01\x12\n\n\x04ROLE\x10\x80\x80\x02\x12\n\n\x04TEAM\x10\x80\x80\x04\x12\x13\n\rCOMMUNICATION\x10\x80\x80\x08\x12\x0e\n\x08\x41NALYZER\x10\x80\x80\x10\x12\x12\n\x0c\x41\x43TION_CHAIN\x10\x80\x80 \x12\n\n\x04PLAN\x10\x80\x80@*v\n\x13InterceptActionType\x12!\n\x1dUNKNOWN_Intercept_Action_Type\x10\x00\x12\r\n\tOMNI_DASH\x10\x01\x12\x15\n\x11TURN_FORWARD_DASH\x10\x02\x12\x16\n\x12TURN_BACKWARD_DASH\x10\x03*\xbb\x04\n\x0cGameModeType\x12\x11\n\rBeforeKickOff\x10\x00\x12\x0c\n\x08TimeOver\x10\x01\x12\n\n\x06PlayOn\x10\x02\x12\x0c\n\x08KickOff_\x10\x03\x12\x0b\n\x07KickIn_\x10\x04\x12\r\n\tFreeKick_\x10\x05\x12\x0f\n\x0b\x43ornerKick_\x10\x06\x12\r\n\tGoalKick_\x10\x07\x12\x0e\n\nAfterGoal_\x10\x08\x12\x0c\n\x08OffSide_\x10\t\x12\x10\n\x0cPenaltyKick_\x10\n\x12\x11\n\rFirstHalfOver\x10\x0b\x12\t\n\x05Pause\x10\x0c\x12\t\n\x05Human\x10\r\x12\x0f\n\x0b\x46oulCharge_\x10\x0e\x12\r\n\tFoulPush_\x10\x0f\x12\x19\n\x15\x46oulMultipleAttacker_\x10\x10\x12\x10\n\x0c\x46oulBallOut_\x10\x11\x12\r\n\tBackPass_\x10\x12\x12\x12\n\x0e\x46reeKickFault_\x10\x13\x12\x0f\n\x0b\x43\x61tchFault_\x10\x14\x12\x10\n\x0cIndFreeKick_\x10\x15\x12\x11\n\rPenaltySetup_\x10\x16\x12\x11\n\rPenaltyReady_\x10\x17\x12\x11\n\rPenaltyTaken_\x10\x18\x12\x10\n\x0cPenaltyMiss_\x10\x19\x12\x11\n\rPenaltyScore_\x10\x1a\x12\x13\n\x0fIllegalDefense_\x10\x1b\x12\x13\n\x0fPenaltyOnfield_\x10\x1c\x12\x10\n\x0cPenaltyFoul_\x10\x1d\x12\x10\n\x0cGoalieCatch_\x10\x1e\x12\x0e\n\nExtendHalf\x10\x1f\x12\x0c\n\x08MODE_MAX\x10 *2\n\tAgentType\x12\x0b\n\x07PlayerT\x10\x00\x12\n\n\x06\x43oachT\x10\x01\x12\x0c\n\x08TrainerT\x10\x02*w\n\x11RpcActionCategory\x12\x0b\n\x07\x41\x43_Hold\x10\x00\x12\x0e\n\nAC_Dribble\x10\x01\x12\x0b\n\x07\x41\x43_Pass\x10\x02\x12\x0c\n\x08\x41\x43_Shoot\x10\x03\x12\x0c\n\x08\x41\x43_Clear\x10\x04\x12\x0b\n\x07\x41\x43_Move\x10\x05\x12\x0f\n\x0b\x41\x43_NoAction\x10\x06\x32\xfb\x04\n\x04Game\x12:\n\x10GetPlayerActions\x12\r.protos.State\x1a\x15.protos.PlayerActions\"\x00\x12\x38\n\x0fGetCoachActions\x12\r.protos.State\x1a\x14.protos.CoachActions\"\x00\x12<\n\x11GetTrainerActions\x12\r.protos.State\x1a\x16.protos.TrainerActions\"\x00\x12\x37\n\x0fSendInitMessage\x12\x13.protos.InitMessage\x1a\r.protos.Empty\"\x00\x12\x38\n\x10SendServerParams\x12\x13.protos.ServerParam\x1a\r.protos.Empty\"\x00\x12\x38\n\x10SendPlayerParams\x12\x13.protos.PlayerParam\x1a\r.protos.Empty\"\x00\x12\x35\n\x0eSendPlayerType\x12\x12.protos.PlayerType\x1a\r.protos.Empty\"\x00\x12?\n\x08Register\x12\x17.protos.RegisterRequest\x1a\x18.protos.RegisterResponse\"\x00\x12;\n\x0eSendByeCommand\x12\x18.protos.RegisterResponse\x1a\r.protos.Empty\"\x00\x12]\n\x14GetBestPlannerAction\x12 .protos.BestPlannerActionRequest\x1a!.protos.BestPlannerActionResponse\"\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -28,18 +27,22 @@ _globals['_WORLDMODEL_THEIRPLAYERSDICTENTRY']._serialized_options = b'8\001' _globals['_WORLDMODEL_HELIOSHOMEPOSITIONSENTRY']._loaded_options = None _globals['_WORLDMODEL_HELIOSHOMEPOSITIONSENTRY']._serialized_options = b'8\001' - _globals['_VIEWWIDTH']._serialized_start=25372 - _globals['_VIEWWIDTH']._serialized_end=25417 - _globals['_SIDE']._serialized_start=25419 - _globals['_SIDE']._serialized_end=25459 - _globals['_LOGGERLEVEL']._serialized_start=25462 - _globals['_LOGGERLEVEL']._serialized_end=25768 - _globals['_INTERCEPTACTIONTYPE']._serialized_start=25770 - _globals['_INTERCEPTACTIONTYPE']._serialized_end=25888 - _globals['_GAMEMODETYPE']._serialized_start=25891 - _globals['_GAMEMODETYPE']._serialized_end=26462 - _globals['_AGENTTYPE']._serialized_start=26464 - _globals['_AGENTTYPE']._serialized_end=26514 + _globals['_BESTPLANNERACTIONREQUEST_PAIRSENTRY']._loaded_options = None + _globals['_BESTPLANNERACTIONREQUEST_PAIRSENTRY']._serialized_options = b'8\001' + _globals['_VIEWWIDTH']._serialized_start=26463 + _globals['_VIEWWIDTH']._serialized_end=26508 + _globals['_SIDE']._serialized_start=26510 + _globals['_SIDE']._serialized_end=26550 + _globals['_LOGGERLEVEL']._serialized_start=26553 + _globals['_LOGGERLEVEL']._serialized_end=26859 + _globals['_INTERCEPTACTIONTYPE']._serialized_start=26861 + _globals['_INTERCEPTACTIONTYPE']._serialized_end=26979 + _globals['_GAMEMODETYPE']._serialized_start=26982 + _globals['_GAMEMODETYPE']._serialized_end=27553 + _globals['_AGENTTYPE']._serialized_start=27555 + _globals['_AGENTTYPE']._serialized_end=27605 + _globals['_RPCACTIONCATEGORY']._serialized_start=27607 + _globals['_RPCACTIONCATEGORY']._serialized_end=27726 _globals['_RPCVECTOR2D']._serialized_start=25 _globals['_RPCVECTOR2D']._serialized_end=89 _globals['_REGISTERREQUEST']._serialized_start=91 @@ -247,56 +250,67 @@ _globals['_HELIOSSHOOT']._serialized_start=12773 _globals['_HELIOSSHOOT']._serialized_end=12786 _globals['_HELIOSCHAINACTION']._serialized_start=12789 - _globals['_HELIOSCHAINACTION']._serialized_end=12997 - _globals['_HELIOSBASICOFFENSIVE']._serialized_start=12999 - _globals['_HELIOSBASICOFFENSIVE']._serialized_end=13021 - _globals['_HELIOSBASICMOVE']._serialized_start=13023 - _globals['_HELIOSBASICMOVE']._serialized_end=13040 - _globals['_HELIOSSETPLAY']._serialized_start=13042 - _globals['_HELIOSSETPLAY']._serialized_end=13057 - _globals['_HELIOSPENALTY']._serialized_start=13059 - _globals['_HELIOSPENALTY']._serialized_end=13074 - _globals['_HELIOSCOMMUNICAION']._serialized_start=13076 - _globals['_HELIOSCOMMUNICAION']._serialized_end=13096 - _globals['_PLAYERACTION']._serialized_start=13099 - _globals['_PLAYERACTION']._serialized_end=16398 - _globals['_PLAYERACTIONS']._serialized_start=16400 - _globals['_PLAYERACTIONS']._serialized_end=16481 - _globals['_CHANGEPLAYERTYPE']._serialized_start=16483 - _globals['_CHANGEPLAYERTYPE']._serialized_end=16539 - _globals['_DOHELIOSSUBSTITUTE']._serialized_start=16541 - _globals['_DOHELIOSSUBSTITUTE']._serialized_end=16561 - _globals['_DOHELIOSSAYPLAYERTYPES']._serialized_start=16563 - _globals['_DOHELIOSSAYPLAYERTYPES']._serialized_end=16587 - _globals['_COACHACTION']._serialized_start=16590 - _globals['_COACHACTION']._serialized_end=16800 - _globals['_COACHACTIONS']._serialized_start=16802 - _globals['_COACHACTIONS']._serialized_end=16854 - _globals['_DOKICKOFF']._serialized_start=16856 - _globals['_DOKICKOFF']._serialized_end=16867 - _globals['_DOMOVEBALL']._serialized_start=16869 - _globals['_DOMOVEBALL']._serialized_end=16959 - _globals['_DOMOVEPLAYER']._serialized_start=16961 - _globals['_DOMOVEPLAYER']._serialized_end=17080 - _globals['_DORECOVER']._serialized_start=17082 - _globals['_DORECOVER']._serialized_end=17093 - _globals['_DOCHANGEMODE']._serialized_start=17095 - _globals['_DOCHANGEMODE']._serialized_end=17183 - _globals['_DOCHANGEPLAYERTYPE']._serialized_start=17185 - _globals['_DOCHANGEPLAYERTYPE']._serialized_end=17261 - _globals['_TRAINERACTION']._serialized_start=17264 - _globals['_TRAINERACTION']._serialized_end=17573 - _globals['_TRAINERACTIONS']._serialized_start=17575 - _globals['_TRAINERACTIONS']._serialized_end=17631 - _globals['_SERVERPARAM']._serialized_start=17634 - _globals['_SERVERPARAM']._serialized_end=23359 - _globals['_PLAYERPARAM']._serialized_start=23362 - _globals['_PLAYERPARAM']._serialized_end=24399 - _globals['_PLAYERTYPE']._serialized_start=24402 - _globals['_PLAYERTYPE']._serialized_end=25361 - _globals['_EMPTY']._serialized_start=25363 - _globals['_EMPTY']._serialized_end=25370 - _globals['_GAME']._serialized_start=26517 - _globals['_GAME']._serialized_end=27057 - + _globals['_HELIOSCHAINACTION']._serialized_end=13027 + _globals['_HELIOSBASICOFFENSIVE']._serialized_start=13029 + _globals['_HELIOSBASICOFFENSIVE']._serialized_end=13051 + _globals['_HELIOSBASICMOVE']._serialized_start=13053 + _globals['_HELIOSBASICMOVE']._serialized_end=13070 + _globals['_HELIOSSETPLAY']._serialized_start=13072 + _globals['_HELIOSSETPLAY']._serialized_end=13087 + _globals['_HELIOSPENALTY']._serialized_start=13089 + _globals['_HELIOSPENALTY']._serialized_end=13104 + _globals['_HELIOSCOMMUNICAION']._serialized_start=13106 + _globals['_HELIOSCOMMUNICAION']._serialized_end=13126 + _globals['_PLAYERACTION']._serialized_start=13129 + _globals['_PLAYERACTION']._serialized_end=16428 + _globals['_PLAYERACTIONS']._serialized_start=16430 + _globals['_PLAYERACTIONS']._serialized_end=16511 + _globals['_CHANGEPLAYERTYPE']._serialized_start=16513 + _globals['_CHANGEPLAYERTYPE']._serialized_end=16569 + _globals['_DOHELIOSSUBSTITUTE']._serialized_start=16571 + _globals['_DOHELIOSSUBSTITUTE']._serialized_end=16591 + _globals['_DOHELIOSSAYPLAYERTYPES']._serialized_start=16593 + _globals['_DOHELIOSSAYPLAYERTYPES']._serialized_end=16617 + _globals['_COACHACTION']._serialized_start=16620 + _globals['_COACHACTION']._serialized_end=16830 + _globals['_COACHACTIONS']._serialized_start=16832 + _globals['_COACHACTIONS']._serialized_end=16884 + _globals['_DOKICKOFF']._serialized_start=16886 + _globals['_DOKICKOFF']._serialized_end=16897 + _globals['_DOMOVEBALL']._serialized_start=16899 + _globals['_DOMOVEBALL']._serialized_end=16989 + _globals['_DOMOVEPLAYER']._serialized_start=16991 + _globals['_DOMOVEPLAYER']._serialized_end=17110 + _globals['_DORECOVER']._serialized_start=17112 + _globals['_DORECOVER']._serialized_end=17123 + _globals['_DOCHANGEMODE']._serialized_start=17125 + _globals['_DOCHANGEMODE']._serialized_end=17213 + _globals['_DOCHANGEPLAYERTYPE']._serialized_start=17215 + _globals['_DOCHANGEPLAYERTYPE']._serialized_end=17291 + _globals['_TRAINERACTION']._serialized_start=17294 + _globals['_TRAINERACTION']._serialized_end=17603 + _globals['_TRAINERACTIONS']._serialized_start=17605 + _globals['_TRAINERACTIONS']._serialized_end=17661 + _globals['_SERVERPARAM']._serialized_start=17664 + _globals['_SERVERPARAM']._serialized_end=23389 + _globals['_PLAYERPARAM']._serialized_start=23392 + _globals['_PLAYERPARAM']._serialized_end=24429 + _globals['_PLAYERTYPE']._serialized_start=24432 + _globals['_PLAYERTYPE']._serialized_end=25391 + _globals['_RPCCOOPERATIVEACTION']._serialized_start=25394 + _globals['_RPCCOOPERATIVEACTION']._serialized_end=25823 + _globals['_RPCPREDICTSTATE']._serialized_start=25826 + _globals['_RPCPREDICTSTATE']._serialized_end=26033 + _globals['_RPCACTIONSTATE']._serialized_start=26036 + _globals['_RPCACTIONSTATE']._serialized_end=26166 + _globals['_BESTPLANNERACTIONREQUEST']._serialized_start=26169 + _globals['_BESTPLANNERACTIONREQUEST']._serialized_end=26408 + _globals['_BESTPLANNERACTIONREQUEST_PAIRSENTRY']._serialized_start=26340 + _globals['_BESTPLANNERACTIONREQUEST_PAIRSENTRY']._serialized_end=26408 + _globals['_BESTPLANNERACTIONRESPONSE']._serialized_start=26410 + _globals['_BESTPLANNERACTIONRESPONSE']._serialized_end=26452 + _globals['_EMPTY']._serialized_start=26454 + _globals['_EMPTY']._serialized_end=26461 + _globals['_GAME']._serialized_start=27729 + _globals['_GAME']._serialized_end=28364 # @@protoc_insertion_point(module_scope) diff --git a/service_pb2.pyi b/service_pb2.pyi index ea0625a..365adcc 100644 --- a/service_pb2.pyi +++ b/service_pb2.pyi @@ -91,6 +91,16 @@ class AgentType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): PlayerT: _ClassVar[AgentType] CoachT: _ClassVar[AgentType] TrainerT: _ClassVar[AgentType] + +class RpcActionCategory(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + AC_Hold: _ClassVar[RpcActionCategory] + AC_Dribble: _ClassVar[RpcActionCategory] + AC_Pass: _ClassVar[RpcActionCategory] + AC_Shoot: _ClassVar[RpcActionCategory] + AC_Clear: _ClassVar[RpcActionCategory] + AC_Move: _ClassVar[RpcActionCategory] + AC_NoAction: _ClassVar[RpcActionCategory] NARROW: ViewWidth NORMAL: ViewWidth WIDE: ViewWidth @@ -159,6 +169,13 @@ MODE_MAX: GameModeType PlayerT: AgentType CoachT: AgentType TrainerT: AgentType +AC_Hold: RpcActionCategory +AC_Dribble: RpcActionCategory +AC_Pass: RpcActionCategory +AC_Shoot: RpcActionCategory +AC_Clear: RpcActionCategory +AC_Move: RpcActionCategory +AC_NoAction: RpcActionCategory class RpcVector2D(_message.Message): __slots__ = ("x", "y", "dist", "angle") @@ -1280,7 +1297,7 @@ class HeliosShoot(_message.Message): def __init__(self) -> None: ... class HeliosChainAction(_message.Message): - __slots__ = ("direct_pass", "lead_pass", "through_pass", "short_dribble", "long_dribble", "cross", "simple_pass", "simple_dribble", "simple_shoot") + __slots__ = ("direct_pass", "lead_pass", "through_pass", "short_dribble", "long_dribble", "cross", "simple_pass", "simple_dribble", "simple_shoot", "server_side_decision") DIRECT_PASS_FIELD_NUMBER: _ClassVar[int] LEAD_PASS_FIELD_NUMBER: _ClassVar[int] THROUGH_PASS_FIELD_NUMBER: _ClassVar[int] @@ -1290,6 +1307,7 @@ class HeliosChainAction(_message.Message): SIMPLE_PASS_FIELD_NUMBER: _ClassVar[int] SIMPLE_DRIBBLE_FIELD_NUMBER: _ClassVar[int] SIMPLE_SHOOT_FIELD_NUMBER: _ClassVar[int] + SERVER_SIDE_DECISION_FIELD_NUMBER: _ClassVar[int] direct_pass: bool lead_pass: bool through_pass: bool @@ -1299,7 +1317,8 @@ class HeliosChainAction(_message.Message): simple_pass: bool simple_dribble: bool simple_shoot: bool - def __init__(self, direct_pass: bool = ..., lead_pass: bool = ..., through_pass: bool = ..., short_dribble: bool = ..., long_dribble: bool = ..., cross: bool = ..., simple_pass: bool = ..., simple_dribble: bool = ..., simple_shoot: bool = ...) -> None: ... + server_side_decision: bool + def __init__(self, direct_pass: bool = ..., lead_pass: bool = ..., through_pass: bool = ..., short_dribble: bool = ..., long_dribble: bool = ..., cross: bool = ..., simple_pass: bool = ..., simple_dribble: bool = ..., simple_shoot: bool = ..., server_side_decision: bool = ...) -> None: ... class HeliosBasicOffensive(_message.Message): __slots__ = () @@ -2145,6 +2164,91 @@ class PlayerType(_message.Message): player_speed_max: float def __init__(self, register_response: _Optional[_Union[RegisterResponse, _Mapping]] = ..., id: _Optional[int] = ..., stamina_inc_max: _Optional[float] = ..., player_decay: _Optional[float] = ..., inertia_moment: _Optional[float] = ..., dash_power_rate: _Optional[float] = ..., player_size: _Optional[float] = ..., kickable_margin: _Optional[float] = ..., kick_rand: _Optional[float] = ..., extra_stamina: _Optional[float] = ..., effort_max: _Optional[float] = ..., effort_min: _Optional[float] = ..., kick_power_rate: _Optional[float] = ..., foul_detect_probability: _Optional[float] = ..., catchable_area_l_stretch: _Optional[float] = ..., unum_far_length: _Optional[float] = ..., unum_too_far_length: _Optional[float] = ..., team_far_length: _Optional[float] = ..., team_too_far_length: _Optional[float] = ..., player_max_observation_length: _Optional[float] = ..., ball_vel_far_length: _Optional[float] = ..., ball_vel_too_far_length: _Optional[float] = ..., ball_max_observation_length: _Optional[float] = ..., flag_chg_far_length: _Optional[float] = ..., flag_chg_too_far_length: _Optional[float] = ..., flag_max_observation_length: _Optional[float] = ..., kickable_area: _Optional[float] = ..., reliable_catchable_dist: _Optional[float] = ..., max_catchable_dist: _Optional[float] = ..., real_speed_max: _Optional[float] = ..., player_speed_max2: _Optional[float] = ..., real_speed_max2: _Optional[float] = ..., cycles_to_reach_max_speed: _Optional[int] = ..., player_speed_max: _Optional[float] = ...) -> None: ... +class RpcCooperativeAction(_message.Message): + __slots__ = ("category", "index", "sender_unum", "target_unum", "target_point", "first_ball_speed", "first_turn_moment", "first_dash_power", "first_dash_angle_relative", "duration_step", "kick_count", "turn_count", "dash_count", "final_action", "description", "parent_index") + CATEGORY_FIELD_NUMBER: _ClassVar[int] + INDEX_FIELD_NUMBER: _ClassVar[int] + SENDER_UNUM_FIELD_NUMBER: _ClassVar[int] + TARGET_UNUM_FIELD_NUMBER: _ClassVar[int] + TARGET_POINT_FIELD_NUMBER: _ClassVar[int] + FIRST_BALL_SPEED_FIELD_NUMBER: _ClassVar[int] + FIRST_TURN_MOMENT_FIELD_NUMBER: _ClassVar[int] + FIRST_DASH_POWER_FIELD_NUMBER: _ClassVar[int] + FIRST_DASH_ANGLE_RELATIVE_FIELD_NUMBER: _ClassVar[int] + DURATION_STEP_FIELD_NUMBER: _ClassVar[int] + KICK_COUNT_FIELD_NUMBER: _ClassVar[int] + TURN_COUNT_FIELD_NUMBER: _ClassVar[int] + DASH_COUNT_FIELD_NUMBER: _ClassVar[int] + FINAL_ACTION_FIELD_NUMBER: _ClassVar[int] + DESCRIPTION_FIELD_NUMBER: _ClassVar[int] + PARENT_INDEX_FIELD_NUMBER: _ClassVar[int] + category: RpcActionCategory + index: int + sender_unum: int + target_unum: int + target_point: RpcVector2D + first_ball_speed: float + first_turn_moment: float + first_dash_power: float + first_dash_angle_relative: float + duration_step: int + kick_count: int + turn_count: int + dash_count: int + final_action: bool + description: str + parent_index: int + def __init__(self, category: _Optional[_Union[RpcActionCategory, str]] = ..., index: _Optional[int] = ..., sender_unum: _Optional[int] = ..., target_unum: _Optional[int] = ..., target_point: _Optional[_Union[RpcVector2D, _Mapping]] = ..., first_ball_speed: _Optional[float] = ..., first_turn_moment: _Optional[float] = ..., first_dash_power: _Optional[float] = ..., first_dash_angle_relative: _Optional[float] = ..., duration_step: _Optional[int] = ..., kick_count: _Optional[int] = ..., turn_count: _Optional[int] = ..., dash_count: _Optional[int] = ..., final_action: bool = ..., description: _Optional[str] = ..., parent_index: _Optional[int] = ...) -> None: ... + +class RpcPredictState(_message.Message): + __slots__ = ("spend_time", "ball_holder_unum", "ball_position", "ball_velocity", "our_defense_line_x", "our_offense_line_x") + SPEND_TIME_FIELD_NUMBER: _ClassVar[int] + BALL_HOLDER_UNUM_FIELD_NUMBER: _ClassVar[int] + BALL_POSITION_FIELD_NUMBER: _ClassVar[int] + BALL_VELOCITY_FIELD_NUMBER: _ClassVar[int] + OUR_DEFENSE_LINE_X_FIELD_NUMBER: _ClassVar[int] + OUR_OFFENSE_LINE_X_FIELD_NUMBER: _ClassVar[int] + spend_time: int + ball_holder_unum: int + ball_position: RpcVector2D + ball_velocity: RpcVector2D + our_defense_line_x: float + our_offense_line_x: float + def __init__(self, spend_time: _Optional[int] = ..., ball_holder_unum: _Optional[int] = ..., ball_position: _Optional[_Union[RpcVector2D, _Mapping]] = ..., ball_velocity: _Optional[_Union[RpcVector2D, _Mapping]] = ..., our_defense_line_x: _Optional[float] = ..., our_offense_line_x: _Optional[float] = ...) -> None: ... + +class RpcActionState(_message.Message): + __slots__ = ("action", "predict_state", "evaluation") + ACTION_FIELD_NUMBER: _ClassVar[int] + PREDICT_STATE_FIELD_NUMBER: _ClassVar[int] + EVALUATION_FIELD_NUMBER: _ClassVar[int] + action: RpcCooperativeAction + predict_state: RpcPredictState + evaluation: float + def __init__(self, action: _Optional[_Union[RpcCooperativeAction, _Mapping]] = ..., predict_state: _Optional[_Union[RpcPredictState, _Mapping]] = ..., evaluation: _Optional[float] = ...) -> None: ... + +class BestPlannerActionRequest(_message.Message): + __slots__ = ("register_response", "pairs", "state") + class PairsEntry(_message.Message): + __slots__ = ("key", "value") + KEY_FIELD_NUMBER: _ClassVar[int] + VALUE_FIELD_NUMBER: _ClassVar[int] + key: int + value: RpcActionState + def __init__(self, key: _Optional[int] = ..., value: _Optional[_Union[RpcActionState, _Mapping]] = ...) -> None: ... + REGISTER_RESPONSE_FIELD_NUMBER: _ClassVar[int] + PAIRS_FIELD_NUMBER: _ClassVar[int] + STATE_FIELD_NUMBER: _ClassVar[int] + register_response: RegisterResponse + pairs: _containers.MessageMap[int, RpcActionState] + state: State + def __init__(self, register_response: _Optional[_Union[RegisterResponse, _Mapping]] = ..., pairs: _Optional[_Mapping[int, RpcActionState]] = ..., state: _Optional[_Union[State, _Mapping]] = ...) -> None: ... + +class BestPlannerActionResponse(_message.Message): + __slots__ = ("index",) + INDEX_FIELD_NUMBER: _ClassVar[int] + index: int + def __init__(self, index: _Optional[int] = ...) -> None: ... + class Empty(_message.Message): __slots__ = () def __init__(self) -> None: ... diff --git a/service_pb2_grpc.py b/service_pb2_grpc.py index 0c2dcab..6e323d7 100644 --- a/service_pb2_grpc.py +++ b/service_pb2_grpc.py @@ -84,6 +84,11 @@ def __init__(self, channel): request_serializer=service__pb2.RegisterResponse.SerializeToString, response_deserializer=service__pb2.Empty.FromString, _registered_method=True) + self.GetBestPlannerAction = channel.unary_unary( + '/protos.Game/GetBestPlannerAction', + request_serializer=service__pb2.BestPlannerActionRequest.SerializeToString, + response_deserializer=service__pb2.BestPlannerActionResponse.FromString, + _registered_method=True) class GameServicer(object): @@ -143,6 +148,12 @@ def SendByeCommand(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetBestPlannerAction(self, request, context): + """Missing associated documentation comment in .proto file.""" + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_GameServicer_to_server(servicer, server): rpc_method_handlers = { @@ -191,6 +202,11 @@ def add_GameServicer_to_server(servicer, server): request_deserializer=service__pb2.RegisterResponse.FromString, response_serializer=service__pb2.Empty.SerializeToString, ), + 'GetBestPlannerAction': grpc.unary_unary_rpc_method_handler( + servicer.GetBestPlannerAction, + request_deserializer=service__pb2.BestPlannerActionRequest.FromString, + response_serializer=service__pb2.BestPlannerActionResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'protos.Game', rpc_method_handlers) @@ -444,3 +460,30 @@ def SendByeCommand(request, timeout, metadata, _registered_method=True) + + @staticmethod + def GetBestPlannerAction(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/protos.Game/GetBestPlannerAction', + service__pb2.BestPlannerActionRequest.SerializeToString, + service__pb2.BestPlannerActionResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True)