Skip to main content

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 the match/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__.
  • Lists no longer have num_x fields accompanying them, they are just Python lists of the appropriate length.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rlbot_flatbuffers-0.8.0.tar.gz (3.9 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

rlbot_flatbuffers-0.8.0-cp310-abi3-win_amd64.whl (487.5 kB view details)

Uploaded CPython 3.10+Windows x86-64

rlbot_flatbuffers-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (611.7 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

File details

Details for the file rlbot_flatbuffers-0.8.0.tar.gz.

File metadata

  • Download URL: rlbot_flatbuffers-0.8.0.tar.gz
  • Upload date:
  • Size: 3.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.7.0

File hashes

Hashes for rlbot_flatbuffers-0.8.0.tar.gz
Algorithm Hash digest
SHA256 f3867c95c4eb33ec4b42294a3d3b5d34bf5b22c4a49386fe5307b698c3df7ba3
MD5 4d8a50e54c74da12774bd3b67cfb09ea
BLAKE2b-256 15b241f1fb695290addf039d13ac1d9970f49f4ade9f8fd9e91b773dc39a8495

See more details on using hashes here.

File details

Details for the file rlbot_flatbuffers-0.8.0-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for rlbot_flatbuffers-0.8.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2b34720283b445f22ed4a756f0327f93c162c8bd58f40541ae5c34438187a8ca
MD5 348956471997aacc89eefcc003a29b1a
BLAKE2b-256 9d3895b31d08c9c09c44d293291bc14f2075b4fa66f87cb115e7973188183d8a

See more details on using hashes here.

File details

Details for the file rlbot_flatbuffers-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rlbot_flatbuffers-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6050f8f934f7c18dc11177657d858f6dd21dc0162ebc3eb68eb7a1a1fdc7c8ef
MD5 f93860a034d6f1a1d6d653a2d12a3d94
BLAKE2b-256 788dd61561dbbfa255d124a6ebb878ee77cadd5943dc4d3db81e8df3ab0191ba

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page