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.4.2.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.4.2-cp310-abi3-win_amd64.whl (495.6 kB view details)

Uploaded CPython 3.10+Windows x86-64

rlbot_flatbuffers-0.4.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (622.5 kB view details)

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

File details

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

File metadata

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

File hashes

Hashes for rlbot_flatbuffers-0.4.2.tar.gz
Algorithm Hash digest
SHA256 2fc91a959d05a573bf7f0352afbeccd9ae3157653a3bad2f003c6d35a0bcc12c
MD5 bd397cc0c45843be2f65b582b9c74d3e
BLAKE2b-256 2d38d440a03eede44cd6b1f8874d9ff79c72b001a87b572d9b78dc51a3193279

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rlbot_flatbuffers-0.4.2-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 58e3f0a0619a532e0859f51dcb0304e8a496af2019dd79e98f93599de043030b
MD5 a15380e8a4b289772c449db5d8cf678b
BLAKE2b-256 60582ac65c13b405e651117dc38f53fcc90c740c3e1f0d707ae952aedc8a76f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rlbot_flatbuffers-0.4.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 61102f12895622e3c670a21f0d36b8f454050ed8de3d245bea924fa2e8f80e69
MD5 986b08e8a47528d30d43f43efea9e00d
BLAKE2b-256 640553ac6f2d460de43da7502168de89e3174db7057ffcad693852ac4c35ecf5

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