3 unstable releases

0.3.1 Feb 8, 2024
0.3.0 Oct 21, 2023
0.2.0 Sep 19, 2023
0.1.0 Sep 19, 2023

#504 in Database interfaces

MIT license

85KB
2K SLoC

bkgm

Build

Bkgm is a versatile Rust crate designed to facilitate Backgammon-related operations, such as move generation, position parsing, conversion between standards, and the implementation of the perfect hash for bearoff and hypergammon databases. It supports both traditional Backgammon and 3-checker Hypergammon and provides the foundation for building Backgammon engines or APIs.

Example Position

Here's a visual representation of the starting position in Backgammon:

Position ID: 4HPwATDgc/ABMA
┌13─14─15─16─17─18─┬───┬19─20─21─22─23─24─┬───┐
│ X           O    │   │ O              X │   │
│ X           O    │   │ O              X │   │
│ X           O    │   │ O                │   │
│ X                │   │ O                │   │
│ X                │   │ O                │   │
│                  │BAR│                  │OFF│
│ O                │   │ X                │   │
│ O                │   │ X                │   │
│ O           X    │   │ X                │   │
│ O           X    │   │ X              O │   │
│ O           X    │   │ X              O │   │
└12─11─10──9──8──7─┴───┴─6──5──4──3──2──1─┴───┘

Features

  • Support for the Gnubg position id format.
  • Ability to generate possible positions.
  • Macros to create Backgammon and Hypergammon positions.
  • State trait implemented for both Backgammon and Hypergammon.

TODO

  • Move generation (next possible position generation is already implemented).
  • Move parsing (e.g., 24/23*/22*/21*).
  • Improve test coverage.
  • Add a game trait, enabling Mat files.
  • Addition of optional rules
  • Improve macros to work with bar and off

References

Dependencies

~220KB