ブラウザで GNU Go を遊びたい
GNU Go は標準入出力で遊べます。
そして
emscripten という C から JavaScript に変換できちゃうものがあります。
組み合わせたら最強じゃね? ということです。
遊び方
(1)黒番とか白番は「⇅」のボタンを押下して切り替えてください。
(2)盤面サイズとコミとレベルと必要なら置き石をそれぞれ設定します。
(3)play ボタンで開始です。
(4)盤面をクリックするとそこに石を置けます。
※置けない場所をクリックすると、たぶん何も起きません。
(5)resign で投了です、そうじゃなければ pass を互いにすると終局です。
(6)終局すると、下のテキスト欄にSGF情報が出ます。
(7)(1)からやりなおしでまた遊べます。
注意点
・jsの容量がそこそこありますので、初回はちょっと遅いかも知れません。
ブラウザキャッシュに保存されればあとは早いです。
・たまに長考がひどくてブラウザからスクリプトの実行を停止するかどうかを尋ねられる可能性があります。
・日本語表記がないのは、国際的な視野を持った意識の高さが発露……ってわけじゃなくて、単に作りはじめのレイアウトが狭かった名残です。
GPLv3にまつわるアレ
もとのソース
GNU Go 3.8 のソースです。→
https://ftp.gnu.org/gnu/gnugo/
差分
Web化するにあたり、標準入力が prompt() になってしまって使い勝手が悪いので、そのへんの調整をしています。
とりあえずブラウザで遊べればいいやという手入れで、動作方式の追加ではなく既存の書き換えなので取り扱い注意です。
差分ファイル(diff)
emscripten
GNU Go は emscripten でのコンパイル自体はすんなり通るくらいの素直な構造になっています。
duplicate とかの重複定義エラーは static にして逃げれば大丈夫です。
ビルドしようとすると、GNU Go は途中成果物をさらに実行してファイルを作っている箇所があるので、
そこだけネイティブで作ってあげる必要が出てくると思います。
node.js で実はいけたりするかも知れませんが、そこまで見てません。
なお emscripten のバージョンは 2.0.12 です。apt で入ったのがそれでした。
最新はもっと色々と簡単にできるようになっているかも知れませんが、やりたいことはできたので満足です。
履歴
20231104 ASCII モードから GTP モード起動に変更、置き石もできるようにした
20231031 初版