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
転生CISOサバイバル・ガイド / CISO Career Transition Survival Guide
kanny
3
1k
データ資産をシームレスに伝達するためのイベント駆動型アーキテクチャ
kakehashi
PRO
2
550
PHPで印刷所に入稿できる名札データを作る / Generating Print-Ready Name Tag Data with PHP
tomzoh
0
110
インフラをつくるとはどういうことなのか、 あるいはPlatform Engineeringについて
nwiizo
5
2.6k
偶然 × 行動で人生の可能性を広げよう / Serendipity × Action: Discover Your Possibilities
ar_tama
1
1.1k
Classmethod AI Talks(CATs) #17 司会進行スライド(2025.02.19) / classmethod-ai-talks-aka-cats_moderator-slides_vol17_2025-02-19
shinyaa31
0
120
Goで作って学ぶWebSocket
ryuichi1208
2
1.3k
データマネジメントのトレードオフに立ち向かう
ikkimiyazaki
6
990
「海外登壇」という 選択肢を与えるために 〜Gophers EX
logica0419
0
710
ハッキングの世界に迫る~攻撃者の思考で考えるセキュリティ~
nomizone
13
5.2k
飲食店予約台帳を支えるインタラクティブ UI 設計と実装
siropaca
7
1.8k
Cloud Spanner 導入で実現した快適な開発と運用について
colopl
1
700
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.2k
Facilitating Awesome Meetings
lara
52
6.2k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
Scaling GitHub
holman
459
140k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
The Language of Interfaces
destraynor
156
24k
How to train your dragon (web standard)
notwaldorf
91
5.8k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Code Reviewing Like a Champion
maltzj
521
39k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
114
50k
Building Your Own Lightsaber
phodgson
104
6.2k
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スクリプト+レベルデザインの仕事してたとき 登場するマップ、シーン側の構造やアイテムなどの配置に合わせた敵の配置 プレイヤーが「やってみたくなる倒し方」「タイミングよく爽快感がでる倒し方」の準備ができ るようにマップ構造に合わせて敵の配置 ボスキャラの場合倒した後のムービーにつながるような倒し方ができるように マップや、その時持っている武器、またはやっているだろう戦い方を考慮して誘導できるよ うなビヘイビアツリーの調整と評価パラメーターの調整 ・キャラのイメージや設定に合わせた先読みの深さ、予測の範囲のパラメータ調整