作者cjcat2266 (CJ Cat)
看板GameDesign
標題[心得] AI小技巧: 時域錯位(Time-Staggering)
時間Sat Feb 13 13:22:20 2016
最近趕工都沒時間寫文,改po小技巧好了 :)
這只是個小概念,不是什麼深奧的技術
知道它存在之後應該就不會忘記了
我以前也只是隱約知道它的存在
開始著手遊戲AI的時候,才注意到同事們非常重視這個概念
時域錯位(Time-Staggering)
意即當核心AI邏輯做了一個決策時,所有NPC"不"同時採取行動
e.g. 主角行蹤暴露時,不要讓所有敵人同時轉身,轉身時機稍微互相錯開
這樣一個簡單的小技巧
就可以讓整體AI看起來更有機、而不會過於機械化
如果你的遊戲有多個NPC
不妨試試看這個技巧,讓他們看起來更生動一點 :)
[補充]
同樣的概念也可以套用到gameplay上
像是被同一個爆破炸飛的敵人
飛空動畫的起頭時間、撥放速度也可以稍微錯開
看起來就不會像是同步空中芭蕾
早期三國無雙同一次擊飛的敵人們就有這種機械化的同步感
--
Web
http://AllenChou.net
Twitter
http://twitter.com/TheAllenChou
LinkedIn
http://linkedin.com/in/MingLunChou
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 160.33.43.15
※ 文章網址: https://webptt.com/m.aspx?n=bbs/GameDesign/M.1455340945.A.0EA.html
※ 編輯: cjcat2266 (160.33.43.15), 02/13/2016 13:35:19
1F:推 dklassic: 推CJ貓,等秘境等好苦啊( 02/13 13:55
2F:推 damody: 現實生活應該會同時吧? 02/13 14:12
3F:→ cjcat2266: 不會喔,有反應時間差異,差零點幾秒感覺就不機械化了 02/13 14:20
4F:→ cjcat2266: 一群NPC完全同時採取行動,其實很難看 02/13 14:21
5F:推 waldfantasy: 推 02/13 15:13
6F:推 Dsakura: 除非Npcs會心電感應 02/13 15:22
※ 編輯: cjcat2266 (172.91.156.131), 02/14/2016 01:29:02
7F:推 ddavid: 爆破的話就應該開頭同時,但是後續用播放速度不同或數種不 02/14 02:15
8F:→ ddavid: 同動作模組來做差異吧 02/14 02:16
9F:→ cjcat2266: 我是指開頭anim phase稍微不同,不是開始播放時間不同 02/14 04:15
10F:→ cjcat2266: 不過的確,不同動畫和播放速度差異的效果較明顯 02/14 04:16
11F:→ cjcat2266: 反正最終目的就是不要讓一群NPC表現出過度同步 02/14 04:17
12F:→ cjcat2266: 不論是視覺上或感覺上(行動時機) 02/14 04:18
13F:推 Frostx: 推,不過我私心覺得,無雙那樣滿有喜感的XD 02/14 09:58
14F:→ LayerZ: 我個人的想法是,同時廣播給所有NPC同步反應是OK的,但是 02/14 13:03
15F:→ LayerZ: 每個NPC要先停下手上的工作再轉過來 02/14 13:03
16F:→ LayerZ: 前提是每個NPC閒置時都有動作 02/14 13:04
17F:→ cjcat2266: 我的經驗是,"停下手邊工作"這個動作也要時機稍微錯開 02/14 17:19
18F:→ cjcat2266: 不然還是會看起來有心電感應的樣子 02/14 17:19
19F:推 cowbaying: 把AI的陣列先打亂 然後每個AI都睡個10~50ms再執行 02/15 09:41
20F:→ cowbaying: 看起來就很"不同步"了 02/15 09:41
21F:→ Schottky: 樓上應該是說 100ms~500ms 吧? 02/15 15:12
22F:→ Schottky: 小於 100ms 人眼不容易分得出差別 02/15 15:12
23F:→ cjcat2266: 嗯,我平常是用100ms為延遲單位,200ms以上就很明顯了 02/16 04:25
24F:推 cowbaying: 我不是打錯 XD 真的是打10~50ms 02/18 09:22
25F:→ LayerZ: 我的意思是,同時進行停下手邊動作的"動作" 02/18 14:52
26F:→ LayerZ: 例如警鈴響起或大喊,所有人就該同時反應,不過怎麼反應的 02/18 14:52
27F:→ LayerZ: 動作差異,就會造成不會同時轉頭 02/18 14:52
29F:推 osanaosana: 樓上這個...玩到後來感覺有點像是新兵訓練向後轉 02/19 16:38
30F:推 damody: GALINE那個讚 02/21 14:43
31F:→ Frostx: 推GALINE的demo 02/24 10:38
32F:→ LayerZ: 推個,我把rand換成(s-m)*i/5 XD 02/26 11:04
33F:→ LayerZ: s+ 才對.. 02/26 11:06
34F:推 leograss: 推 03/17 11:09