Skip to content

Commit 4278016

Browse files
committed
Update necto to new rlgym_compat
1 parent 341fc55 commit 4278016

File tree

6 files changed

+33
-13
lines changed

6 files changed

+33
-13
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,3 +178,4 @@ pyrightconfig.json
178178
.vscode/
179179
*.obj
180180
RLBotServer*
181+
collision_meshes/

rlbot/interface.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import logging
2+
from collections.abc import Callable
23
from enum import IntEnum
34
from pathlib import Path
45
from socket import IPPROTO_TCP, TCP_NODELAY, socket, timeout
56
from threading import Thread
67
from time import sleep
7-
from typing import Callable, Optional
8+
from typing import Optional
89

910
from rlbot import flat
1011
from rlbot.utils.logging import get_logger

rlbot/managers/rendering.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
from typing import Callable, Optional, Sequence
1+
from collections.abc import Callable, Sequence
2+
from typing import Optional
23

34
from rlbot import flat
45
from rlbot.interface import SocketRelay

tests/necto/bot.py

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
from pathlib import Path
12
import numpy as np
23
import torch
34
from agent import Agent
45
from necto_obs import NectoObsBuilder
5-
from rlgym_compat import GameState
6+
from rlgym_compat import V1GameState
7+
from rlgym_compat.sim_extra_info import SimExtraInfo
68

79
from rlbot.flat import ControllerState, GameStateType, GameTickPacket, Vector3
810
from rlbot.managers import Bot
@@ -33,6 +35,8 @@
3335
]
3436
)
3537

38+
COLLISION_MESH_PATH = Path(__file__).parent / "collision_meshes"
39+
3640

3741
class Necto(Bot):
3842
agent = Agent()
@@ -51,6 +55,8 @@ class Necto(Bot):
5155
kickoff_index = -1
5256
ticks = tick_skip # So we take an action the first tick
5357

58+
sim_extra_info: SimExtraInfo | None = None
59+
5460
def initialize_agent(self):
5561
# Initialize the rlgym GameState object now that the game is active and the info is available
5662
self.obs_builder = NectoObsBuilder(self.field_info)
@@ -62,7 +68,14 @@ def initialize_agent(self):
6268
"\n".join(map(str, self.field_info.boost_pads)),
6369
)
6470

65-
self.game_state = GameState(self.field_info, self.tick_skip)
71+
self.game_state = V1GameState(
72+
self.field_info, self.match_settings, self.tick_skip
73+
)
74+
75+
if COLLISION_MESH_PATH.exists():
76+
self.sim_extra_info = SimExtraInfo(
77+
self.field_info, self.match_settings, self.tick_skip
78+
)
6679

6780
self.logger.warning(
6881
"Remember to run Necto at 120fps with vsync off! "
@@ -124,7 +137,11 @@ def get_output(self, packet: GameTickPacket) -> ControllerState:
124137
if len(packet.balls) == 0:
125138
return self.controls
126139

127-
self.game_state.decode(packet)
140+
extra_info = None
141+
if self.sim_extra_info is not None:
142+
extra_info = self.sim_extra_info.get_extra_info(packet)
143+
144+
self.game_state.update(packet, extra_info)
128145

129146
if self.update_action == 1 and len(self.game_state.players) > self.index:
130147
self.update_action = 0

tests/necto/necto_obs.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from collections import Counter
22

33
import numpy as np
4-
from rlgym_compat.common_values import BLUE_TEAM, ORANGE_TEAM
5-
from rlgym_compat.game_state import GameState, PlayerData
4+
from rlgym_compat import BLUE_TEAM, ORANGE_TEAM, V1GameState, V1PlayerData
65

76
from rlbot import flat
87

@@ -30,11 +29,11 @@ def __init__(self, field_info: flat.FieldInfo, tick_skip: int = 8):
3029
[bp.is_full_boost for bp in field_info.boost_pads]
3130
)
3231

33-
def reset(self, initial_state: GameState):
32+
def reset(self, initial_state: V1GameState):
3433
self.demo_timers = Counter()
3534
self.boost_timers = np.zeros(len(initial_state.boost_pads))
3635

37-
def _maybe_update_obs(self, state: GameState):
36+
def _maybe_update_obs(self, state: V1GameState):
3837
if self.boost_timers is None:
3938
self.reset(state)
4039
else:
@@ -109,7 +108,7 @@ def _maybe_update_obs(self, state: GameState):
109108
self.current_mask = mask
110109

111110
def build_obs(
112-
self, player: PlayerData, state: GameState, previous_action: np.ndarray
111+
self, player: V1PlayerData, state: V1GameState, previous_action: np.ndarray
113112
) -> tuple[np.ndarray, np.ndarray, np.ndarray]:
114113
self._maybe_update_obs(state)
115114
invert = player.team_num == ORANGE_TEAM

tests/necto/requirements.txt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
rlbot==5.*
22
numpy==1.*
3-
rlgym_compat @ git+https://github.com/JPK314/rlgym-compat@v5-rework
4-
--find-links https://download.pytorch.org/whl/torch_stable.html
5-
torch==2.3.1+cpu
3+
rocketsim==2.1.*
4+
rlgym_compat @ git+https://github.com/JPK314/rlgym-compat@rlgymv2-rlbot-v5
5+
--extra-index-url https://download.pytorch.org/whl/cpu
6+
torch

0 commit comments

Comments
 (0)