Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
東方ゲームAIの技術史
Search
ide_an
April 09, 2017
2
1k
東方ゲームAIの技術史
2017/04/08 バカゼミ発表資料(@ide_an)
ide_an
April 09, 2017
Tweet
Share
More Decks by ide_an
See All by ide_an
東方ゲームAIとその歴史
idean
0
43
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
50
7.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Building an army of robots
kneath
302
42k
Agile that works and the tools we love
rasmusluckow
327
21k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
[RailsConf 2023] Rails as a piece of cake
palkan
51
4.9k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Building Adaptive Systems
keathley
38
2.3k
How to Ace a Technical Interview
jacobian
276
23k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Thoughts on Productivity
jonyablonski
67
4.3k
Transcript
東方ゲームAIの技術史 バカゼミ 2017/04/08 @ide_an
自己紹介 • @ide_an • 某社プログラマ • 東方界隈でツール作っている • 花映塚AI自作ツールとか •
サークルチェック支援ツールとか
動機 • 文化史とか科学史とか技術史とか面白い • 東方ファンコミュニティの文化史はある程度分析されている • では技術史はどうか?語り得るのではないか? • ゲームAIなら開発時にサーベイしてたし書けるじゃろ •
なお調べ直したら知らないAIがごろごろ出てきた模様
東方とは? • (狭義には) こういうのとか • (やや狭義には) こういうの
現在までの東方ゲームAI • STG • 2009/06 永夜抄AI(sizukuisi) • 2010/04 永夜抄AI(Gandalph) •
2011/06? Touhoubot Project • 2011/12 ダブルスポイラーAI(trial-run) • 2012/04 地霊殿AI(ide_an) • 2013/11 TouhouPlayer(feinomenon) • 2014/03 紅魔郷AI(aki33524) • 2014/04 花AI塚(ide_an) • 2015/09? AI_touhou(nobu-knellfox) • 2016/02 紺珠伝AI(imenurok) • 2016/03 紅魔郷AI(td2sk) • 2016/05 紺珠伝AI(ntddk) • 2016/05 TouhouCV(Netdex) • 格闘ゲー • 2005/11 th075Booster(vjyK8Yp05c) • 2008/12 th105_ai(sweetie) • 2009/09 th123_ai(sweetie) • 2013/08 th135_ai(sweetie)
原作 STG AI 格闘ゲー AI 2002 紅魔郷 2003 妖々夢 2004
萃夢想、永夜抄 2005 花映塚、文花帖 th075Booster(vjyK8Yp05c) 2006 2007 風神録 2008 緋想天、地霊殿 th105_ai(sweetie) 2009 星蓮船、非想天則 永夜抄AI(sizukuisi) th123_ai(sweetie) 2010 ダブルスポイラー、妖精大戦争 永夜抄AI(Gandalph) 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) ※赤字は格闘ゲー
ゲームAIの分類軸 • 2つの分類軸がある • ルールベース or 学習ベース • 固定あるいはスクリプトで記述したルールに従って動く •
ステートマシン、スクリプトなど • プレイデータを食って、いい感じの動作を獲得する • ニューラルネットワーク、強化学習、遺伝的アルゴリズムなど • ゲーム状態の取得方法 • ゲームの内部状態(メモリ)に直接アクセスする • 正確な情報が手に入るが、汎用性が低い。あとなんかズルい • ゲーム画面を画像処理して取得する • 汎用性が高いが、パフォーマンスと精度がネック 人間と同じ土俵じゃない・・・
原作 STG AI 格闘ゲー AI 2002 紅魔郷 2003 妖々夢 2004
萃夢想、永夜抄 2005 花映塚、文花帖 th075Booster(vjyK8Yp05c) 2006 2007 風神録 2008 緋想天、地霊殿 th105_ai(sweetie) 2009 星蓮船、非想天則 永夜抄AI(sizukuisi) th123_ai(sweetie) 2010 ダブルスポイラー、妖精大戦争 永夜抄AI(Gandalph) 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) ルールベース vs 学習ベース オーパーツ感ある いずれもDeepLearning + 強化学習の組み合わせ。 DQN(2013)の影響を受けている。 ライブラリはだいたいChainer。
原作 STG AI 格闘ゲー AI 2002 紅魔郷 2003 妖々夢 2004
萃夢想、永夜抄 2005 花映塚、文花帖 th075Booster(vjyK8Yp05c) 2006 2007 風神録 2008 緋想天、地霊殿 th105_ai(sweetie) 2009 星蓮船、非想天則 永夜抄AI(sizukuisi) th123_ai(sweetie) 2010 ダブルスポイラー、妖精大戦争 永夜抄AI(Gandalph) 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) 内部状態直アクセス vs 画像処理 画像処理にはOpenCVやPILがよく用いられる。 DeepLearningの場合、Pythonで実装することが 多いため、PILが使われやすい
ところで、気になるところありません?
原作 STG AI 格闘ゲー AI 2002 紅魔郷 2003 妖々夢 2004
萃夢想、永夜抄 2005 花映塚、文花帖 th075Booster(vjyK8Yp05c) 2006 2007 風神録 2008 緋想天、地霊殿 th105_ai(sweetie) 2009 星蓮船、非想天則 永夜抄AI(sizukuisi) th123_ai(sweetie) 2010 ダブルスポイラー、妖精大戦争 永夜抄AI(Gandalph) 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) ※赤字は格闘ゲー
原作 STG AI 格闘ゲー AI 2002 紅魔郷 2003 妖々夢 2004
萃夢想、永夜抄 2005 花映塚、文花帖 th075Booster(vjyK8Yp05c) 2006 2007 風神録 2008 緋想天、地霊殿 th105_ai(sweetie) 2009 星蓮船、非想天則 永夜抄AI(sizukuisi) th123_ai(sweetie) 2010 ダブルスポイラー、妖精大戦争 永夜抄AI(Gandalph) 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) ※赤字は格闘ゲー 空白の7年
空白の7年 • STGは紅魔郷頒布(2002)からsizukuisi氏(2009)までAIが見当たらない • 格闘ゲーは登場から1年でAIが登場している • 2つの疑問 • 本当に空白か? •
なぜ「空白」か?
本当に空白か? • AI作成に必要な技術を持っている人間はいたはず • 格闘ゲーAIと必要な技術は変わらない • ツール作成者はぼちぼちいた • AIを作れる人が居たなら作られているはず •
まぁ、そういうものでしょう • 2009年以前にもAI作成の試みがあったと想像される
なぜ「空白」か? • ニーズが弱かった • AIが作られても公開され、広まるに至らない • 一人プレイSTGだとAI製作者がAIのプレイを見てニヤニヤするだけで終わりがち・・・ • 格闘ゲーでは対戦相手としてのAIニーズがあった •
花映塚にもありそうだが・・・(後述) • 東方ファンコミュニティの規模が(現在と比較すると)小さかった • ニコ動によるコミュニティ拡大が2007~2008の間に起きている • コミュニティが大きくなりAIを作る人が増えると、ニーズが弱くてもあえて公開 する人が現れるのではないか?
花映塚AIはなぜ生まれなかったか? • 花映塚は対戦型STG • 格闘ゲーと同様に対戦相手としてのAIニーズがあるのでは? • ネット対戦対応をめぐる状況の違い • 萃夢想ではAI登場(2005/11)→ネット対戦対応(2005/12) •
花映塚では2005/10にネット対戦対応が行われている • 萃夢想AI登場より早い • 対戦相手としてのニーズはネット対戦が先に制していた
まとめ • 東方AIをめぐる歴史は意外と厚い • 大まかな技術トレンドが見れるレベルの蓄積がある • 狭いコミュニティでも、技術をめぐる社会現象を観測できる • ニーズを満たす技術があると、同じニーズを満たす技術は現れにくい •
コミュニティの規模によって、↑の状況は変わりうる TASコミュニティや東方以外のコミュニティの関係とかも知りたいんですが、どこ探せばいいですかね・・・ あと2007~のコミュニティの変化は構造の変化も起きていて、その影響もある気がするのですがどうなんですかね・・・
Appendix: 格闘ゲーAI • th075Booster (vjyK8Yp05c) • http://wiki.mizuumi.net/w/Immaterial_and_Missing_Power/th075booster • 開発者回顧録 https://www26.atwiki.jp/th075c/pages/20.html
• Archive http://web.archive.org/web/20090122055540/http://www.crystal.rm.st/njm4559/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氏および緋行跡のsakra_yukikaze氏とは別人。 • http://jbbs.shitaraba.net/bbs/read_archive.cgi/game/44334/1211630896/#627
Appendix: STG AI( - 2013) • 永夜抄AI (sizukuisi) • http://www.nicovideo.jp/watch/sm7270634
• 永夜抄AI (Gandalph) • https://www.youtube.com/watch?v=4wKmtWpcHnA • ダブルスポイラーAI (trial-run) • http://trial-run.net/archives/2235 • Touhoubot Project (Adepht and Tsar Ioann XIII) • http://thbot.kt15.ru/ • 地霊殿AI (ide_an) • http://www.usamimi.info/~ide/programe/touhouai/ • TouhouPlayer (feinomenon) • https://github.com/feinomenon/TouhouPlayer
Appendix: STG AI(2014 - ) • 紅魔郷AI (aki33524) • https://www.slideshare.net/aki33524/ai-32089294
• プレイ動画 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
Appendix: ネット対戦関連 • 萃夢想におけるネット対戦 • 2005/11 th075_net (AVC)が初出 • https://www.logsoku.com/r/2ch.net/download/1134810788/#135
• 2006/02にth075Caster (vjyK8Yp05c)が登場。こちらが主流に • http://jbbs.shitaraba.net/bbs/read_archive.cgi/computer/6306/1133436189/#980 • 2009/12にth075Caster派生のrollCaster(mauve)が登場。現在の主流 • http://wiki.mizuumi.net/w/Immaterial_and_Missing_Power/Rollcaster • 花映塚におけるネット対戦 • 2005/10 花映塚ver 1.50aでネット対戦対応 • 2007/05 Adonisの前身となる通信高速化パッチが登場 • http://jbbs.shitaraba.net/bbs/read_archive.cgi/computer/6306/1176031607/#31 • 2007/07 Adonis (swmpLV/75E)が登場。以降はこちらが主流 • http://jbbs.shitaraba.net/bbs/read_archive.cgi/computer/6306/1176031607/#641