昨今のAIブームによりゲームAIの情報も得やすくなってきましたが、プレイヤーを追うといった入門書にあるような簡単なロジックを組めるようになった後、実際の製品で使われているようなもう少し高度な技術に挑戦しようとしたときに参考になるソースコードがなくて困っている人も多いのではないでしょうか。
そこで、初級者から中級者へのステップアップに役立つオープンソースのソフトウェアを集めてみました。名前の右についている★は難易度を表しています。なお、難易度は「ソースコードを読んで中身を理解する」という点でつけています。
このページの内容は随時更新します。
意思決定
Behavior Tree Starter Kit ★
最近のゲームAIの意思決定ではデファクトスタンダードになってきているビヘイビアツリーの簡易実装です。ゲームAIの技術に関する書籍である Game AI Pro に掲載されているビヘイビアツリーの解説記事向けに作成されました。記事は無料で公開されています。(英語)
http://www.gameaipro.com/GameAIPro/GameAIPro_Chapter06_The_Behavior_Tree_Starter_Kit.pdf
lua_planner ★
AI自身に戦略や行動計画を立てさせる自動計画の技術の一種であるSTRIPS(GOAP)とHTNプランニングの簡易実装です。アカウントを見ていただければわかりますが、これは私が作ったものです。手前味噌ですみません(汗)
ナビゲーション
Recast ★★★
海外のAAAタイトルでも使用されている超メジャーなナビゲーションメッシュのライブラリです。どこの開発スタジオでもこのライブラリをベースに独自に拡張したライブラリを社内に持っていることが多いです。ちなみに、UE4やUnityもエンジン内部ではナビメッシュの生成やパス検索等にこれを使用しています。事前知識なしにいきなりソースコードを読んでもちんぷんかんぷんになるので、ゲームエンジンで触ってみるなど知識を入れてから読むことをお勧めします。
ORCA ★★
エージェントがほかのエージェントなどの動的障害物を避けるように制御する衝突回避アルゴリズムの一種です。元論文と一緒に読むと理解が進みます。
全般(ゲームエンジン)
ロイヤリティの支払いが必要だったりするので厳密にはオープンソースとは言えないですが、無料でソースコードを閲覧でき、個々のAI技術やAI以外の要素をどのように連携させればいいかの勉強に役立ちます。
Unreal Engine 4 ★★★
https://github.com/EpicGames/UnrealEngine
ソースコードを取得するには登録(無料)が必要です。
言わずと知れた超有名な商用ゲームエンジンです。AIの機能に関しては潤沢というわけではありませんが、必要最低限のものは揃っている感じです。ただ、業界標準から少し外れたカスタマイズや設計が入っている箇所があったりするのでそこだけは要注意。
- BehaviorTree
- NavigationSystem (NavMesh, Path Following, Collision Avoidance, Crowd, Flow Field, etc...)
- AIPerception
- Environment Query System (EQS)
- AITask
- GenericTeamId
- Gameplay Debugger
- HTN Planner (Plugin, 4.20時点では初期実装レベルで実際に使用するには機能不足)
CRYENGINE / Lumberyard ★★★
CRYENGINE : https://github.com/CRYTEK/CRYENGINE
Lumberyard : https://github.com/aws/lumberyard
昔から最先端の技術をいち早く取り入れて成長してきたゲームエンジンです。AIに関しても商用ゲームエンジンの中では一歩先を行ってます。でも最近はあまり元気がない印象。ゲームエンジン全体での先進性を考えるとCRYENGINEがベースになっているLumberyardを見たほうがいいかも。
- Modular Behavior Tree
- Multi-Layer Navigation Mesh
- Movement System
- Sensory System
- Tactical Point System (TPS), Universal Query System (UQS)
- Smart Objects
- Factions
- AI Communication
- AI Bubbles System
- Procedural Animation
- Motion Warping