Swift製オセロエンジンです
苦労に苦労を重ねて書いたおかげでとても遅くて弱いエンジンです。まだまだ若輩者です。
これは何か
オセロAIとオセロ環境、あとオセロエンジンと喋るプロトコルとそれをコマンドラインで動かすためのアプリケーションです。
GraphiteとGraphene
オセロエンジンはGrapheneといいます。中にはオセロをやるための盤面クラス、ゲーム進行に必要なクラス、高速な盤面処理のためのビットボード、オセロエンジンのための探索、静的評価当一式が入っていてSwiftで書かれたフレームワークの形をしています。使うためには普通にフレームワークとして取り込んでもらえば大丈夫です。
その使用例がGraphiteです。コマンドラインでEdaxっぽく喋ります。
Grapheneは炭素の薄い膜みたいなやつです。それを集めてGraphiteとなるので部品であるAIはGraphene、遊べるアプリケーションはGraphiteという名前にしました。
何が含まれているか
- Swiftで書かれたオセロAI
- 普通のAlpha-beta search
- そこそこ高速なbit board(まだまだ高速化は足りませんがまあまあぐらいのものが入っています)
- 前時代的な静的評価関数(それでも作者より強いです。作者がオセロ激弱なだけですが)
- オセロエンジンのための普通の構造(マシなコード構成になっていると思います)
- 一部高速化のためにCでintrinsicsを呼び出しています(Cのコード呼び出す良いサンプルになっているかと思います)
何が含まれていないか
- 強いAIエンジン
- 本物のEdaxに100先100敗のボロ負けするほど弱いです。
- 高速なAIエンジン
- Shallow searchもTransposition tableも何も入っていません。Move orderingすらも入っていないので遅いし深くまで読めませんです。
- 素晴らしい評価関数
- それでも評価関数の係数はAWSで金かけて最適化しました。
さらに
そのGrapheneを使ったiPhone用のオセロアプリがFlatReversiです。
まとめ
そんなわけで最近水面下でやっていたことを少しまとめてみました。 Swiftでなんかやりたい人の参考になれば幸いです。