Torom / BotLi

Lichess Bot
GNU Affero General Public License v3.0
45 stars 82 forks source link

Variants #22

Closed FatFritz2 closed 2 years ago

FatFritz2 commented 2 years ago

I really want the bot to support all lichess variants. Do you have an idea for how to do it ?

Torom commented 2 years ago

Which variant is not supported?

FatFritz2 commented 2 years ago

crazyhouse ,king of the hill, 3 check atomic antichess horde and racing kings

Torom commented 2 years ago

Have you tested this? What are the error messages?

FatFritz2 commented 2 years ago

image what I have tried to play antichess with fairy-stockfish level 1

Torom commented 2 years ago

The engine you are trying to use does not support the UCI option UCI_Variant you have to use an engine that can play these variants.

FatFritz2 commented 2 years ago

here is my config.yml

token: "XXXXXXXXXXXXXXXXXXXXXXXX"         # Lichess OAuth2 Token.

engine:                                   # Engine settings.
  dir: "./engines"                        # Directory containing the engine.
  name: "Stockfish.exe"                   # Binary name of the engine to use.
  variantname: "Fairy-Stockfish.exe"
  ponder: true                            # Think on opponent's time.
  opening_books:
    enabled: true                         # Activate opening books.
    books:
#     white:                              # List of names of books to use as white.
#       - "WhiteBook"
#     black:                              # List of names of books to use as black.
#       - "BlackBook"
      standard:                           # List of names of books to use if there is no specific book for white, black or chess960.
        - "Perfect2021.bin"
        - "bestbook.bin"
        - "komodo.bin"
        - "Drawkiller_EloZoom_big.bin"
        - "tcec.bin"
        - "perfect1.bin"
#     chess960:                           # List of names of books to use for Chess960.
#       - "Chess960Book"
    selection: "best_move"                # Move selection is one of "weighted_random", "uniform_random" or "best_move".
#   max_depth: 30                         # Half move max depth. (Comment this line for max depth)
  online_moves:
    chessdb:
      enabled: true                       # Activate online moves from https://chessdb.cn/queryc_en/
      min_eval_depth: 25                  # Minimum evaluation depth. Only for selection: "best".
      min_time: 30                        # Time the bot must have at least to use the online move.
      timeout: 5                          # Time the server has to respond.
      selection: "best"                   # Move selection is one of "best", "good" or "all".
#     max_depth: 60                       # Half move max depth. (Comment this line for max depth)
    lichess_cloud:
      enabled: true                       # Activate online moves from Lichess cloud eval.
      min_eval_depth: 25                  # Minimum evaluation depth.
      min_time: 30                        # Time the bot must have at least to use the online move.
      timeout: 5                          # Time the server has to respond.
#     max_depth: 25                       # Half move max depth. (Comment this line for max depth)
    online_egtb:
      enabled: true                       # Activate online endgame tablebases from Lichess.
      min_time: 15                        # Time the bot must have at least to use the online move.
      timeout: 3                          # Time the server has to respond.
  offer_draw:
    enabled: false                        # Activate whether the bot should offer draw.
    score: 5                              # If the absolute value of the score is less than or equal to this value, the bot offers/accepts draw (in cp)
    consecutive_moves: 10                 # How many moves in a row the absolute value of the score has to be below the draw value
    min_game_length: 50                   # Earliest move in which draw is offered.
  resign:
    enabled: false                        # Activate whether the bot should resign games.
    score: -1000                          # If the score is less than or equal to this value, the bot resigns (in cp).
    consecutive_moves: 5                  # How many moves in a row the score has to be below the resign value.
  uci_options:                            # Arbitrary UCI options passed to the engine. (Commenting allowed)
    Move Overhead: 100                    # Increase if your bot flags games too often.
    Threads: 8                            # Max CPU threads the engine can use.
    Hash: 2000                            # Max memory (in megabytes) the engine can allocate.
    Skill Level: 20
    UCI_Elo: 2850
    Slow Mover: 20
    SyzygyPath: "/path/to/syzygy"         # Path to your local syzygy endgame tablebases

move_overhead_multiplier: 1.0             # Increase if your bot flags games too often. Default move overhead is 1 second per 1 minute initital time.

challenge:                                # Incoming challenges. (Commenting allowed)
  concurrency: 1                          # Number of games to play simultaneously.
  bullet_with_increment_only: true        # Whether bullet games should be accepted with increment only.
# min_increment: 1                        # Minimum amount of increment to accept a challenge.
# max_increment: 180                      # Maximum amount of increment to accept a challenge.
# min_initial: 10                         # Minimum amount of initial time to accept a challenge.
# max_initial: 315360000                  # Maximum amount of initial time to accept a challenge.
  variants:                               # Chess variants to accept (https://lichess.org/variant).
    - standard
    - chess960
#   - fromPosition
    - antichess
    - atomic
    - crazyhouse
    - horde
    - kingOfTheHill
    - racingKings
    - threeCheck
  time_controls:                          # Time controls to accept.
    - bullet
    - blitz
    - rapid
    - classical
  bot_modes:                              # Game modes to accept against BOTs.
#   - casual                              # Unrated games.
    - rated                               # Rated games
  human_modes:                            # Game modes to accept against humans.
    - casual                              # Unrated games.
    - rated                               # Rated games

matchmaking:
  initial_time: 15                        # Initial time for matchmaking mode.
  increment: 1                            # Increment time for matchmaking mode.
  rated: true                             # Activate rated games in matchmaking mode.
  timeout: 30                             # Time until a challenge is canceled.
  variant: standard                       # Chess variant (https://lichess.org/variant) to challenge.
# min_rating_diff: 0                      # Minimum rating distance to opponent. (Commenting allowed)
# max_rating_diff: 300                    # Maximum rating distance to opponent. (Commenting allowed)
  delay: 10                               # Time in seconds the bot must be idle before a new challenge is started.

books:                                    # Names of the opening books (to be used above in the opening_books section) and paths to the opening books.
 Perfect2021.bin: "Perfect2021.bin"
 bestbook.bin: "bestbook.bin"
 komodo.bin: "komodo.bin"
 Drawkiller_EloZoom_big.bin: "Drawkiller_EloZoom_big.bin"
 tcec.bin: "tcec.bin"
 perfect1.bin: "perfect1.bin"
FatFritz2 commented 2 years ago

I really don't know what happened, I add the VariantName there but it doesn't work

Torom commented 2 years ago

variantname is not an option that BotLi knows. I don't know how you come up with that. BotLi supports one engine for all variants, if you want to use different variants, you have to use an engine that supports different variants.

FatFritz2 commented 2 years ago

What engine I mean, because I just know Stockfish :(

FatFritz2 commented 2 years ago

variantname is not an option that BotLi knows. I don't know how you come up with that. BotLi supports one engine for all variants, if you want to use different variants, you have to use an engine that supports different variants.

Can you rewrite the entire repo in order to make BotLi supports 'variantname' please (if possible?)

Torom commented 2 years ago

Use Fairy-Stockfish

FatFritz2 commented 2 years ago

I have tested it out but its strength isn't as good as sf 200622 :( how to make it stronger

Torom commented 2 years ago

This is known: https://github.com/ianfab/Fairy-Stockfish/wiki/Playing-strength#chess

Torom commented 2 years ago

BotLi now supports a second engine for Lichess variants.