まだまだ実装したいことが山積みだけど、自分用のメモを兼ねて

“ghoti” とは

2022年2月ぐらいに作り始めたぷよぷよAIです

“ghoti” は 「ふぃっしゅ」 と読みます (Wikipedia - Ghoti

現状はSteamのぷよスポでのみ動作します(いずれはぷよテトでも動かしてみたい)

動作している様子はこんな感じ(1P: 僕、2P: ghoti)

アルゴリズム

操作部分の実装にあまりにも時間を掛けてしまったので、 現状はまだ簡単に実装できるところしか手を付けられていないです

一応案はいくつかあるので時間があるときに実装したいな…

  • モンテカルロ法 + ビームサーチ
    • モンテカルロ部分は20並列
    • 探索速度はかなり遅い
    • 評価関数はGAでチューニングしてみてるけど、あんま上手くいってなさそう
    • モンテカルロ法の偉大な既存研究 → SlideShare - ぷよぷよAIの新しい探索法
  • 凝視に基づいた発火判断
    • 本線のサイズとか地形とかを見てる
    • 正直、探索部分が雑魚でもこっちが強ければそこそこ戦える気がしているので強くしたいが…

実装部分

前々から使ってみたかったこともあり、全部 Rust で書いてみてます

初学者が適当に書いたコードなのでまさかり大歓迎です!!

ちなみにゲーム内操作の部分は公開していません(なんかこわいので)

morioprog/ghoti

大まかな構造

肝心なのはここらへん

  • cpu: AIの思考部分
  • simulator: とこぷよ/2P対戦のシミュレータ
    • フレーム数とかはぷよスポ準拠にしようとしてるけどバグってそう
  • optimizer: 評価関数のチューニング

ちなみに…

テトリスAIのColdClearをめちゃくちゃパクって参考にしています

実装がキレイだしちゃんと強くてすごい

MinusKelvin/cold-clear

どうやら書き直したバージョンもあるみたいですが追えてません

MinusKelvin/cold-clear-2

おわりに

ぷよAIたのしいのでみんなもやろう!

もし何か知りたいことがあったら Twitter までお願いします!🙇