Skip to content

Repository files navigation

ZenGo 🌌 - AlphaZero Interactive Go Web Playroom

An ultra-modern, high-fidelity, client-side Go playing web application. It runs a Monte Carlo Tree Search (MCTS) engine guided by a heuristic Policy-Value Surrogate Network resembling the AlphaZero architecture. The application is built using modern vanilla web technologies (HTML5, CSS3, ES6 Modules, Canvas, Web Workers, and Web Audio API) with a dark neon, premium cyber-aesthetic.


🚀 起動方法 (How to Run)

本アプリは外部アセットやサーバーサイドの依存がなく、静的なHTML/CSS/JSファイルのみで構成されています。 ただし、Web Workerを使用しているため、ブラウザのセキュリティ上の制約により、ローカルのWebサーバー経由で開く必要があります(ダブルクリックで直接 index.html を開くと動作しません)。

推奨起動手順

  1. プロジェクトディレクトリをワークスペースに設定する: C:\Users\sqpjk\.gemini\antigravity\scratch\alphazero-go-app

  2. ローカルサーバーを起動する: ターミナルを開き、本ディレクトリで以下のコマンドのいずれかを実行してください。

    Pythonを使う場合 (推奨・標準搭載):

    python -m http.server 8000

    Node.js (npm) を使う場合:

    npx serve ./
  3. ブラウザでアクセスする: ブラウザのアドレスバーに以下を入力して開きます。 http://localhost:8000


🧠 アーキテクチャとAlphaZeroロジック

本アプリは、Google DeepMindのAlphaZeroリサーチペーパーにインスパイアされた本格的な思考エンジンをクライアントサイドで動かします。

1. マルチスレッド探索 (Web Workers)

重いMCTSシミュレーションループを go-worker.js の背景スレッドに退避させ、メインスレッドのUI描画やホバープレビューを完璧に滑らかな状態(100%描画ラグなし)に維持します。

2. ニューラルネットワーク・サロゲート (Heuristic Policy-Value Network)

従来のモンテカルロ木探索のように「終局まで完全にランダムなゲーム(ロールアウト)」を繰り返すのではなく、AlphaZeroのように**「局面評価器(Policy-Valueサロゲート)」**が盤面を直感的に評価します。

  • 直感的確率 (Policy Prior $P(s, a)$): アタリからの逃げ、ダメ詰め、コウの解消、生きるための眼形、さらには**「影響力マップ(Influence Map)」**をベースにした境界線の構築など、囲碁の基本手筋から手の「良さ」を算出。Softmax関数で確率分布に変換して探索を強力に誘導します。
  • 局面価値 (State Value $V(s)$): 石の数差、取った石の数(アゲハマ)、石全体の呼吸点の数、影響力マップの支配面積などの特徴量を合成し、双曲線正接関数($\tanh$)を用いて期待勝率を $[-1, 1]$ で評価します。

3. PUCT (Predictive Upper Confidence trees) 選択公式

MCTSの選択フェーズでは、以下の公式を用いて「探索の幅(未開拓の手の開拓)」と「探索の深さ(有望な手のさらなる検証)」のバランスをとります: $$U(s, a) = Q(s, a) + c_{puct} \cdot P(s, a) \cdot \frac{\sqrt{\sum_b N(s, b)}}{1 + N(s, a)}$$

4. リアルタイム・テレメトリ

AIが思考している間、脳内シミュレーション状況がリアルタイムにストリーミング送信されます。

  • ヒートマップ: 盤面上にAIが今どの手をどれだけ検討しているかを、訪問割合の大きさでグローエフェクト描画。
  • 勝率評価ゲージ: 現在の局面評価 $V(s)$ から、AIのリアルタイムな勝率予測を円形メーターに反映。
  • 候補手テーブル: 現在のトップ5の候補手、および各手の $N$ (検証回数), $P$ (直感率), $Q$ (評価勝率) をライブ更新。

🎨 プレミアムデザイン&音響システム

  • ビジュアルエステティックス: ディープスレートに広がるネオンシアンとエレクトリックバイオレットのサイバーグラデーション。磨りガラスのような透過度の高いグラスモルフィズムパネル。
  • 3D碁石レンダリング: キャンバスに描画される黒石(蛤を模した光沢を持つ高級黒石)と白石(シェルの光沢と影を持つ滑らかな白石)は、多層ラジアルグラデーションと浮き上がるドロップシャドウで3D彫刻のようなリアルさを追求。
  • 石打ち音の物理合成 (Synthetic Audio): Web Audio APIを用いて、碁石が肉厚の榧木板(かやのきばん)に打ち付けられるときの「高周波のインパルス衝突音」「木製のホローな共鳴音」「摩擦ノイズ」をリアルタイムで波形合成。オーディオファイルを一切読み込むことなく、いつでも満足感の高い石打ち音を鳴らします。

🛠️ プロジェクト構造

  • index.html — メインHUD、モーダル、ゲーム盤の枠組み。
  • style.css — カラーテーマ、グラスモルフィズム、アニメーション、レスポンシブデザイン。
  • main.js — メインスレッド用。盤面キャンバスの描画、マウス入力処理、Worker連携、 telemetryのUIバインド。
  • go-engine.js — 囲碁のルール、呼吸点、石のグループ捕獲、自殺手禁止、Positional Superko規則、コミ6.5を含む整地計算。
  • go-worker.js — MCTSスレッド用。探索ツリーの拡張、PUCT選択、Policy-Valueサロゲート評価、テレメトリ作成。
  • audio.js — Web Audio APIによる石打ち音シンセサイザー。
  • test-go.js — 囲碁のルールおよびMCTSエンジンの正当性を検証するターミナル用Node.jsテストスイート。

About

ZenGo - KataGo Neural Network Go AI in the browser (TF.js)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages