Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
東方ゲームAIとその歴史
2018/01/20 第3回東方発表会
@ide_an
自己紹介
• HN: ide_an (いで)
• Twitter: @ide_an
• Mastodon: ide_an@gensokyo.town
• 某社プログラマ
• 東方界隈でツールを作ってます
• 花映塚AI自作ツール 「花AI塚」
• http://usamimi.info/~ide/programe/touhouai/
• サークルチェックツール 「trivial-circlecheck」
• http://trivial-circlecheck.herokuapp.com/
• ダブルスポイラー リプレイずれ修正パッチ 「hanakopatch」
• https://bitbucket.org/ide_an/hanakopatch/src/
今回の主張
•東方ゲームAIというものがある!
•しかも結構ある!!!
東方ゲームAIとは?
東方ゲームAIとは?
• 東方のゲーム作品を対象としたゲームAI
• 紅魔郷や文花帖などのSTG
• 萃夢想や緋想天などの格闘ゲー
• 今回の発表ではデフォルトCPUは対象外(花映塚など)
• 実際に見た方が早い
• デモ動画(拙作の地霊殿AI)
• https://www.youtube.com/watch?v=tufZQTRX_WQ
ゲームAIの仕組み
・・・の前に、
まずは人間のゲームプレイを考えてみる
人間のゲームプレイ
ゲーム状態の認識
次の行動の選択
ゲーム操作の入力
ゲーム状態の更新
自機はどこ?
敵弾は?
自機狙いだな
右にちょん避け
しよう
自機位置、
敵、弾、
etc…
右に低速移動
ゲームAIの仕組み
ゲーム状態の認識
次の行動の選択
ゲーム操作の入力
ゲーム状態の更新
いい感じに弾の位
置などを認識する
いい感じに移動
経路などを考える
キー入力を
シミュレート
プレイの各フェーズを
プログラムで実現する
ゲームAIの仕組み
ゲーム状態の認識
次の行動の選択
ゲーム操作の入力
ゲーム状態の更新
いい感じに弾の
位置などを認識する
いい感じに移
動経路などを考える
キー入力をシ
ミュレート
ゲームAIの仕組み
ゲーム状態の認識
次の行動の選択
ゲーム操作の入力
ゲーム状態の更新
いい感じに弾の位
置などを認識する
いい感じに移動
経路などを考える
キー入力を
シミュレート
「ゲーム状態の認識」のアプローチ
• 画像処理
• ゲーム画面から自機や
弾などを認識する
• 内部情報へのアクセス
• ゲームプログラムの
メモリから自機や弾な
どの情報を取り出す
例:画面から
弾っぽいやつ抽出 弾1: x=100,y=200,r=128
弾2: x=120,y=250,r=128
弾3: x=140,y=300,r=128
弾4: x=160,y=250,r=128
…
例:メモリから
弾情報抽出
ゲームAIの仕組み
ゲーム状態の認識
次の行動の選択
ゲーム操作の入力
ゲーム状態の更新
いい感じに弾の位
置などを認識する
いい感じに移動
経路などを考える
キー入力を
シミュレート
画像処理
内部情報へのアクセス
「次の行動の選択」のアプローチ
• ルールベース
• ゲームプレイでの思考
を考察して、アルゴリズ
ムに落とし込む
• 例:「弾が少ないところ
に移動する」、
「被弾しそうならボムる」
• 機械学習
• ゲームプレイのデータ
から行動ポリシーを学
習する
• リプレイを正解として学
習 (教師あり学習)
• AI自身がゲームをプレ
イして学習 (強化学習)
ゲームAIの仕組み
ゲーム状態の認識
次の行動の選択
ゲーム操作の入力
ゲーム状態の更新
いい感じに弾の位
置などを認識する
いい感じに移動
経路などを考える
キー入力を
シミュレート
画像処理
内部情報へのアクセス
ルールベース
機械学習
なぜ東方ゲームAIを作るのか?
• 楽しい!!!
• せやな。
• 良き対戦相手が欲しい
• デフォルトCPUでは合わない
• 強すぎる、弱すぎる、人間のプレイとの乖離
• オフライン対戦は手軽じゃない
• 相手がいないなら「作れば」いいじゃない
東方ゲームAIの歴史
凡例とおことわり
• 凡例
• 画: 画像処理
• 内: 内部情報へのアクセス
• ル: ルールベース
• 学: 機械学習
• ツ: AI作成ツール
• おことわり
• AI作成ツールで作成した個々のAIは記載していません
• そもそも追跡できてない
原作 STG AI 黄昏フロ作品 AI
2002 紅魔郷
2003 妖々夢
2004 萃夢想、永夜抄
2005 花映塚、文花帖 th075Booster (yK8Yp05c) 内学ツ
2006
2007 風神録
2008 緋想天、地霊殿 th105_ai (sweetie) 内ルツ
2009 星蓮船、非想天則 永夜抄AI (sizukuisi) 内ル th123_ai (sweetie) 内ルツ
2010 ダブルスポイラー、
妖精大戦争
永夜抄AI (Gandalph) 画ル
花映塚AI (K.Sakai et al.) 画ル
2011 神霊廟 Touhoubot Project 内ル
ダブルスポイラーAI (trial-run) 画ル
2012 地霊殿AI (ide_an) 内ル
2013 心綺楼、輝針城 TouhouPlayer (feinomenon) 画ル th135_ai (sweetie) 内ルツ
2014 弾幕アマノジャク 紅魔郷AI (aki33524) 内ル
花AI塚 (ide_an) 内ルツ
2015 深秘録、紺珠伝 AI_touhou (nobu-knellfox) 画ル
2016 紺珠伝AI (imenurok) 画学
紅魔郷AI (td2sk) 画学
紺珠伝AI( ntddk) 画学
TouhouCV (Netdex) 画ル
2017 天空璋、憑依華 Twinject (Netdex) 内ル
画: 画像処理、 内: 内部情報へのアクセス、 ル: ルールベース、 学: 機械学習、 ツ: AI作成ツール
原作 STG AI 黄昏フロ作品 AI
2002 紅魔郷
2003 妖々夢
2004 萃夢想、永夜抄
2005 花映塚、文花帖 th075Booster (yK8Yp05c) 内学ツ
2006
2007 風神録
2008 緋想天、地霊殿 th105_ai (sweetie) 内ルツ
2009 星蓮船、非想天則 永夜抄AI (sizukuisi) 内ル th123_ai (sweetie) 内ルツ
2010 ダブルスポイラー、
妖精大戦争
永夜抄AI (Gandalph) 画ル
花映塚AI (K.Sakai et al.) 画ル
2011 神霊廟 Touhoubot Project 内ル
ダブルスポイラーAI (trial-run) 画ル
2012 地霊殿AI (ide_an) 内ル
2013 心綺楼、輝針城 TouhouPlayer (feinomenon) 画ル th135_ai (sweetie) 内ルツ
2014 弾幕アマノジャク 紅魔郷AI (aki33524) 内ル
花AI塚 (ide_an) 内ルツ
2015 深秘録、紺珠伝 AI_touhou (nobu-knellfox) 画ル
2016 紺珠伝AI (imenurok) 画学
紅魔郷AI (td2sk) 画学
紺珠伝AI( ntddk) 画学
TouhouCV (Netdex) 画ル
2017 天空璋、憑依華 Twinject (Netdex) 内ル
画: 画像処理、 内: 内部情報へのアクセス、 ル: ルールベース、 学: 機械学習、 ツ: AI作成ツール
~2008 STG AI 登場以前
2009~2010 STG AI 登場
2010~2015 知見の公開化
2016~ Deep Learning
~2008 STG AI登場以前
• 東方ゲームAIは、まず黄昏フロ作品で登場
• th075Booster
• 萃夢想AI作成ツール
• 作者: yK8Yp05c 氏
• 萃夢想ネット対戦パッチ作者でもある
• 確認できる限り最初の東方ゲームAI
• リプレイから学習する
• 次に学習型AIが登場したのは2016年
• オーパーツ
• th105_ai
• 緋想天AI作成ツール
• 作者: sweetie 氏
• 非想天則、心綺楼AIツールも作っている
• スクリプトで自由にルールを組める
原作 STG
AI
黄昏フロ作品 AI
2002 紅
2003 妖
2004 萃、永
2005 花、文 th075Booster (yK8Yp05c) 内学ツ
2006
2007 風
2008 緋、地 th105_ai (sweetie) 内ルツ
なぜSTG AIが生まれなかったか?
• A. STGは対戦ゲームじゃないから
• 対戦ゲームではAIのニーズが強い
• 「良き対戦相手が欲しい」というニーズがある
• AIと戦う、AI同士で戦わせるなど、AIの楽しみ方が多様
• 一人プレイのSTGではAIのニーズが弱い
• AIのプレイを眺める以外に、AIの楽しみ方がない
• (花映塚は対戦ゲーじゃんと思った人はあとで質問し
てください)
2009~2010 STG AI登場
• 動画サイトを中心にSTG AIが現れる
• 永夜抄AI
• 作者: sizukuisi 氏
• ニコニコ動画上で公開
• 永夜抄Lunaクリアを達成
• 永夜抄AI
• 作者: Gandalph 氏
• Youtube上で公開
• 最初の画像処理ベースAI
• 弾の認識がうまくいってない?
• STG AIが登場してきたが、動画のみで細かい仕組みが分
からなかった
原作 STG AI 黄昏フロ作品 AI
2009 星、非 永夜抄AI (sizukuisi) 内ル th123_ai (sweetie) 内ルツ
2010 DS、
妖大
永夜抄AI (Gandalph) 画ル
花映塚AI (K.Sakai et al.) 画ル
2010~2015 知見の公開化
• STG AIの知見が同人誌やスライドなどでまとめられ始める
• 花映塚AI (K. Sakai et al.)
• ICAI2010 論文
• ダブルスポイラーAI (trial-run)
• 同人誌
• 僕がAIを作り始めたきっかけの本
• 地霊殿AI (ide_an)
• Webに記事公開
• 紅魔郷AI (aki33524)
• IT系勉強会で発表 + ニコ動で公開
• 紅魔郷Exノーショットノーミスクリア
• 花AI塚 (ide_an)
• 記事公開
• AI作成ツール公開
原作 STG AI 黄昏フロ作品 AI
2010 DS、
妖大
永夜抄AI (Gandalph) 画ル
花映塚AI (K.Sakai et al.) 画ル
2011 神 Touhoubot Project 内ル
ダブルスポイラーAI
(trial-run) 画ル
2012 地霊殿AI (ide_an) 内ル
2013 心、
輝
TouhouPlayer
(feinomenon) 画ル
th135_ai
(sweetie) 内ルツ
2014 弾ア
マ
紅魔郷AI (aki33524) 内ル
花AI塚 (ide_an) 内ルツ
2015 深、
紺
AI_touhou
(nobu-knellfox) 画ル
2016~ Deep Learning
• 2016年にDeep Learningを使ったAIが相次いで登場
• 紺珠伝AI
• 作者: imenurok 氏
• Qiitaで公開
• 紺珠伝AI
• 作者: ntddk 氏
• 同人誌で発表
• いずれも、画像処理 + 機械学習の組み合わせ
• STG AIにも機械学習の時代が来た 萃夢想AIから11年・・・
原作 STG AI 黄昏フロ作品 AI
2016 紺珠伝AI (imenurok) 画学
紅魔郷AI (td2sk) 画学
紺珠伝AI( ntddk) 画学
TouhouCV (Netdex) 画ル
2017 天、憑 Twinject (Netdex) 内ル
DQN (Deep Q-Network)
• 先述のAIはいずれもDQNを採用
• DQN = 強化学習 + Deep Learning
• 行動ポリシーだけでなく、
ゲーム画面をどう認識するかも学習する
• どうやって弾の位置を認識するかなども
勝手に学習してくれる
• 2015年にDQNのゲームAIデモが話題になったのが背景
• https://wired.jp/2015/02/28/google-deepmind-atari/
ゲーム状態の認識
次の行動の選択
ゲーム操作の入力
両方まとめて
学習
スクショそのまま
突っ込む
まとめ
• 東方ゲーム作品を対象としたゲームAIが有志によって
作られている
• STG AIは2009年以降、毎年作られている
• ここ最近は画像処理 + 機械学習のアプローチが現れ
ている
• より人間に近いAIが出てくるかも?
• こういう歴史をまとめてみるのも面白いよね
Reference / Appendix
会場で読ませる気がない細かさなので、あとで読んでくだしあ
花映塚AIはなぜ生まれなかった?
A. ネット対戦に先を越されたから
• ネット対戦はAIとシェアを奪い合
う
• ネット対戦も「良き対戦相手が欲し
い」のソリューション
• 萃夢想AIの登場は・・・
• 萃夢想ネット対戦パッチより前
• 花映塚ネット対戦対応より後
• もし萃夢想AIが2ヶ月早かったら、
花映塚AIも生まれていたかも?
花映塚関連 萃夢想関連
2004/12 萃夢想 ver 1.00
2005/8 花映塚 ver 1.00
2005/10 花映塚 ver 1.50で
ネット対戦対応
2005/11 th075Booster
(萃夢想AI)公開
2005/12 th075_net (AVC氏、
ネット対戦パッチ) 公開
2006/2 th075Caster (yK8Yp05c
氏、ネット対戦パッチ)
公開
「ゲーム状態の認識」のアプローチ比較
• 画像処理
• メリット
• 人間のプレイと同じ条
件
• 作品をまたいで適用で
きる汎用性
• デメリット
• 認識誤差が生じる
• 処理時間がネック
• 認識精度と処理時間
のトレードオフ
• 画像処理の知識が必要
• 内部情報へのアクセス
• メリット
• 情報が正確
• 高速
• デメリット
• 対象ゲームごとに解析
が必要
• 同じゲームでもバー
ジョンアップの度に解
析と修正が必要
• 人間と同じ土俵じゃない
ズルさ
• リバースエンジニアリン
グの知識が必要
「次の行動の選択」のアプローチ比較
• ルールベース
• メリット
• ホワイトボックスである
• 不具合の原因を特定
しやすい
• デメリット
• 人間離れしがち
• 花映塚CPUの「電動歯
ブラシ」
• うまく言い表せない行動
ポリシーはルールベー
スに落とし込めない
• 無意識にうまくやって
いること
• 機械学習
• メリット
• うまく言い表せない行動
ポリシーも獲得できる
(理想的には)
• デメリット
• ブラックボックスである
• 「なぜ」が分からない
• 学習のためのデータや
環境の準備が困難
• Deep Learningだと
GPU必須
東方格闘ゲーAI
• th075Booster (yK8Yp05c)
• http://wiki.mizuumi.net/w/Immaterial_and_Missing_Power/th075booster
• 初出
http://jbbs.shitaraba.net/bbs/read_archive.cgi/computer/6306/1127170527/#7
17
• 開発者回顧録 https://www26.atwiki.jp/th075c/pages/20.html
• Archive
http://web.archive.org/web/20090122055540/http://www.crystal.rm.st/njm45
59/r_board/r_board.cgi
• 現在はrollCaster (mauve)に組み込まれている
• th105_ai(のちにth123_ai) (sweetie)
• http://resemblances.click3.org/product_list/index.cgi/detail/52
• th135_ai (sweetie)
• http://resemblances.click3.org/product_list/index.cgi/detail/54
• 機械学習で緋想天AI構想 (作者不明)
• その後実現したのかは不明。sweetie氏とは別人。
• http://jbbs.shitaraba.net/bbs/read_archive.cgi/game/44334/1211630896/#627
東方STG AI
• 永夜抄AI (sizukuisi)
• http://www.nicovideo.jp/watch/sm7270634
• 永夜抄AI (Gandalph)
• https://www.youtube.com/watch?v=4wKmtWpcHnA
• 花映塚AI (K. Sakai et al.)
• Sakai, Kazuhiko & Okada, Yoshihiro & Muraoka, Yoichi.
(2010). Developing AI for Playing Shooter Games - Touhou
Kaeizuka.. Proceedings of the 2010 International
Conference on Artificial Intelligence, ICAI 2010. 2. 748-752.
• 国会図書館関西館にproceedings収蔵
• ダブルスポイラーAI (trial-run)
• http://trial-run.net/archives/2235
• TouhoubotProject (Adephtand Tsar IoannXIII)
• https://web.archive.org/web/20160812123435/http://th
bot.kt15.ru/
• プレイ動画 https://www.youtube.com/watch?v=6xWvr-
TAR1w
• 地霊殿AI (ide_an)
• http://usamimi.info/~ide/programe/touhouai/
• TouhouPlayer (feinomenon)
• https://github.com/feinomenon/TouhouPlayer
• 紅魔郷AI (aki33524)
• http://www.kernelvm.org/ima-made-no-matome/kaneru-
vm-tan-jian-dui-guan-xi-6hui-mu
• https://www.dropbox.com/s/hy0tvgocxourltw/%E6%9D%
B1%E6%96%B9AI.pdf?dl=0
• プレイ動画
http://www.nicovideo.jp/watch/sm23043946
• 花AI塚 (ide_an)
• http://www.usamimi.info/~ide/programe/touhouai/
• AI_touhou (nobu-knellfox)
• https://github.com/nobu-knellfox/AI_touhou
• 紺珠伝AI (imenurok)
• http://qiita.com/imenurok/items/c6aa868107091cfa509c
• 紅魔郷AI (td2sk)
• http://www.nicovideo.jp/watch/sm28442889
• 紺珠伝AI (ntddk)
• https://ntddk.booth.pm/items/245254
• プレイ動画
https://www.youtube.com/watch?v=KcnvVepob2o
• TouhouCV (Netdex)
• https://github.com/Netdex/TouhouCV
• Twinject (Netdex)
• https://github.com/Netdex/twinject

More Related Content

東方ゲームAIとその歴史

Editor's Notes

  1. 紅魔郷や永夜抄、黄昏フロ作品である萃夢想や緋想天などが対象 収集にとりなど二次創作は対象外 実際の動画が欲しい
  2. 行動選択のアプローチにはルールベースと機械学習の2つがある。 ルールベースは、プログラマがゲームプレイのときに考えていることをコードに落とし込むというもの。 たとえば「弾が少ないところに移動する」「被弾しそうならボムる」など普段のプレイで考えるので、それをコード化する。 機械学習はゲームプレイのデータから行動選択のポリシーをゲームAI自身に自動的に獲得させるというもの。 プログラマ自身が考えるのではなく、ゲームAIに学習してもらうというのが違い。
  3. 2005年に萃夢想AIが登場したのが最初。 STG AIは2009年になってやっと登場。 2009年以降は毎年誰かしらSTG AIを作っている 技術的な傾向で言うと、ゲーム状態の取得方法は画像処理と内部情報アクセスが拮抗している。 行動選択ポリシーの方はルールベースが多いが、最近になって機械学習も出てきた。