開発日記㉒ 麻雀AIライブラリを導入する

前回までの進捗

前回は、流局したときの4人の手牌からシャンテン数を計算し、テンパイしているプレイヤーを自動判定できるようにした。
ここまででツモ・打牌・流局まで対局を進められるようになったが、CPUの打牌はまだ単純なツモ切りだけ。
今回は、CPUが手牌を考えて打牌できるようにするための準備として、麻雀AIライブラリを導入する。

麻雀AIライブラリを追加する

これまで麻雀の牌山や手牌の処理には@kobalab/majiang-coreを使ってきた。
今回は新たに、

@kobalab/majiang-ai

を追加した。
このライブラリには麻雀を打つAIプレイヤーが用意されているため、今後は自分でCPUの思考ロジックを一から作らずに対局へ組み込める。

AIプレイヤーを作れるようにする

まずは、AIプレイヤーを1人生成する処理を用意した。
さらに、自分以外の3人をCPUとして使うことを想定して、3人分のAIプレイヤーをまとめて生成できるようにした。

プレイヤー
CPU
CPU
CPU

という構成へつなげるための準備になる。

ライブラリを直接使わない形にする

麻雀本体のライブラリと同じように、AIについてもアプリのあちこちから直接呼び出すのではなく、専用の処理を間に挟む形にした。

アプリ
↓
AI用の処理
↓
majiang-ai

こうしておけば、今後AIの使い方を変える場合でも影響する範囲を抑えやすい。

AIを生成できるかテストする

この段階では、まだAIに実際の対局を打たせてはいない。
まずは、

  • AIプレイヤーを生成できる
  • AIが行動用の処理を持っている
  • 3人のAIを別々のプレイヤーとして生成できる

ことをテストした。
いきなり現在の対局処理へ組み込むのではなく、まずライブラリを問題なく扱えることを確認してから先へ進める。

今回できたこと

今回の進捗は以下のとおり。

  • 麻雀AIライブラリを導入した
  • AIプレイヤーを生成できるようにした
  • CPU用に3人のAIを生成できるようにした
  • AIライブラリを扱うための処理を分離した
  • AI生成のテストを追加した

まだCPUの打牌がAIに置き換わったわけではないが、これで本格的な麻雀AIを対局へ組み込むための準備ができた。
次回は、AIプレイヤーを4人用意して実際に1局を最後まで進行させ、和了または流局まで自動で完走できるか確認する。

進捗キャプチャも取れないくらい裏方はモチベが保ちづらいし、文章も起こしづらい。牛一。

コメント

タイトルとURLをコピーしました