Skip to content

name-advanced/OthelloAI

Repository files navigation

6×6 Othello AI

名古屋工業大学の「プログラミング応用」で開発した Java 製の 6×6 オセロ AI です。 ブラウザ版では、人間が標準盤または BLOCK 付き変形盤を使って AI と対戦できます。

Web 版: https://name-advanced.github.io/OthelloAI/

特徴

  • 6×6 ビットボードによる高速な盤面処理
  • αβ法、PVS、手順並べ替え、置換表を組み合わせた探索
  • 残り 18 マス以下での終盤完全読み
  • BLOCK 配置に対応した評価関数と定石
  • 黒・白・ランダムの手番選択
  • Web Worker 内で動作する Java/WebAssembly AI
  • 新しく置いた石と反転した石を見分けやすい盤面アニメーション
  • キーボード操作とスクリーンリーダーに配慮した日本語 UI

一般的な 8×8 オセロではなく、授業の競技仕様に合わせた 6×6 盤です。

学生コンペでの実績

授業内の学生コンペでは、8チーム中4位の成績でした。コンペでは、各プレイヤーの1対局あたりの累積思考時間を60秒以内に収める制約があり、このAIはその条件を前提に設計・調整しました。

この60秒はコンペ時の制約です。ブラウザ版では思考時間に自動上限を設けていないため、局面によっては60秒を超えて長考する可能性があります。

ブラウザ版の仕組み

ゲームルールと AI は Java で実装し、TeaVM で WebAssembly GC に変換します。AI の探索は専用の Web Worker 内で実行されるため、長い思考中も画面操作や経過時間表示は停止しません。

定石 CSV はビルド時に BLOCK 配置ごとの小さなバイナリへ分割され、選択した盤面に必要なデータだけが読み込まれます。対局情報は利用者の端末内だけで処理され、外部サーバーへ送信・保存されません。

対応下限は Chrome/Edge 119、Firefox 120、Safari 18.2 です。

ビルド

必要なものは JDK 17 以上だけです。Gradle のインストールは不要です。

./gradlew clean buildSite

生成された GitHub Pages 用サイトは build/site/ に配置されます。

通常のビルドでは JVM テストと本番用 Wasm の生成・検査を実行します。Chrome が利用できる環境では、TeaVM の JUnit テストを実際の Wasm GC 上でも実行できます。

./gradlew test -PwasmBrowserTests=true

GitHub Actions ではこのブラウザテストも毎回実行します。

ローカル確認は HTTP サーバー経由で行います。

./gradlew serveSite

Wasm は file:// から直接開けません。

JVM 版

授業用リーグを含む Java 一式も Gradle からコンパイルできます。

./gradlew classes
java -cp "build/classes/java/main:ap26unit2" Competition26

Windows ではクラスパス区切りの :; に置き換えてください。

主な構成

  • ap26unit2/p26x05/ — 自作 AI、盤面、評価関数、定石
  • ap26unit2/ap26/ — 授業用の共通インタフェースとリーグ基盤
  • src/teavm/java/ — Java とブラウザの橋渡し
  • web/ — HTML、CSS、ES modules、Web Worker
  • .github/workflows/ — テストと GitHub Pages 配信

開発者向け資料

実装上の固定契約とエージェント向け作業規則は AGENTS.md、クリーンビルド、定石生成、ブラウザ受入、Pages公開を再現する手順は docs/REPRODUCIBILITY.md にまとめています。

公開とライセンス

自作部分は MIT License で公開します。授業配布物とビルド時に利用する第三者ソフトウェアの扱いは THIRD_PARTY_NOTICES.md を参照してください。

公開前に、授業配布基盤・課題内容・自作解答・定石データを公開再配布できることを、担当教員および大学の条件に照らして必ず確認してください。

本リポジトリは授業で制作した非公式の学生作品であり、大学による公式サービスではありません。

About

名古屋工業大学のプログラミング応用の授業で作成したオセロAIをGitHub Pagesで遊べるようにしました。

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages