Skip to content

Commit 31fa0ba

Browse files
committed
Update to latest socket spec
Add get/report for game speed/paused
1 parent bae8bf3 commit 31fa0ba

File tree

8 files changed

+424
-144
lines changed

8 files changed

+424
-144
lines changed

Cargo.lock

+54-47
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "rlviser-py"
3-
version = "0.6.5"
3+
version = "0.6.6"
44
edition = "2021"
55
description = "Python implementation that manages a UDP connection to RLViser"
66
license = "MIT"

gym_renderer.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def render(self, state: GameState, shared_info: Dict[str, Any]) -> Any:
2121
ball.pos = rsim.Vec(*state.ball.position)
2222
ball.vel = rsim.Vec(*state.ball.linear_velocity)
2323
ball.ang_vel = rsim.Vec(*state.ball.angular_velocity)
24-
ball.rot_mat = rsim.RotMat(*state.ball.rotation_mtx.transpose().flatten())
24+
# ball.rot_mat = rsim.RotMat(*state.ball.rotation_mtx.transpose().flatten())
2525

2626
car_data = []
2727
for idx, car in enumerate(state.cars.values()):
@@ -59,7 +59,7 @@ def _get_car_state(self, car: Car):
5959
car_state.has_double_jumped = car.has_double_jumped
6060
car_state.air_time_since_jump = car.air_time_since_jump
6161
car_state.flip_time = car.flip_time
62-
car_state.last_rel_dodge_torque = rsim.Vec(*car.flip_torque)
62+
car_state.flip_rel_torque = rsim.Vec(*car.flip_torque)
6363

6464
car_state.is_auto_flipping = car.is_autoflipping
6565
car_state.auto_flip_timer = car.autoflip_timer

pygymtest.py

+31-16
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,50 @@
11
import time
2-
import numpy as np
32
from itertools import chain
43

4+
import numpy as np
5+
import rlviser_py
56
from rlgym.api import RLGym
67
from rlgym.rocket_league.action_parsers import LookupTableAction, RepeatAction
7-
from rlgym.rocket_league.done_conditions import GoalCondition, AnyCondition, TimeoutCondition, NoTouchTimeoutCondition
8+
from rlgym.rocket_league.done_conditions import (
9+
AnyCondition,
10+
GoalCondition,
11+
NoTouchTimeoutCondition,
12+
TimeoutCondition,
13+
)
814
from rlgym.rocket_league.obs_builders import DefaultObs
915
from rlgym.rocket_league.reward_functions import CombinedReward, GoalReward, TouchReward
1016
from rlgym.rocket_league.sim import RocketSimEngine
11-
from rlgym.rocket_league.state_mutators import MutatorSequence, FixedTeamSizeMutator, KickoffMutator
17+
from rlgym.rocket_league.state_mutators import (
18+
FixedTeamSizeMutator,
19+
KickoffMutator,
20+
MutatorSequence,
21+
)
1222

1323
from gym_renderer import RLViserRenderer
1424

1525
if __name__ == "__main__":
26+
game_speed = 1
27+
1628
env = RLGym(
1729
state_mutator=MutatorSequence(
18-
FixedTeamSizeMutator(blue_size=2, orange_size=2),
19-
KickoffMutator()
30+
FixedTeamSizeMutator(blue_size=2, orange_size=2), KickoffMutator()
2031
),
2132
obs_builder=DefaultObs(zero_padding=None),
2233
action_parser=RepeatAction(LookupTableAction(), repeats=1),
23-
reward_fn=CombinedReward(
24-
(GoalReward(), 10.),
25-
(TouchReward(), 0.1)
26-
),
34+
reward_fn=CombinedReward((GoalReward(), 10.0), (TouchReward(), 0.1)),
2735
termination_cond=GoalCondition(),
2836
truncation_cond=AnyCondition(
29-
TimeoutCondition(timeout=300.),
30-
NoTouchTimeoutCondition(timeout=30.)
37+
TimeoutCondition(timeout=300.0), NoTouchTimeoutCondition(timeout=30.0)
3138
),
3239
transition_engine=RocketSimEngine(),
33-
renderer=RLViserRenderer(120)
40+
renderer=RLViserRenderer(120),
3441
)
3542

3643
# simulate 2 episodes
3744
for _ in range(2):
3845
obs_dict = env.reset()
3946
steps = 0
40-
ep_reward = {agent_id: 0. for agent_id in env.agents}
47+
ep_reward = {agent_id: 0.0 for agent_id in env.agents}
4148
t0 = time.time()
4249
while True:
4350
actions = {}
@@ -46,9 +53,11 @@
4653
actions[agent_id] = np.random.randint(action_space, size=(1,))
4754

4855
for _ in range(8):
49-
obs_dict, reward_dict, terminated_dict, truncated_dict = env.step(actions)
56+
obs_dict, reward_dict, terminated_dict, truncated_dict = env.step(
57+
actions
58+
)
5059
env.render()
51-
time.sleep(max(0, t0 + steps / 1200 - time.time()))
60+
time.sleep(max(0, t0 + steps / (120 * game_speed) - time.time()))
5261
steps += 1
5362

5463
for agent_id, reward in reward_dict.items():
@@ -57,5 +66,11 @@
5766
if any(chain(terminated_dict.values(), truncated_dict.values())):
5867
break
5968

69+
game_speed = rlviser_py.get_game_speed()
70+
6071
ep_time = time.time() - t0
61-
print(f"Steps per second: {steps / ep_time:.0f} | Episode time: {ep_time:.2f} | Episode Reward: {max(ep_reward.values()):.2f}")
72+
print(
73+
f"Steps per second: {steps / ep_time:.0f} | Episode time: {ep_time:.2f} | Episode Reward: {max(ep_reward.values()):.2f}"
74+
)
75+
76+
env.close()

0 commit comments

Comments
 (0)