まだまだ実装したいことが山積みだけど、自分用のメモを兼ねて
“ghoti” とは
2022年2月ぐらいに作り始めたぷよぷよAIです
“ghoti” は 「ふぃっしゅ」 と読みます (Wikipedia - Ghoti)
現状はSteamのぷよスポでのみ動作します(いずれはぷよテトでも動かしてみたい)
動作している様子はこんな感じ(1P: 僕、2P: ghoti)
アルゴリズム
操作部分の実装にあまりにも時間を掛けてしまったので、 現状はまだ簡単に実装できるところしか手を付けられていないです
一応案はいくつかあるので時間があるときに実装したいな…
- モンテカルロ法 + ビームサーチ
- モンテカルロ部分は20並列
- 探索速度はかなり遅い
- 評価関数はGAでチューニングしてみてるけど、あんま上手くいってなさそう
- モンテカルロ法の偉大な既存研究 → SlideShare - ぷよぷよAIの新しい探索法
- 凝視に基づいた発火判断
- 本線のサイズとか地形とかを見てる
- 正直、探索部分が雑魚でもこっちが強ければそこそこ戦える気がしているので強くしたいが…
実装部分
前々から使ってみたかったこともあり、全部 Rust で書いてみてます
初学者が適当に書いたコードなのでまさかり大歓迎です!!
ちなみにゲーム内操作の部分は公開していません(なんかこわいので)
大まかな構造
肝心なのはここらへん
cpu
: AIの思考部分cpu/src/bot
にいろいろ置いてあります
simulator
: とこぷよ/2P対戦のシミュレータ- フレーム数とかはぷよスポ準拠にしようとしてるけどバグってそう
optimizer
: 評価関数のチューニング
ちなみに…
テトリスAIのColdClearをめちゃくちゃパクって参考にしています
実装がキレイだしちゃんと強くてすごい
どうやら書き直したバージョンもあるみたいですが追えてません
おわりに
ぷよAIたのしいのでみんなもやろう!
もし何か知りたいことがあったら Twitter までお願いします!🙇