
오델로 AI의 구성
오델로는 바둑 클라이언트를 본떠 만들었습니다. Qt 앱, VLM 서버, 웹 대국(othello.mariago.kr) 세 부분입니다. 웹에서는 사람이 흑을 잡고 상대를 로컬 AI와 VLM 중에서 고릅니다.
사람과 둔 기록
웹에서 끝난 판은 31판입니다. 사람이 23판, AI가 7판을 이겼고 1판은 비겼습니다.
사람이 이긴 23판 중 12판은 9수 만에 끝났습니다. 결과는 모두 13–0으로, 백 돌이 판에 하나도 남지 않았습니다. 수순은 두 가지뿐이었습니다.
- C4 C3 C2 C5 C6 D6 E6 F4 G4: 8판
- D3 C3 B3 E3 F3 F4 F5 D6 D7: 4판
두 번째는 첫 번째를 대각선으로 뒤집은 수순입니다. 12판 모두 같은 브라우저에서 나왔습니다. 한 번 찾은 길을 계속 다시 간 것입니다.

상대가 누구였나
대국 기록에는 상대가 로컬 AI였는지 VLM이었는지 남지 않습니다. 그래도 12판은 로컬 AI가 둔 판으로 볼 수 있습니다. 같은 수순이 여덟 번, 네 번 그대로 되풀이됐기 때문입니다. 3편에 적겠지만 VLM 서버는 이 기간에 무작위로 수를 골랐고, 무작위로는 같은 수순이 반복되지 않습니다.
전멸 수순은 두 개뿐이었다
로컬 AI가 백일 때 흑이 둘 수 있는 모든 수를 11수까지 펼쳐 봤습니다. 백을 전멸시키는 수순은 정확히 두 개였고, 기록에 남은 두 수순과 같았습니다. AI에게 있던 구멍은 이 둘뿐이었고, 그 구멍을 찾아 계속 이긴 것입니다.
이 단계의 실제 코드
대국 기록 테이블입니다. 수순(moves)과 결과(end_text)는 있지만 상대 종류는 없습니다.
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
);다음 글은 ‘2. 한 수만 보는 AI: 배포된 AI와 소스가 달랐다’입니다.
COMMENTS · CHAPTER 01
9수 만에 13–0으로 지는 오델로 AI 댓글 0
아직 댓글이 없습니다. 읽다가 궁금한 점이나 보탤 내용을 남겨 주세요.
댓글을 등록하려면 구글로 시작하기를 눌러 닉네임과 메일 주소를 등록해 주세요.
구글로 시작하기