The Variant class defines the rules and properties for different chess variants. You can identify a variant using its Id, LilaKey, or UciKey. The library provides a list of all supported variants via Variant.list.all.
Common variants include:
Standard (the default)Chess960CrazyhouseAntichessAtomicHordeKingOfTheHillThreeCheckRacingKingsFromPosition
You can retrieve a variant by its ID or key using Variant(id) or Variant(key). If you want to ensure you always have a valid variant, use orDefault to fall back to Standard if the lookup fails.
// Accessing variants
val standard = Variant.default
val chess960 = Variant.list.all.find(_.chess960).get
// Lookup by ID or Key
val variantById = Variant(someId)
val variantByKey = Variant(LilaKey("crazyhouse"))
// Fallback to default
val safeVariant = Variant(unknownId).orDefault