Checkers Crystal

NeuralCrystal was built by Pete DeLaurentis with Shellcaster, an IDE for building complex projects with agents.

This model represents a physical crystal with 40 etched surfaces and 10M parameters that is trained to play checkers. There's no search inside the glass: the board goes in as light, the light makes four passes through the block, and lights up locations on a move map corresponding to recommended moves.

Demo

Run this crystal in the optical simulator at NeuralCrystal.com: play a game against it, and see the light travel through the glass.

The checkers crystal in the optical simulator at NeuralCrystal.com: the board on the screen, the light through the crystal, and its move

Input

The board goes in as a 96 × 96 picture on a micromirror array, where every mirror is either on or off. It's always drawn from the point of view of the side to move, so a position with white to move is turned around first. The crystal is always the side to move. Each playable square has a corner bracket; the crystal's own pieces are solid discs, its kings are discs with a crown cut out, and the opponent's pieces are rings:

The checkers board as the crystal sees it, with its pieces and an empty square labeled

Output

After four passes, the light lands on a 32 × 32 move map: one cell for every pair of from-square (row) and to-square (column), numbered 1 to 32 as the side to move sees the board. The brightest legal cell is the crystal's move. Below, the legal moves are outlined in teal and the crystal's choice, 16-20, in white.

Some cells can never be a move: no piece on squares 1 to 4 can reach the far corner in one move. The crystal uses three 4 × 4 blocks of that dead corner to read out the probability of a win, draw or loss for the side to move: the share of light on each block. In this position it reads 5 % win, 17 % draw, 78 % loss.

The 32 × 32 move map: legal moves outlined in teal, the crystal's move in white, and the win, draw and loss blocks in the corner

The package handles the rules of American checkers: compulsory captures, jump chains (each jump is its own move, with the same side to play again) and crowning.

Results

Judged by the Stermere/Marcher engine, which scores every legal move, on 5,675 held-out positions.

Precision Best move (higher is better) Within a quarter of a man of the best (higher is better) Forced losses (lower is better)
32-bit 57.73 % 74.8 % 157 (2.77 %)
16-bit 57.78 % 74.9 % 157 (2.77 %)
8-bit 57.92 % 75.0 % 160 (2.82 %)

A forced loss is a move that lets the opponent win by force. The three precisions play essentially the same.

Use it

Install the neuralcrystal Python package, which runs the crystal's light path in PyTorch. Its code and more examples are on GitHub at neuralcrystal/neuralcrystal.

pip install neuralcrystal
import neuralcrystal as nc
from neuralcrystal import checkers as ck

crystal = nc.load("checkers-crystal.safetensors")

# the opening position (or any position: ck.parse("bb.bb...b.wb.b.b....w.ww.w.ww.ww w - 0"))
pos = ck.start()
move, scores = ck.best_move(crystal, pos)

# prints the move, e.g. 11-16
print(ck.uci(move))

# how the game stands for the side to move: (win, draw, loss)
E, _ = crystal.run(ck.frames([pos]))
print(ck.value(crystal, E)[0])

# play the move
pos = ck.make(pos, move)

Files

File Size What it holds
checkers-crystal.safetensors 168 MB 40 phase surfaces, fp32 radians
checkers-crystal-16bit.safetensors 21.0 MB phase wrapped to one turn, 16 bits a sample, cropped to the lit window
checkers-crystal-8bit.safetensors 10.5 MB the same at 8 bits

The crystal

Part Details
Light 617 nm, coherent
Glass fused silica, n = 1.4607; four sections in one block, separated by air slots
Surfaces 10 per section, each 1024 × 1024 samples at 1 µm; 8 mm of glass per pass
Lit window 512 µm square
Input the board as a 96 × 96 picture, the crystal always the side to move: solid discs for its pieces, crowned discs for its kings, rings for the opponent's
Between passes the camera's picture exposed from its own mean and spread, dithered to 17 levels (4 × 4 mirrors a pixel)
Output a 32 × 32 move map (row = from-square, column = to-square), with a win / draw / loss readout in its unused corner

Training

Trained in simulation on checkers-positions, with the Stermere/Marcher engine as the teacher, in stages:

  1. Legal moves: light only on moves the rules allow.
  2. Safe moves: light only on moves that don't lose material.
  3. The teacher's ranking: light shared out by how the engine scores each move, so the best move is brightest.

The crystal is a distillation of that engine into glass.

Credits

The moves the crystal learned from were scored by the Stermere/Marcher checkers engine by Collin Kees (MIT license).

License

The crystal is CC BY-NC 4.0: free to use, share and adapt for non-commercial purposes, with credit. For commercial use, contact TextJam, Inc.

The neuralcrystal code is MIT.

© 2026 TextJam, Inc.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Dataset used to train neuralcrystal/checkers-crystal