Skip to content

whatisaphone/self-driving-car

Repository files navigation

Formula nOne

A bot that loses at Rocket League using RLBot.

Development

Prerequisites

  • Windows

    RLBot only works on Windows, and we inherit this limitation.

  • Install Rust.

  • Install pre-commit, and run this command:

    pre-commit install

    This will run tests/lints/etc before every commit. The bot may lose every game, but at least the code will be pretty!

  • Obtain these files from RLBot and copy them into target/debug and target/release:

    • RLBot_Core.dll
    • RLBot_Core_Interface.dll
    • RLBot_Injector.exe

Watch the bot play

cargo run -p play

Run the bot with the RLBot framework

cargo build && python -c "from rlbot import runner; runner.main()"

Run integration tests

The integration tests require a copy of Rocket League running (naturally).

cargo test -p brain -- --test-threads=1 integration_tests

To run an individual test, you can replace integration_tests with a pattern that matches the name of the test.

Profiling

Adapt this command to your needs:

vsperf="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Team Tools\Performance Tools\VSPerf.exe"
RUST_BACKTRACE=1 \
"$vsperf" \
    -launch:target/debug/deps/brain-a1b2c3.exe \
    -args:"--test-threads=1 recording_template --ignored"

Build a tournament package

scripts/tourney.sh

This will package up a release build in target/tournament/. It will also modify the local rlbot.cfg for quick testing. You can test the build by starting Rocket League and then running:

( cd target/tournament && python -c "from rlbot import runner; runner.main()" )

Once you know it works, zip up the directory and send it to the tournament organizer!

Handy Links

Rocket League

Math

Ideas

  • Names
    • the bottmer peak
    • formula none
    • bender
    • RoboCar
    • rosie the rocket maid
    • Rock-E
    • self-driving car
  • Chat
    • misc quickchat
    • they told me they would delete me if i lost
    • wrong name handling
  • Play
    • brazil

Roadmap

Next

  • GetToFlatGround: require stricter roof pointing before jumping (test case fast_retreating_save)
  • aiming model for most power
  • AnticipatingDrive with ability to throttle without boosting
  • aerials v2.0
  • model who is controlling the ball?
  • TepidHit should sent it to the corner if things are dangerous (e.g., we can't roll it up the wall and we're facing our own goal and the enemy is closing in)

Backlog

  • driving on walls
  • add the offense swing-around stuff (when no good shot angle)
  • backwards tepid hits should not dodge? (maybe all tepid hits)
  • BounceShot (and related) should verify the hit happened, and Action::Abort if not
  • don't jump directly after skidding and go the wrong way (probably test yaw vs velocity angle and see if match)
  • QuickJumpAndDodge should allow choosing the angle at apex instead of only ahead of time
  • Brake should not get stuck in a loop when moving backwards
  • chip recovery
  • generic long-range pathfinding
    • if far away, waiting stationary, and turned the wrong way, fix yaw before sitting still
    • if in TIME CRUNCH MODE, just blitz to destination
    • otherwise: weave for pennies, opportunistic demos, etc
  • fix whiffs when retreating redirects to corner
  • half flip

About

A bot that loses at Rocket League

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages