1. NPC設定
このゲームでは、対戦相手がNPC(AI)であり、テーブルに座るプレイヤーの人数やどのような行動パターンを持ったNPCと対戦するかを設定することができます。NPC設定は様々な行動パターンを持つNPCの設定を定義します。
2. NPC設定画面

NPC設定画面の各項目は以下の通りです。
- NPC名称 : NPC設定の名称。重複した名称は用いることができません。
- 名称を隠す : チェックを入れるとNPCの名称が”Unknown”と表示されます。チェックを外すとNPC Nameが表示され、どのNPCと対戦しているかを知ることができます。
- プレイヤータイプ : プレイヤーの行動パターンを設定します。タイプによって設定画面が切り替わりますので膣ような項目を設定してください。選択肢は以下の通りです。それぞれのタイプについては次節以降で説明します。
- Caller : 手札にかかわらずCall or Checkをしてきます。
- Random : 手札を見ずに、確率でランダムな行動を選択してきます。
- Utility Maximization : 手札の勝率を推定し、それを元に期待効用を最大化する行動を選択してきます。
- Clone AI Model : ユーザのPlay Logを用いて機械学習を行い、プレイヤーのプレイを真似するように行動してきます。
3. Random

プレイヤータイプでRandomを選択した場合、NPCが選択するアクションの確率分布を設定します。NPCのアクションはすでにベットされている場合(Committed)とベットがされていない場合(Non-Committed)に分かれます。Committedの場合はFold,Call,Raise、Non-Committedの場合はCheck,Betから選択します。それぞれのボタンを押すと、ポップアップ画面が表示されますので、それぞれの場合のアクションの確率分布を設定します。
各行右側の数値は、それぞれの場合においてそのアクションを選択する比率であり、合計が1にならない場合は自動的に合計が1になるように基準化されます。入力した内容は画面を閉じた際にメモリ上に自動で保持されます。
4. Utility Maximization

プレイヤータイプでUtility Maximizationを選択した場合、効用関数のパラメータを設定します。設定するパラメータは以下の通りです。
- リスク回避係数 : リスク回避度 (Passive or Aggressive)
- スタックファクター : スタックが減った時に強気な行動を選ぶかを設定。値が小さいほど強気になります。
- ルース (+) or タイト (-) : Loose or Tightの程度を設定
- シミュレーション回数 : モンテカルロシミュレーションの回数
このモデルでは、平均分散型期待効用関数
\[ \small U(s) = \mu_s-\frac{\gamma}{2}\sigma_s^2 \]
を最大化する選択を行うように行動します。ここで、\(\small s\)はゲーム開始時点のスタックを1に基準化したスタック保有量であり、\(\small \mu_s,\sigma_s^2\)はモンテカルロシミュレーションの結果得られたスタックの平均値と分散を表します。\(\small \gamma\)はリスク回避度と言われるパラメタであり、この値が大きいほどパッシブなプレイヤーになり、小さいほどアグレッシブなプレイヤーになります。
この効用関数はCRRA型効用関数と言われるスタックが減るとリスク回避的になる効用関数と類似していることが知られています。そのため、そのまま用いるとオールインを極端に避ける行動をとります。これを避けるため、スタックが減った場合にリスク回避的な行動をしないように分散\(\small \sigma^2 \)の値をスケーリングして調整します。この調整ファクターをスタックファクターと言うことにします。このパラメータを画面から設定することができます。
また、Foldを選択する場合はスタックの値が変化しないため、期待効用は常に1になりますが、Fold時の期待効用の水準を調整することで、ルースなプレイヤー(Foldを避けるプレイヤー)、タイトなプレイヤー(Foldを好むプレイヤー)を表現することができます。この水準を調整するファクターがルース (+) or タイト (-) です。プラスの値ではルースに、マイナスの値ではタイトに調整されます。
Random同様にNPCが選択するアクションの種類をCommittedとNon-Committedで設定します。設定されたアクションの中で、モンテカルロシミュレーションを行った結果として、期待効用が最も高いアクションを選択します。モンテカルロシミュレーションの試行回数は画面上で設定することができます。300~1000回程度で十分ですが、計算時間がかかってもよい場合は回数を増やすことができます。
5. Clone AI Model

プレイヤータイプでClone AI Modelを選択した場合、モデルに用いられるPlay Logを参照したり削除したりすることができます。参照ボタンを押すと直近50回分のPlay Logを確認することができ、削除ボタンを押すとPlay Logを削除することができます。リリース時点では、単純な頻度テーブル(Frequency Table)によるサンプリングによるアルゴリズムしか実装されておらず、十分な精度の複製が実感できないと推測されます。今後のアップデートなどを通じて、統計モデル(ロジスティック回帰分析など)やニューラルネットワークを利用したアルゴリズムを導入していく予定です。
6. 設定の保存
上記の画面設定は「保存」ボタンを押すことで保存されます。「保存」ボタンを押さずに画面を閉じると、編集内容はすべて破棄されます。