# rl_ball_sym
[](https://github.com/rust-secure-code/safety-dance/)
[](https://forthebadge.com)
Rust implementation of Rocket League's ball physics;
Inspired by Samuel P. Mish's C++ utils called [RLUtilities](https://github.com/samuelpmish/RLUtilities)
with accuracy improvements from [RocketSim](https://github.com/ZealanL/RocketSim)
and other miscellaneous performance improvements.
## Running
Make sure you have Rust/Cargo installed, then just run `cargo test --release` in the terminal.
## Example implementations
Check out the examples folder! If you want to run them and don't know how:
```bat
cargo run --example example_name
```
For example, to run the example `basic.rs`:
```bat
cargo run --example basic
```
## Performance numbers
Numbers are from a system running Ubuntu 23.10 with a Ryzen 9 5900X and 3600MHz CL18 RAM.
Numbers _will_ vary depending on your system. Only default features are enabled.
+ `load_standard`: Loads 8028 triangles, executes in around `650µs`
+ `load_hoops`: Loads 15732 triangles, executes in around `1.30ms`
+ `load_dropshot`: Loads 3616 triangles, executes in around `300µs`
+ `load_standard_throwback`: Loads 9272 triangles, executes in around `810µs`
+ `get_ball_prediction_struct_for_time`: standard + 8 seconds, executes in around `200µs`
+ `get_ball_prediction`: standard + 6 seconds, executes in around `150µs`
+ `get_ball_prediction`: Hoops + 6 seconds, executes in around `160µs`
+ `get_ball_prediction`: Dropshot + 6 seconds, executes in around `140µs`
+ `get_ball_prediction`: standard + Throwback Stadium + 6 seconds, executes in around `155µs`
## Features
+ `standard`: Enable loading the standard map
+ `hoops`: Enable loading the hoops map
+ `dropshot`: Enable loading the dropshot map
+ `throwback`: Enable loading the throwback map (with standard game rules)
+ `compression`: Minimize the size of the produced binaries by compressing the binary field data at compile time. Will slightly slow down `load_x()` functions.