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
Data-centric AI入門第6章:Data-centric AIの実践例
x_ttyszk
1
410
エンジニアが加速させるプロダクトディスカバリー 〜最速で価値ある機能を見つける方法〜 / product discovery accelerated by engineers
rince
4
380
7日間でハッキングをはじめる本をはじめてみませんか?_ITエンジニア本大賞2025
nomizone
2
1.9k
株式会社EventHub・エンジニア採用資料
eventhub
0
4.3k
データ資産をシームレスに伝達するためのイベント駆動型アーキテクチャ
kakehashi
PRO
2
550
開発組織のための セキュアコーディング研修の始め方
flatt_security
3
2.4k
The Future of SEO: The Impact of AI on Search
badams
0
200
エンジニアのためのドキュメント力基礎講座〜構造化思考から始めよう〜(2025/02/15jbug広島#15発表資料)
yasuoyasuo
18
6.9k
全文検索+セマンティックランカー+LLMの自然文検索サ−ビスで得られた知見
segavvy
2
110
Building Products in the LLM Era
ymatsuwitter
10
5.5k
偶然 × 行動で人生の可能性を広げよう / Serendipity × Action: Discover Your Possibilities
ar_tama
1
1.1k
Swiftの “private” を テストする / Testing Swift "private"
yutailang0119
0
130
Featured
See All Featured
A Philosophy of Restraint
colly
203
16k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
Writing Fast Ruby
sferik
628
61k
Rails Girls Zürich Keynote
gr2m
94
13k
GraphQLとの向き合い方2022年版
quramy
44
13k
What's in a price? How to price your products and services
michaelherold
244
12k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
A better future with KSS
kneath
238
17k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
How GitHub (no longer) Works
holman
314
140k
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スクリプト+レベルデザインの仕事してたとき 登場するマップ、シーン側の構造やアイテムなどの配置に合わせた敵の配置 プレイヤーが「やってみたくなる倒し方」「タイミングよく爽快感がでる倒し方」の準備ができ るようにマップ構造に合わせて敵の配置 ボスキャラの場合倒した後のムービーにつながるような倒し方ができるように マップや、その時持っている武器、またはやっているだろう戦い方を考慮して誘導できるよ うなビヘイビアツリーの調整と評価パラメーターの調整 ・キャラのイメージや設定に合わせた先読みの深さ、予測の範囲のパラメータ調整