Skip to content

Commit 6e6731d

Browse files
committed
Necto: count frames for tick skip
1 parent 4bfebee commit 6e6731d

File tree

5 files changed

+16
-14
lines changed

5 files changed

+16
-14
lines changed

rlbot/managers/hivemind.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from logging import Logger
12
import os
23
from threading import Event, Thread
34
from traceback import print_exc
@@ -15,7 +16,7 @@ class Hivemind:
1516
"""
1617

1718
_logger = DEFAULT_LOGGER
18-
loggers = {}
19+
loggers: list[Logger] = []
1920

2021
team: int = -1
2122
indicies: list[int] = []
@@ -81,11 +82,11 @@ def _handle_match_settings(self, match_settings: flat.MatchSettings):
8182
self._has_match_settings = True
8283

8384
# search match settings for our spawn ids
84-
for i, player in enumerate(self.match_settings.player_configurations):
85+
for player in self.match_settings.player_configurations:
8586
if player.spawn_id in self.spawn_ids:
8687
self.team = player.team
8788
self.names.append(player.name)
88-
self.loggers[i] = get_logger(player.name)
89+
self.loggers.append(get_logger(player.name))
8990

9091
if not self._initialized_bot and self._has_field_info:
9192
self._initialize_agent()
@@ -117,7 +118,6 @@ def _packet_preprocess(self, packet: flat.GameTickPacket) -> bool:
117118
if len(self.indicies) != len(self.spawn_ids):
118119
return False
119120

120-
# print([player.name for player in packet.players], self.spawn_ids, self.indicies)
121121
return True
122122

123123
def _packet_processor(self):

tests/hivemind/bot.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ def get_outputs(
8080

8181
self.controllers[i].steer = -steer_correction_radians
8282
self.controllers[i].throttle = 1
83+
self.controllers[i].boost = True
8384

8485
return self.controllers
8586

tests/necto/agent.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@ def __init__(self):
1414
self.actor = torch.jit.load(f)
1515
torch.set_num_threads(1)
1616

17-
def act(self, state, beta: float) -> tuple[np.ndarray, list[torch.Tensor]]:
18-
state = tuple(torch.from_numpy(s).float() for s in state)
17+
def act(
18+
self, state: tuple[np.ndarray, np.ndarray, np.ndarray], beta: float
19+
) -> tuple[np.ndarray, list[torch.Tensor]]:
20+
tensor_state = tuple(torch.from_numpy(s).float() for s in state)
1921
with torch.no_grad():
20-
out, weights = self.actor(state)
22+
out, weights = self.actor(tensor_state)
2123

2224
max_shape = max(o.shape[-1] for o in out)
2325
logits = (

tests/necto/bot.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class Necto(Bot):
4444
render = False
4545
hardcoded_kickoffs = True
4646

47-
prev_time = 0
47+
prev_frame = 0
4848
controls = ControllerState()
4949
action = np.zeros(8)
5050
update_action = True
@@ -115,11 +115,10 @@ def render_attention_weights(
115115
self.renderer.end_rendering()
116116

117117
def get_output(self, packet: GameTickPacket) -> ControllerState:
118-
cur_time = packet.game_info.seconds_elapsed
119-
delta = cur_time - self.prev_time
120-
self.prev_time = cur_time
118+
cur_frame = packet.game_info.frame_num
119+
ticks_elapsed = cur_frame - self.prev_frame
120+
self.prev_frame = cur_frame
121121

122-
ticks_elapsed = round(delta * 120)
123122
self.ticks += ticks_elapsed
124123

125124
if len(packet.balls) == 0:

tests/necto/necto_obs.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ def _maybe_update_obs(self, state: GameState):
7474
if self.demo_timers[player.car_id] <= 0:
7575
self.demo_timers[player.car_id] = 3
7676
else:
77-
self.demo_timers[player.car_id] = max(
78-
self.demo_timers[player.car_id] - self.tick_skip / 120, 0 # type: ignore
77+
self.demo_timers[player.car_id] = max( # type: ignore
78+
self.demo_timers[player.car_id] - self.tick_skip / 120, 0
7979
)
8080
qkv[0, n, 21] = self.demo_timers[player.car_id] / 10
8181
n += 1

0 commit comments

Comments
 (0)