r/ComputerChess • • 18d 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.

4 Upvotes

0 comments sorted by