
How the Othello AI is built
Othello was modelled on the Go client. It has three parts: a Qt app, a VLM server and web play (othello.mariago.kr). On the web, a person plays Black and chooses either the local AI or the VLM as the opponent.
Records against people
31 games were finished on the web. People won 23, the AI won 7 and 1 was a draw.
Of the 23 games people won, 12 ended in 9 moves. Every one of them ended 13–0, with not a single white disc left on the board. There were only two sequences.
- C4 C3 C2 C5 C6 D6 E6 F4 G4: 8 games
- D3 C3 B3 E3 F3 F4 F5 D6 D7: 4 games
The second is the first sequence mirrored along the diagonal. All 12 games came from the same browser. Someone found a path once and kept taking it again.

Who was the opponent?
The game records do not say whether the opponent was the local AI or the VLM. Still, the 12 games can be attributed to the local AI, because the same sequences repeated exactly eight and four times. As post 3 explains, the VLM server was choosing moves at random during this period, and random play does not repeat the same sequence.
There were only two wipe-out sequences
With the local AI as White, we expanded every move Black could play up to move 11. There were exactly two sequences that wipe out White, and they were the same as the two in the records. These were the only holes the AI had, and someone found them and kept winning.
The actual code for this step
This is the game record table. It has the move sequence (moves) and the result (end_text), but not the kind of opponent.
othello-web/lib/db.ts
CREATE TABLE IF NOT EXISTS games (
code TEXT PRIMARY KEY,
guest_id TEXT NOT NULL,
access_key TEXT,
size INTEGER NOT NULL DEFAULT 8,
board TEXT NOT NULL,
to_play INTEGER NOT NULL,
last_r INTEGER,
last_c INTEGER,
move_no INTEGER NOT NULL DEFAULT 0,
epoch INTEGER NOT NULL,
started INTEGER NOT NULL DEFAULT 0,
status TEXT NOT NULL DEFAULT 'playing',
end_text TEXT,
moves TEXT NOT NULL DEFAULT '[]',
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);The next post is "2. An AI that looks only one move ahead: the deployed AI differed from the source".
COMMENTS · CHAPTER 01
An Othello AI that loses 13–0 in 9 moves 0 comments
No comments yet. Leave a question or anything you would like to add.
To post a comment, continue with Google and register a nickname and email address.
Continue with Google