2 stable releases

1.1.0 Feb 14, 2024
1.0.0 Feb 6, 2024

#112 in Simulation

31 downloads per month
Used in insim

MIT license

13KB
111 lines

insim.rs

A collection of crates to assist working with the Live For Speed racing simulator and it's Insim (protocol).

The intention is to provide a strongly typed, native rust implementation, rather than a thin layer over a series of bytes and primitive types.

If you're not sure where to start, you probably want to look at the examples.

Crate Usage Documentation
insim Connection and protocol implementation. https://docs.rs/insim
insim_core Contains core types shared across other crates. https://docs.rs/insim_core
insim_pth Implements a PTH file read/writer. https://docs.rs/insim_pth
insim_smx Implements a SMX file reader/writer. https://docs.rs/insim_smx

If you're looking for race_directord that has been moved to https://github.com/theangryangel/race_directord/.

TODO

  • git grep '\(TODO\|FIXME\|XXX\)'
  • check out the issues list

lib.rs:

insim_pth

Parse a Live for Speed pth (path) file.

A pth file consists of a series points [Node], with direction and width ([Limit]), that describe the track that you drive along.

Historically LFS has used the PTH to watch your progress along the track, decides if you are driving in reverse, the yellow and blue flag systems, the position list, timing, etc.

On a standard LFS track the [Node] is communicated via MCI and NLP Insim packets.

On an open configuration [Node] are not used and are unavailable via Insim MCI packets.

The distance between each [Node] is not constant. According to the LFS developers there is approximately 0.2 seconds of time between passing one node and the next, when you are "driving at a reasonable speed".

Dependencies

~5MB
~156K SLoC