{"library":"rlbot","title":"RLBot","description":"RLBot is a Python framework for developing custom AI bots to play Rocket League in offline matches. It provides access to real-time game data, such as car and ball positions, and allows bots to send controller inputs back to the game. The framework reliably supports up to 10 bots and is actively maintained, with version 5 (v5) introducing significant architectural changes for improved reliability and features, including a shift to WebSocket communication.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install rlbot"],"cli":null},"imports":["from rlbot.agents.base_agent import BaseAgent","from rlbot.agents.base_agent import SimpleControllerState","from rlbot.utils.structures.game_data_struct import GameTickPacket","RLBotServer.exe (part of the framework, not a Python import)"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom rlbot.agents.base_agent import BaseAgent, SimpleControllerState\nfrom rlbot.utils.structures.game_data_struct import GameTickPacket\n\n\nclass MyBot(BaseAgent):\n\n    def initialize_agent(self):\n        # This runs once before the bot starts.\n        self.logger.log(\"MyBot initialized!\")\n\n    def get_output(self, packet: GameTickPacket) -> SimpleControllerState:\n        # This is called every tick of the game.\n        # Implement your bot's logic here.\n\n        controller_state = SimpleControllerState()\n\n        # Example: Drive towards the ball\n        ball_location = packet.game_ball.physics.location\n        my_car = packet.game_cars[self.index]\n        car_location = my_car.physics.location\n\n        # Simple steer towards the ball\n        if ball_location.y > car_location.y:\n            controller_state.throttle = 1.0\n        else:\n            controller_state.throttle = -1.0\n\n        # Steering logic (very basic)\n        if ball_location.x < car_location.x:\n            controller_state.steer = -1.0\n        elif ball_location.x > car_location.x:\n            controller_state.steer = 1.0\n        else:\n            controller_state.steer = 0.0\n\n        return controller_state\n\n\n# To run this bot:\n# 1. Ensure you have Rocket League installed and RLBot setup (pip install rlbot).\n# 2. Typically, you'd clone an example project (e.g., RLBot/python-example),\n#    place this code in its 'bot.py', and run 'python run.py' from that project's root.\n#    The RLBot framework will launch Rocket League and your bot automatically.\n","lang":"python","description":"This quickstart demonstrates a basic RLBot agent that drives towards the ball. To run an RLBot, developers typically start by cloning the official `RLBot/python-example` repository, creating a Python virtual environment, installing dependencies from `requirements.txt`, and then modifying the `bot.py` file to implement their desired bot logic. The bot's `get_output` method is called every game tick to produce controller inputs.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"1.68.0","pypi_latest":"1.68.0","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":7.5,"avg_import_s":0.27,"wheel_type":"sdist"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"rlbot","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"rlbot","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":6.6,"import_time_s":0.19,"mem_mb":9.4,"disk_size":"75M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"rlbot","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"rlbot","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":6.8,"import_time_s":0.35,"mem_mb":11,"disk_size":"82M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"rlbot","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"rlbot","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":8.8,"import_time_s":null,"mem_mb":null,"disk_size":"71M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"rlbot","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"rlbot","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"broken","install_time_s":8.1,"import_time_s":null,"mem_mb":null,"disk_size":"71M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"rlbot","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"rlbot","exit_code":0,"wheel_type":"sdist","failure_reason":null,"import_side_effects":"noisy","install_time_s":7.4,"import_time_s":0.27,"mem_mb":9.6,"disk_size":"74M"}]}}