riftbound-agent · MIT オープンソース
このページは英語版を機械翻訳したものです。不自然な箇所があれば英語原文が基準になります。

MITライセンス・オープンソース

トレーディングカードゲームの反応タイミングを理解するようAIに教えた人は、まだ誰もいません。私たちはそれに挑戦しています。

カードゲームAIに関する公開研究の多くは、相手が自分のターン中に行動できるようになった時点で止まっています。このプロジェクトはその先、範囲を限定したバージョンを構築しており、すべて公開されているので一行一行確認できます。

なぜ難しいのか、そしてなぜほとんど誰もやっていないのか

ボードゲームは完全情報ゲームです。盤面はテーブルの上にそのまま置かれているので、探索できます。カードゲームは最初の一手からこの前提を崩します。デッキはランダムで、相手の手札は隠されているため、「現在の局面」はひとつに定まりません。

第二の壁こそが、どのゲームが実際に解けるかを決めます。それは相手が自分のターン中に行動できるかどうかです。Hearthstoneは公開研究が最も進んでいるゲームですが、それはカードプールが小さいからだけでなく、相手がほとんどの場合こちらを妨害できず、リリースされた実装そのものが唯一正しいルールエンジンであるため、研究者が環境を得るためにルールを再解釈する必要がないからです。

マジック:ザ・ギャザリング側にはそういったものがありません。最も近い参照実装はコミュニティ製です。MTGのForgeは長く保守されている非公式ルールエンジンで、遊戯王のygo-agentは下層にygopro-coreがあるからこそ学習できます。両ゲームの最近のベンチマークであるMTG-Causal-RLPTCG-Benchは、LLMエージェントがゼロではない成績を出せることを示していますが、どちらも安定した強さは示していません。両方とも限られたアーキタイプの集合を固定された観測空間に入れて手法を比較する研究用ベンチマークであり、自己対戦できる世界ではありません。

Riftboundは難しい側に位置します。チェーンがあり、優先権とフォーカスが受け渡され、リアクションタイミングがあり、相手の行動の合間に局面が変化し続けます。試みはすでに存在します。ツリーサーチを組み込んだ公開のRiftboundシミュレーターが少なくとも一つあり、チェーン解決を避けずに正面から扱っています。

それらのどれにもないのが適合性テストスイートです。実装されたタイミングがルールに書かれたタイミングと条項単位で一致しているかを確認し、どの部分がまったく実装されていないかを明示する方法です。これがなければ、「不正」と「未モデル化」は同じ答えになってしまいます。プレイする分には問題ありません、どちらも「できない」という意味だからです。しかしその環境から学習したり、証拠として引用したりする何かにとっては、結果と推測の違いになります。

つまり壁は、モデルが十分賢くないことではありませんでした。壁は、誰かが先にルールをプログラムに書き起こさなければならないということです。

賭け:範囲を限定し、「わからない」と言えるようにする

すべてのカードをモデル化する必要はありません。実際には、あるフォーマットで使われるのは印刷されたカードのごく一部であり、それを正直にエンジニアリングに落とし込むと「範囲を限定する」ことになります。実際に到達するメカニクスだけを実装し、残りは未モデル化として明示します。

これはひとつの条件の下でしか機能しません。システムはunsupportedと答えることを許されなければならず、その答えは黙って握りつぶされた失敗ではなく、正式な結果として扱われなければなりません。答えを保留することを取り繕うべき問題として扱った瞬間、限定された範囲は静かにすべてを網羅しているふりをするシステムへと変わり、それは作らないより悪いものになります。

だから役割分担は固定されています。プログラムが機械的な層を所有し、モデルはその残された空間の中でだけ推論します。モデルが読めるようにルールをプロンプトに翻訳するのではなく、ルールを実際に実行することで、モデルが言い逃れできない空間を作るのです。

現在の正確な進捗

上記の目標は最大限の大きさで語られています。この部分は正確に語られており、両者は同じものではありません。ここに書かれているすべての行は、リポジトリ内の適合性テストスイートによって検証されています。スイートが変われば、このページは間違っていることになります。

そもそもカーネルを作ることになった理由

3 / 46 実戦と照らし合わせた監査を変更なしで通過したレジェンド分析。この監査はカーネルが存在する前に行われました。

