C# 版人狼知能エージェントの作り方
ー MonoDevelop / Xamarin Studio 編 ー
山形大学 学術研究院 大槻恭士
準備● Mono, MonoDevelop または Xamarin Studio をインストール(ここでの実例は Monodevelop 5.9 のものですが, Xamarin Studio もほぼ同じです)
● 人狼知能プラットフォームをダウンロードして任意のフォルダーに展開
● AIWolf.NET をダウンロードして任意のフォルダーに展開
● Json.NET を入手して, Newtonsoft.Json.dllを AIWolf.NET と同じフォルダーに置く
新規プロジェクトの作成( 1 )
● ファイル>新規>ソリューション
● .NET のライブラリを選択
新規プロジェクトの作成( 2 )
● プロジェクト名を入力(ここでは ExerciseAgent )
新規プロジェクトの作成( 3 )
● 自動的にソースファイル MyClass.cs にクラスMyClass が作成される
参照の追加
● プロジェクト>参照アセンブリの編集
● AIWolfLibCommon.dll
AIWolfLibClient.dll
を追加
自作 RoleAssignPlayer の作成( 1 )
● エディタのコンテキストメニューで
リファクタリング>名前の変更
Myclass を ExerciseRoleAssignPlayer に変更
自作 RoleAssignPlayer の作成( 2 )
● 基底クラスに AbstractRoleAssignPlayer を指定
→ 赤色でエラーが示される
→ コンテキストメニュー>解決
自作 RoleAssignPlayer の作成( 3 )
● 抽象メソッドの実装
コンテキストメニュー>リファクタリング
挿入場所を選んで Enter
自作 RoleAssignPlayer の作成( 4 )
● プレイヤー名を返すように Name プロパティを修正● 役職に応じたサンプルプレイヤーを使う人狼知能
エージェントの出来上がり
自作プレイヤーでゲーム実行( 1 )
● プロジェクト> ExerciseAgent のオプション
実行>カスタムコマンド>実行コマンド(ClientStarter.exeの fullpath) h localhost p 10000 c ExerciseAgent.ExerciseRoleAssignPlayer ExerciseAgent.dll SEER
作業ディレクトリを ${TargetDir}
自作プレイヤーでゲーム実行( 2 )
● クリックしてデバッグ開始
接続完了
Start Game
占い師の実装例( 1 )
● コンテキストメニュー>追加>新しいファイル
● 空のクラスを選択し
名前を
ExerciseSeerPlayer
占い師の実装例( 2 )
● 右図は基底クラスをAbstractSeer にしてリファクタリングで抽象メソッドを仮実装した状態
● これらのメソッドの意味・呼ばれるタイミングなどは Java 版のチュートリアルを参照
占い師の実装例( 3 )
Divine() の実装方針● まだ占っていない自分以外の生存プレイヤーからラ
ンダムに選択
占い師の実装例( 4 )
Vote() の実装方針● 人狼を見つけていたらその中からランダム● 人狼をまだ見つけていなければ,白(含自分)判
定以外のプレイヤーからランダム
占い師の実装例( 5 )
Talk() の実装方針● 占いで人狼を見つけたら CO● CO 後は占い結果を報告
占い師の実装例( 6 )
● 今回は Finish() には何も実装しない
● 最後に ExerciseRoleAssignPlayer のコンクトラクタで ExerciseSeerPlayer を占い師の時に使うように設定
人狼知能大会に提出する場合
● Release構成でビルド● プロジェクトフォルダー
の下のbin/Release/
フォルダーの中の
ExerciseAgent.dll
を提出
コマンドラインからの実行例
● dll ファイルを AIWolf.NET を展開したフォルダーに置くと楽