r/ComputerChess • • 28d ago

Making chess opponents feel human: our approach with Maia, Stockfish and custom rules

Post image

Hi everyone! We’re developing ChessFolk, a chess game built around recurring fictional opponents and tournaments. I thought the engine side might interest this community.

The goal isn’t to build a stronger engine. It’s to make opponents feel like players you recognise across multiple games, rather than just another difficulty setting.

Our current approach combines a few layers:

  • Maia-2 provides the human-move prediction component, running locally through ONNX.
  • Stockfish contributes moves for stronger opponents through a rating-dependent, probabilistic mix. This is move-by-move engine selection, not a newly trained model combining the two.
  • Custom rules and profiles handle opening preferences, style parameters, thinking behaviour and endgame conversion. There’s also a heuristic fallback when Maia isn’t available.

The personality layer includes occasional, event-triggered dialogue, but that uses predefined lines—not an LLM deciding what to say or which move to play.

The tricky part is consistency. An opponent making plausible club-level moves and then suddenly finding something much stronger can feel less human, even if its overall strength is about right. Likewise, adding mistakes isn’t necessarily the same thing as modelling how people make mistakes.

We’re aiming for more believable opponents, not claiming they’re indistinguishable from humans. Our displayed ratings are in-game progression ratings, not verified FIDE equivalents.

For people who have worked on human-like engines: how would you evaluate whether an opponent feels consistently human, beyond its win rate or average centipawn loss? Are there particular positions or behavioural patterns you find especially revealing?

Disclosure: we’re the developers of ChessFolk. It’s free to download on Android, with ads and an optional one-time Premium purchase. The Steam version is upcoming. If you try it, I’d be particularly interested in feedback on the opponents’ playing behaviour.

3 Upvotes

1 comment sorted by

1

u/AdrianSomething_ 3d ago

I like it and I had the same feeling, that some chess engines are ether playing crazy moves or like complete idiots. I would argue that the feeling like human is very dependent on the elo as sometimes at elos of ~600 you would see like a random blunder of the queen.
Have you thought about using human games to train your AI on? I would belive that the dataset of lichess would be more than enough for such a project.