# vec(tor)-rac(ing)
This is a simulation of racers on a grid containing a racetrack with walls
beside it. Each turn, a racer can accelerate one unit in one of the cardinal
directions or can do nothing. There is no friction. I myself did not come up
with the game, which is traditionally played by hand with graph paper. My
version features a randomly generated, infinite track and racers driven by
artificial intelligence (a neural network). Racers improve through natural
selection. A racer is scored primarily on how far upward it gets and secondarily
on how long its race took.
## Installation
You can clone the repository and build the program with cargo, or you can
install the binary like this:
```
cargo install vec-rac
```
I suggest the latter method.
## Running the Simulation
The program makes use of all available cores to find better racers, but doing so
can still take a while; I suggest you run the program with optimizations on.
When a new best racer is found, a movie is played of its accomplishment. I have
not implemented saving of racers, so to record your progress, you should run the
program something like this:
```
asciinema rec -i 1 -c 'vec-rac ...'
```
Asciinema is a separate program. The above command runs the command after `-c`
and squashes pause times (when new racers are being generated) to at most one
second. You can rewatch the progression this way.