Upgrade to Pro — share decks privately, control downloads, hide ads and more …

東方ゲームAIとその歴史

ide_an
March 17, 2023

 東方ゲームAIとその歴史

2018/01/20 第三回東方発表会で発表したもの。
https://www.slideshare.net/ide_an/ai-86452530 の再アップロードです。

スライド中の動画 https://www.youtube.com/watch?v=tufZQTRX_WQ
関連モーメント https://twitter.com/i/events/1201866044068880387

ide_an

March 17, 2023
Tweet

More Decks by ide_an

Other Decks in Technology

Transcript

  1. 自己紹介 • HN: ide_an (いで) • Twitter: @ide_an • Mastodon:

    [email protected] • 某社プログラマ • 東方界隈でツールを作ってます • 花映塚AI自作ツール 「花AI塚」 • http://usamimi.info/~ide/programe/touhouai/ • サークルチェックツール 「trivial-circlecheck」 • http://trivial-circlecheck.herokuapp.com/ • ダブルスポイラー リプレイずれ修正パッチ 「hanakopatch」 • https://bitbucket.org/ide_an/hanakopatch/src/
  2. 「ゲーム状態の認識」のアプローチ • 画像処理 • ゲーム画面から自機や弾などを 認識する • 内部情報へのアクセス • ゲームプログラムのメモリから自

    機や弾などの情報を取り出す 例:画面から 弾っぽいやつ抽出 弾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 … 例:メモリから 弾情報抽出
  3. 「次の行動の選択」のアプローチ • ルールベース • ゲームプレイでの思考を考察して、 アルゴリズムに落とし込む • 例:「弾が少ないところに移動する」、 「被弾しそうならボムる」 •

    機械学習 • ゲームプレイのデータから 行動ポリシーを学習する • リプレイを正解として学習 (教師あり学習) • AI自身がゲームをプレイして学習 (強化学習)
  4. なぜ東方ゲームAIを作るのか? • 楽しい!!! • せやな。 • 良き対戦相手が欲しい • デフォルトCPUでは合わない •

    強すぎる、弱すぎる、人間のプレイとの乖離 • オフライン対戦は手軽じゃない • 相手がいないなら「作れば」いいじゃない
  5. 凡例とおことわり • 凡例 • 画: 画像処理 • 内: 内部情報へのアクセス •

    ル: ルールベース • 学: 機械学習 • ツ: AI作成ツール • おことわり • AI作成ツールで作成した個々のAIは記載していません • そもそも追跡できてない
  6. 原作 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作成ツール
  7. 原作 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
  8. ~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) 内ルツ
  9. なぜSTG AIが生まれなかったか? • A. STGは対戦ゲームじゃないから • 対戦ゲームではAIのニーズが強い • 「良き対戦相手が欲しい」というニーズがある •

    AIと戦う、AI同士で戦わせるなど、AIの楽しみ方が多様 • 一人プレイのSTGではAIのニーズが弱い • AIのプレイを眺める以外に、AIの楽しみ方がない • (花映塚は対戦ゲーじゃんと思った人はあとで質問してください)
  10. 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.) 画ル
  11. 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) 画ル
  12. 2016~ Deep Learning • 2016年にDeep Learningを使ったAIが相次いで登場 • 紺珠伝AI • 作者:

    imenurok 氏 • Qiitaで公開 • 紺珠伝AI • 作者: ntddk 氏 • 同人誌で発表 • いずれも、画像処理 + 機械学習の組み合わせで実現している • STG AIにも機械学習の時代が来た 原作 STG AI 黄昏フロ作品 AI 2016 紺珠伝AI (imenurok) 画学 紅魔郷AI (td2sk) 画学 紺珠伝AI( ntddk) 画学 TouhouCV (Netdex) 画ル 2017 天、憑 Twinject (Netdex) 内ル
  13. DQN (Deep Q-Network) • 先述のAIはいずれもDQNを採用 • DQN = 強化学習 +

    Deep Learning • 入力はゲーム画面のスクリーンショット • 行動ポリシーだけでなく、画像をどうやって 認識するかも学習する • Deep Learningは画像認識で特に成功している • 2015年にDQNのゲームAIデモがバズったのが背景 • https://wired.jp/2015/02/28/google-deepmind-atari/ ゲーム状態の認識 次の行動の選択 ゲーム操作の入力 両方まとめて 学習 スクショそのまま 突っ込む
  14. 花映塚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氏、ネット 対戦パッチ) 公開
  15. 「ゲーム状態の認識」のアプローチ比較 • 画像処理 • メリット • 人間のプレイと同じ条件 • 作品をまたいで適用できる汎用性 •

    デメリット • 認識誤差が生じる • 処理時間がネック • 認識精度と処理時間のトレードオフ • 画像処理の知識が必要 • 内部情報へのアクセス • メリット • 情報が正確 • 高速 • デメリット • 対象ゲームごとに解析が必要 • 同じゲームでもバージョンアップの 度に解析と修正が必要 • 人間と同じ土俵じゃないズルさ • リバースエンジニアリングの知識が 必要
  16. 「次の行動の選択」のアプローチ比較 • ルールベース • メリット • ホワイトボックスである • 不具合の原因を特定しやすい •

    デメリット • 人間離れしがち • 花映塚CPUの「電動歯ブラシ」 • うまく言い表せない行動ポリシーは ルールベースに落とし込めない • 無意識にうまくやっていること • 機械学習 • メリット • うまく言い表せない行動ポリシーも 獲得できる(理想的には) • デメリット • ブラックボックスである • 「なぜ」が分からない • 学習のためのデータや環境の準備 が困難 • Deep LearningだとGPU必須
  17. 東方格闘ゲーAI • th075Booster (yK8Yp05c) • http://wiki.mizuumi.net/w/Immaterial_and_Missing_Power/th075booster • 初出 http://jbbs.shitaraba.net/bbs/read_archive.cgi/computer/6306/1127170527/#717 •

    開発者回顧録 https://www26.atwiki.jp/th075c/pages/20.html • Archive http://web.archive.org/web/20090122055540/http://www.crystal.rm.st/njm4559/r_board/r_boa rd.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
  18. 東方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://thbot.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