A Python module implemented in Rust for serializing and deserializing RLBot's flatbuffers
Project description
rlbot-flatbuffers-py
A Python module implemented in Rust for serializing and deserializing RLBot's flatbuffers
The goal of this project
To provide a fast, safe, and easy to use Python module for serializing and deserializing RLBot's flatbuffers.
A majority of the code is generated in the codegen/
upon first compile and thrown into src/python
.
This includes the code generated by flatc
(living in src/generated
), the Python wrapper binds to the generated Rust code, and the Python type hints (rlbot_flatbuffers.pyi
).
Basic usage
All classes and methods should have types hints readable by your IDE, removing the guesswork of common operations.
Creating
import rlbot_flatbuffers as flat
desired_ball = flat.DesiredBallState(
physics=flat.Physics(
location=flat.Vector3Partial(z=200),
velocity=flat.Vector3Partial(x=1500, y=1500),
angular_velocity=flat.Vector3Partial(),
),
)
desired_game_info = flat.DesiredGameInfoState(
world_gravity_z=-100,
game_speed=2,
)
desired_game_state = flat.DesiredGameState(
ball_state=desired_ball,
game_info_state=desired_game_info,
)
In the above code, we:
- Set the ball to:
- Location (0, 0, 200)
- Velocity (1500, 1500, 0)
- Angular velocity of (0, 0, 0)
- Don't set the car states
- Set the game info state:
- World gravity to -100
- Game speed to 2x default
- Don't set end match or paused
- Don't set any console commands
All values are optional when creating a class and have the proper defaults.
Reading values
import rlbot_flatbuffers as flat
def handle_packet(packet: flat.GameTickPacket):
if packet.game_info.game_state_type not in {
flat.GameStateType.Active,
flat.GameStateType.Kickoff,
}:
# Return early if the game isn't active
return
# Print the ball's location
print(packet.ball.physics.location)
for car in packet.players:
# Print the every car's location
print(car.physics.location)
The goal of the above was to feel familiar to RLBot v4 while providing a more Pythonic interface.
- All classes (not enums and unions) implement
__match_args__
for easy destructuring via thematch
/case
pattern.- Enums and unions and can still be used to match against the type, they just can't be destructured.
- Every class implements
__str__
,__repr__
, and__hash__
methods.- All enums also implement
__int__
and__eq__
.
- All enums also implement
- Lists no longer have
num_x
fields accompanying them, they are just Python lists of the appropriate length.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for rlbot_flatbuffers-0.5.1-cp310-abi3-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e226dee0e94ed767f002e36cb0154f6c4fa99573dac6ba236e81fdd09a8ba8bd |
|
MD5 | dc6f116a8e7fd5bc03e63e1a8e52863b |
|
BLAKE2b-256 | 82b00d8c7733ff429cedc6b9515cfea619dc0d50d7c59a5c7556f74e1e82fb21 |
Hashes for rlbot_flatbuffers-0.5.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa9008c7812ea5c1d1c6ae334713e394e6de01e4415b0390832d424fc079f54c |
|
MD5 | 67097615bbbbbdace8ff7170edf43bba |
|
BLAKE2b-256 | ce921eda70e3a0b8990dbbdd7a2f2f702a72265557a34f106cd62d182837b923 |