このプロジェクトは、派生的な知識ベースとして始まりました。すべての項目は、他人のガイドから要約したものではなく、カードテキストとゲームメカニクスから直接書かれており、そのため項目を再生成するコストは低いものの、それ自体では証明されていません。そこで全46項目を確立されたプレイと照らし合わせて検証したところ、3項目は修正の必要がありませんでした。

最も有益だった発見は、レジェンドとは無関係のものでした。禁止カード置き換えロジックが、すべてのプレイヤーに無条件でルーンを配るカードを、ポイントを保持している側にのみ支払われるカードに置き換えていました。同じドメイン、同じコスト、完全に合法な置き換えでしたが、そのデッキは意図的に序盤の盤面を明け渡してテンポを得るデッキだったため、この置き換えは結果的に相手を利することになっていました。この問題を発見したのはプロジェクト外のプレイヤーであり、内部チェックではありませんでした。

その監査こそが、カーネルが存在する理由です。カードの表面からの導出は、それ自体としては筋が通っています。しかし問いが「このデッキは実際に何をしようとしているのか」あるいは「今、機械的に何が合法なのか」に変わった瞬間、それは成り立たなくなります。そしてその機械的な半分は導出できるものではなく、実行するしかありません。

私たちが狙っている一線

囲碁AIが投資に値したのは、あらゆる人間に勝てるからです。トレーディングカードゲームはそういう形をしておらず、誰かが超人的なプレイヤーを作ったとしても、それほど価値はないでしょう。ここで狙っている一線は意図的に異なり、それなりの意味でより難しいものです。

人に勝つことではなく、正しく教えることです。デッキが何をしているのかを説明でき、その主張が何に基づいているかを示し、本当にわからない地点で立ち止まることです。

プレイを学ぶことは、実は簡単な半分です。難しい半分は、デッキを構築し、フォーマットを読み、カードが禁止されたときに何に入れ替えるべきかを知ることであり、まさにそこで私たち自身の置き換えロジックが失敗しました。それも、合法的には自信を持つだけの理由が十分にあったデッキで、です。その失敗こそが問題の形そのものであり、隠して取り繕うべき恥ではありません。

これがいつか完全なルールエンジンや学習システムに成長するかどうかは、私たちにもわかりません。しかしその間に蓄積されているもの、つまり構造化された状態、実行可能な適合性テストケース、証拠の記録は、そのどちらになるにしても必要な土台です。

実際に役立つこと

これは一人でやるには遅すぎますし、足りていない部分はまさに、このゲームかエンジニアリングのどちらかを知っている人を必要とする部分です。ここで何かを始めるのに許可は必要ありません。フォークしてもいいし、壊してもいいし、issueを開いてもかまいません。

導出結果を崩してみる
あの置き換えロジックのバグは、そのロジックよりもデッキを深く理解していたプレイヤーによって見つかりました。これは今も最も価値のある貢献であり、コードは一切不要です。
カーネルにメカニクスを書く
公式条項に紐づいた、型付き操作と適合性テストケース。これがボトルネックです。ルールをコードに落とし込むこと自体が全体の壁であり、この作業は並行して分担できます。
この手法を別のゲームに移植する
このアプローチにRiftbound固有の部分はありません。二つ目のゲームこそが、これが本当に一般化できるかを確かめる真の試金石です。

これではないもの

ルールエンジン、AIエージェント、学習済みプレイヤーモデルは、それぞれ異なる三つのものです。このプロジェクトは二番目のものとして始まり、その後、一番目の限定された部分を書き上げました。三番目ではありませんし、そのふりもしていません。完全な状態機械も、フルのカード効果エンジンも、自己対戦データも、学習済みのポリシーもありません。

また、これは実際にプレイもしません。すべては準備段階、つまり構築、理解、練習、振り返りにとどまっています。もしいつか公式のデジタルクライアントを含む権威あるルールエンジンが登場すれば、このプロジェクトは不要になるのではなく、むしろより有用になるでしょう。そのエンジンはプレイに、このプロジェクトは準備に、それぞれ仕えるものだからです。

RiotのDigital Tools Policyはデッキ管理ツールや教育目的のツールには寛容ですが、自動化されたルール実行やゲームプレイシミュレーターについては事前承認しないと明言しています。この境界線が、野心よりも先に設計を形作りました。すべてのプレイ提案は人間の確認を待ちます。これは研究および教育目的で作られており、大会中の使用は大会規定違反です。