6 votes

Help me test my chess bot

The last couple of weeks I've been fooling around with different ideas for how to build a chess bot that's fun for beginners to play against. I don't have much real experience with chess, so I've mostly just been testing it against myself.

After looking into the different techniques that are used to force engines to play at a certain level, I put together my own (somewhat silly) approach and have had some fun playing against it. The problem is, as I don't really know what I'm doing when it comes to the actual game, I can't be a particularly good judge of how others will feel playing with it.

Regardless of your own skill level, I'd be super appreciative if anyone would give it a try and let me know what they think.

I'm working on a full write up of how it works, but here's the short version:

Click to view the hidden text

The inspiration came from this paper which describes a "Tutoring Search" wherein the engine attempts to find the worst move available that it predicts the opponent will not recognize as an error.

My implementation doesn't follow this exactly, but it does have the same aim. Two engines are used: one (Stockfish) as an oracle treated as a true measure of any state's quality, another (Maia) as a substitute for the opponent model. On each move the bot consults both of these to identify a move which:

  1. Would plausibly be played by a skilled human, judged by its probability of being played by Maia.
  2. Provides an advantage to the opponent, judged by Stockfish.

The idea is that, if a human would be likely to play the move, they also would be unlikely to identify it as an error. The ultimate goal is a bot which gives the player plenty of opportunities to win, but only if the mistakes are likely to go unnoticed.

There are a few other supplements to the implementation like adapting to opponent choices and some tweaks to early and end-game play, but the above is the core idea.

5 comments

  1. [4]
    F13
    Link
    I almost never play rapid so I was on my back foot from the very beginning. But I abandoned a game and now it seems stuck in "waiting for opponent" when trying to start a new game.

    I almost never play rapid so I was on my back foot from the very beginning. But I abandoned a game and now it seems stuck in "waiting for opponent" when trying to start a new game.

    1 vote
    1. [3]
      scarecrw
      Link Parent
      Oh no! Thanks for letting me know, I'll have to see how that's supposed to work. I'm guessing it times out after a certain point? I just manually ended it for now. It should accept pretty much any...

      Oh no! Thanks for letting me know, I'll have to see how that's supposed to work. I'm guessing it times out after a certain point? I just manually ended it for now.

      It should accept pretty much any game timing, so feel free to play whichever.

      1. [2]
        F13
        Link Parent
        I tried selecting a different timing, but when I did so the "challenge confidencebuilder" button disabled itself.

        I tried selecting a different timing, but when I did so the "challenge confidencebuilder" button disabled itself.

        1. scarecrw
          Link Parent
          Ah, I thought the link just set the default, but it was actually setting a requirement. I changed it and it should work now.

          Ah, I thought the link just set the default, but it was actually setting a requirement. I changed it and it should work now.

  2. trim
    Link
    I tried, and got challenge declined. No matter, I'd have lost anyway.

    I tried, and got challenge declined. No matter, I'd have lost anyway.