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の開発やってた時 敵AIを作るとき考えてた事
Search
IZUN∀
May 26, 2019
Technology
3
1.9k
ゲームAIの開発やってた時 敵AIを作るとき考えてた事
ZUN∀がコンシューマゲーム開発時代とソシャゲ開発時代に学んだ
開発に関する諸先輩から教わった知識や
開発中に見つけた知見を出せるレベルにしたものです。
IZUN∀
May 26, 2019
Tweet
Share
Other Decks in Technology
See All in Technology
Go の analysis パッケージで自作するリファクタリングツール
kworkdev
PRO
1
410
ClineにNext.jsのプロジェクト改善をお願いしてみた / 20250321_reacttokyo_LT
optim
1
1.3k
AWS のポリシー言語 Cedar を活用した高速かつスケーラブルな認可技術の探求 #phperkaigi / PHPerKaigi 2025
ytaka23
7
1.5k
30代エンジニアが考える、エンジニア生存戦略~~セキュリティを添えて~~
masakiokuda
4
2k
Symfony in 2025: Scaling to 0
fabpot
2
170
ペアプログラミングにQAが加わった!職能を超えたモブプログラミングの事例と学び
tonionagauzzi
1
140
お問い合わせ対応の改善取り組みとその進め方
masartz
1
350
AIエージェント完全に理解した
segavvy
4
260
バックエンドエンジニアによるフロントエンドテスト拡充の具体的手法
kinosuke01
1
670
パスキー導入の課題と ベストプラクティス、今後の展望
ritou
7
1.2k
Engineering Managementのグローバルトレンド #emoasis / Engineering Management Global Trend
kyonmm
PRO
6
980
Proxmox VE超入門 〜 無料で作れるご自宅仮想化プラットフォームブックマークする
devops_vtj
0
120
Featured
See All Featured
Code Review Best Practice
trishagee
67
18k
Navigating Team Friction
lara
184
15k
KATA
mclloyd
29
14k
Being A Developer After 40
akosma
90
590k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
30k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.3k
Gamification - CAS2011
davidbonilla
81
5.2k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
8
700
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
A better future with KSS
kneath
238
17k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
102
18k
Transcript
ゲームAIの開発やってた時 敵AIを作るとき教わった事 考えた事、やってきた事 気づいた事 IZUN∀
なにこれ? IZUN∀がコンシューマゲーム開発時代とソシャゲ開発時代に学んだ 開発に関する諸先輩から教わった知識や 開発中に見つけた知見を出せるレベルにしたものです。 なのでどこの現場でなどの話はありません。 今回はゲームAIで敵AIを作るときのお話です。技術的な話は少なめ どんな事考えてる面白いゲームAIを作ろうとしていたかの話です。 もっと深いことなら三宅さんの「人工知能の作り方」を読むといいかも
注意 スライドの内容は今から7~8年位前に仕事で教わったことや気づいたことです 今の環境にあっているかはわかりません。単純にメモとして公開してます プログラマだけではなくレベルデザイナー、マップイベントスクリプたとして仕事をしてき たこともあるのでそのへんも一緒に書いてます 思い出した事とか、ツッコミがあったら多分修正入ります。
必要な要素だけでは終わらない リアルさ、演技、反射、集団での行動 基本的によくある4つの要素があるが、これだけで敵AIは面白くはならない ゲームの表現が上がるとともに敵の表現も上がっていることを考える その場、その時、そしてその相手となるプレイヤーの動きから どのような役割として振る舞うと面白くなるのかまで考える必要もある モブだってドラマはあってもいいじゃない
ただ思考を作るだけがゲームAIの開発ではなかった ▪知性に関して、知能に関しての演算周りだけだと思ったらそうじゃなかった ・ビヘイビアツリーのパラメータを調整するだけじゃない ・動き、環境利用、敵としてのイメージ、などを考えてあげる ・そのキャラにとっての”自然な思考と行動”を作る (モーション、エフェクトや一部レベルデザインまで関わることがあった) ・性格とか魂とかってどう表現して面白くさせる?を考えようぜ
敵のAIを作る時に気をつけてた事 1 ・行動と外見イメージが合っているのか パッと見で”この外見だとこんな事してくるだろう”から大きく外れると 不気味になったりする ・その行動をする意味は? なぜその行動を行ったのかプレイヤーがわからない動きも不気味 無駄な動きと、全くいらない動きは違う
敵のAIを作る時に気をつけてた事 2 ・いやらしさ過ぎる状態になっていないか? 先読みのやり方や、ビヘイビアツリーのゆらぎが常に有利を取りに行ったり と言うか、いやらし過ぎると楽しくない。 ”難しいけど楽しい”には理由がある ・できることをちゃんと全部やれているのか? そのキャラが今できる事をやるやらないに関しての理由がプレイヤーから見て 不明確過ぎるのも不気味につながる
敵のAIを作る時に気をつけてた事 3 ・プレイヤーと戦っている環境は理解してるのか? 優勢、劣勢、自然環境まで含めてある程度プレイヤーが後からでも理解できる 行動じゃないことするとただのおバカに思えて来るときがある 難易度などに合わせているなら良いけど、そうじゃないところでやると 違和感になったりするからそのへんも調整しようねー イメージと合わせるてるなら良いけど、それとは別なら考えておこう
プレイヤーを楽しませる事ができるAIを目指して ・最終的に勝つのはユーザーでも簡単に勝たせるわけじゃない ・その敵キャラの役割はなんなのか? ・かっこいい負け方、面白くする負け方は何? ・敵AIを作ってるというより、actor作ってるってことを考えよう モブだろうが役者なんですよ。
敵キャラの動きを変わる時 ・戦っているのならニュートラルポジションにはならないでいるのも正しい プレイヤーとかゲーム中で命のやり取りするのになんでボーッとしてりするのさ ・”できそう”と思えているのならやらせてみたほうがいい それがキャラのイメージに合ってることもある。または許されるギャップとして 賑やかしになることもあるから実装して意見聞いたりするのは良い クイック過ぎるモーション変換でもキャラの攻撃の仕方、外見などから 問題ないことがあるから試してみるのはあり
ゲームAIプログラマだった時にやってた仕事内容 ・ビヘイビアツリーの処理の最適化、並列周り ・先読み、予測の精度の調整 ・担当キャラに適したIKの実装 ・担当キャラに適したモーション補間処理の実装 ・細かい関節の動きや予備動作系のモーションをプログラム側から実装 ・集団行動の際にどのような仲間と行動しているかをシーン内の環境に応じて最適に行動 させるように。単純に不要なツリーを呼んだりしないようにの最適化 ・性格に応じたゆらぎの対応 ・キャラが発するエフェクトやモーションの見栄えを整えたり
AIスクリプト+レベルデザインの仕事してたとき 登場するマップ、シーン側の構造やアイテムなどの配置に合わせた敵の配置 プレイヤーが「やってみたくなる倒し方」「タイミングよく爽快感がでる倒し方」の準備ができ るようにマップ構造に合わせて敵の配置 ボスキャラの場合倒した後のムービーにつながるような倒し方ができるように マップや、その時持っている武器、またはやっているだろう戦い方を考慮して誘導できるよ うなビヘイビアツリーの調整と評価パラメーターの調整 ・キャラのイメージや設定に合わせた先読みの深さ、予測の範囲のパラメータ調整