Back to feed
Dev.to
Dev.to
7/15/2026
How I Built an MLP Evaluator for a Novel Board Game

How I Built an MLP Evaluator for a Novel Board Game

Short summary

A developer describes building an MLP-based evaluation function for Larss, a custom 1v1 tetromino placement game. The article explains why NNUE — the standard for chess engines — doesn't fit due to variable board sizes and non-local move effects. Instead, the author uses bitmask-derived, dimensionless features fed into an MLP, with training data bootstrapped from self-play. The post covers architecture decisions, feature engineering, and lessons learned.

  • Custom game engine evaluation function built with MLP in Rust
  • NNUE rejected due to variable board sizes (11x11 to 14x14) and non-local move effects
  • Features are bitmask-derived and dimensionless with respect to board size
  • Training data bootstrapped from self-play since no grandmaster games exist

Generated with AI, which can make mistakes.

Is this a good recommendation for you?

Comments

Failed to load comments. Please try again.

Explore more