Skip to content

u-tokyo-gps-tanaka-lab/gpw2015

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gpw2015

説明

こちらは2015年度ゲームプログラミングワークショップにおいて,発表した「対話のない人狼ゲーム」の論文における使っていた自作プログラムとこれによって計算した実験結果のデータである.

#構成

プログラムの方は,cfrplus.pyとmafia.pyの2つのファイルによって構成する.前者はCFR+アルゴリズムの実装であり,後者は本研究の対象とした人狼ゲームモデルの実装である.

実験結果に関し,ファイル名は「村人_占い師_狩人_人狼_ループ回数.txt」のようにそれぞれの役職の数とループ回数の組み合わせにした.その中,メモリの制限のため,今回の実験では10人までの結果を計算した.ループの回数は今の段階では,全部500回で実行したものである.その500回に関し,適当に設定した回数であり,精度が十分かどうかに関する保証はない.

#記述方法

実験の結果は下記のような記述方法によって書かれた.

初期状態は「村人,占い師,狩人,人狼」という順番に並ぶ四つの数字で表示する.ただし,占い師,狩人は0か1のみを許す

R - 灰色の村人 D - 占い師(MafiaゲームでのDetective) G - 狩人 M - 人狼(Mafiaゲームからの借用) W - 占い師の結果によって白確定になった村人 C - 襲撃失敗により,狩人視点で白確定とみなされている村人(人狼視点でもCであることは分かる) S - 占い師の結果によって白確定の狩人 v - 投票のステップ(次の文字は投票の結果を表す) g - 狩人の防御,人狼の攻撃のステップ

  • gの次の文字が狩人の防御対象を表す.狩人が既に死んでいる場合は「-」とす その次の文字が人狼の攻撃対象を表す
  • 最後の文字が襲撃が成功したか(「+」),失敗したか(「-」)を表す d - 占い師のステップ
  • dの次の文字が占われたプレイヤを表す.占い師が既に死んでいるもしくは占った対象が襲撃された場合は「-」とする.

また,ヒストリーからゲームの状態及び狩人や人狼の視点で見える情報を同様の方法で表すことができる.

#実験結果の表示例

下記のような表示は狩人の視点で,「村人四人,占い師一人,狩人一人,人狼四人の初期状態から,まず投票によって灰色のプレイヤが吊られ,狩人と人狼両方とも占い師を対象として指定したため,襲撃が失敗し,占い師は狩人を占い,投票で灰色のプレイヤが吊られた」というISを意味する.

G,4 1 1 4, vR, gDD-, dG, vR

同じヒストリーが人狼からの視点は下記のようなISになることがある.

M,4 1 1 4, vM, gDD-, dR, vR

ステップの結果は違いがあるのは,狩人の視点から投票によって吊られたプレイヤの身分を特定することができなく,逆に人狼の視点から狩人を村人の中から特定することができないためである.

#プログラムの動き方

プログラムはcfrplus.pyとmafia.pyという2つの部分で構成されている.前者の方はCFR+に対する汎用的な実装であり,後者は本研究で提案した人狼ゲームのモデルを実装したものである.

mafia.pyをpythonの処理系で起動し,「村人の数,占い師の数,狩人の数,人狼の数」という4つのパラメータを提供することで,プログラムを動かす.ただし,占い師と狩人は最大一人のため,注意する必要がある.

例えば,MAC OS Xの時に,ターミナルで「python mafia.py 4 1 1 1」を入力することで,MacPythonを利用して「村人四人,占い師一人,狩人一人,人狼一人」という設定での結果を計算させる.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages