[心得] AI小技巧: 時域錯位(Time-Staggering)

作者: cjcat2266 (CJ Cat)   2016-02-13 13:22:20
最近趕工都沒時間寫文,改po小技巧好了 :)
這只是個小概念,不是什麼深奧的技術
知道它存在之後應該就不會忘記了
我以前也只是隱約知道它的存在
開始著手遊戲AI的時候,才注意到同事們非常重視這個概念
時域錯位(Time-Staggering)
意即當核心AI邏輯做了一個決策時,所有NPC"不"同時採取行動
e.g. 主角行蹤暴露時,不要讓所有敵人同時轉身,轉身時機稍微互相錯開
這樣一個簡單的小技巧
就可以讓整體AI看起來更有機、而不會過於機械化
如果你的遊戲有多個NPC
不妨試試看這個技巧,讓他們看起來更生動一點 :)
[補充]
同樣的概念也可以套用到gameplay上
像是被同一個爆破炸飛的敵人
飛空動畫的起頭時間、撥放速度也可以稍微錯開
看起來就不會像是同步空中芭蕾
早期三國無雙同一次擊飛的敵人們就有這種機械化的同步感
作者: dklassic (DK)   2016-02-13 13:55:00
推CJ貓,等秘境等好苦啊(
作者: damody (天亮damody)   2016-02-13 14:12:00
現實生活應該會同時吧?
作者: cjcat2266 (CJ Cat)   2016-02-13 14:20:00
不會喔,有反應時間差異,差零點幾秒感覺就不機械化了一群NPC完全同時採取行動,其實很難看
作者: waldfantasy (Kira)   2016-02-13 15:13:00
作者: Dsakura (亞瑠華子)   2016-02-13 15:22:00
除非Npcs會心電感應
作者: ddavid (謊言接線生)   2016-02-14 02:15:00
爆破的話就應該開頭同時,但是後續用播放速度不同或數種不同動作模組來做差異吧
作者: cjcat2266 (CJ Cat)   2016-02-14 04:15:00
我是指開頭anim phase稍微不同,不是開始播放時間不同不過的確,不同動畫和播放速度差異的效果較明顯反正最終目的就是不要讓一群NPC表現出過度同步不論是視覺上或感覺上(行動時機)
作者: Frostx (Naga)   2016-02-14 09:58:00
推,不過我私心覺得,無雙那樣滿有喜感的XD
作者: LayerZ (無法如願)   2016-02-14 13:03:00
我個人的想法是,同時廣播給所有NPC同步反應是OK的,但是每個NPC要先停下手上的工作再轉過來前提是每個NPC閒置時都有動作
作者: cjcat2266 (CJ Cat)   2016-02-14 17:19:00
我的經驗是,"停下手邊工作"這個動作也要時機稍微錯開不然還是會看起來有心電感應的樣子
作者: cowbaying (是在靠北喔)   2016-02-15 09:41:00
把AI的陣列先打亂 然後每個AI都睡個10~50ms再執行看起來就很"不同步"了
作者: Schottky (順風相送)   2016-02-15 15:12:00
樓上應該是說 100ms~500ms 吧?小於 100ms 人眼不容易分得出差別
作者: cjcat2266 (CJ Cat)   2016-02-16 04:25:00
嗯,我平常是用100ms為延遲單位,200ms以上就很明顯了
作者: cowbaying (是在靠北喔)   2016-02-18 09:22:00
我不是打錯 XD 真的是打10~50ms
作者: LayerZ (無法如願)   2016-02-18 14:52:00
我的意思是,同時進行停下手邊動作的"動作"例如警鈴響起或大喊,所有人就該同時反應,不過怎麼反應的動作差異,就會造成不會同時轉頭
作者: GALINE (天真可愛CQD)   2016-02-18 23:53:00
作者: osanaosana (芋頭一顆多少錢)   2016-02-19 16:38:00
樓上這個...玩到後來感覺有點像是新兵訓練向後轉
作者: damody (天亮damody)   2016-02-21 14:43:00
GALINE那個讚
作者: Frostx (Naga)   2016-02-24 10:38:00
推GALINE的demo
作者: LayerZ (無法如願)   2016-02-26 11:04:00
推個,我把rand換成(s-m)*i/5 XDs+ 才對..
作者: leograss (耶誕夜草男)   2016-03-17 11:09:00

Links booklink

Contact Us: admin [ a t ] ucptt.com