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

看板GameDesign作者 (CJ Cat)時間8年前 (2016/02/13 13:22), 8年前編輯推噓12(12022)
留言34則, 13人參與, 最新討論串1/1
最近趕工都沒時間寫文,改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://www.ptt.cc/bbs/GameDesign/M.1455340945.A.0EA.html ※ 編輯: cjcat2266 (160.33.43.15), 02/13/2016 13:35:19

02/13 13:55, , 1F
推CJ貓,等秘境等好苦啊(
02/13 13:55, 1F

02/13 14:12, , 2F
現實生活應該會同時吧?
02/13 14:12, 2F

02/13 14:20, , 3F
不會喔,有反應時間差異,差零點幾秒感覺就不機械化了
02/13 14:20, 3F

02/13 14:21, , 4F
一群NPC完全同時採取行動,其實很難看
02/13 14:21, 4F

02/13 15:13, , 5F
02/13 15:13, 5F

02/13 15:22, , 6F
除非Npcs會心電感應
02/13 15:22, 6F
※ 編輯: cjcat2266 (172.91.156.131), 02/14/2016 01:29:02

02/14 02:15, , 7F
爆破的話就應該開頭同時,但是後續用播放速度不同或數種不
02/14 02:15, 7F

02/14 02:16, , 8F
同動作模組來做差異吧
02/14 02:16, 8F

02/14 04:15, , 9F
我是指開頭anim phase稍微不同,不是開始播放時間不同
02/14 04:15, 9F

02/14 04:16, , 10F
不過的確,不同動畫和播放速度差異的效果較明顯
02/14 04:16, 10F

02/14 04:17, , 11F
反正最終目的就是不要讓一群NPC表現出過度同步
02/14 04:17, 11F

02/14 04:18, , 12F
不論是視覺上或感覺上(行動時機)
02/14 04:18, 12F

02/14 09:58, , 13F
推,不過我私心覺得,無雙那樣滿有喜感的XD
02/14 09:58, 13F

02/14 13:03, , 14F
我個人的想法是,同時廣播給所有NPC同步反應是OK的,但是
02/14 13:03, 14F

02/14 13:03, , 15F
每個NPC要先停下手上的工作再轉過來
02/14 13:03, 15F

02/14 13:04, , 16F
前提是每個NPC閒置時都有動作
02/14 13:04, 16F

02/14 17:19, , 17F
我的經驗是,"停下手邊工作"這個動作也要時機稍微錯開
02/14 17:19, 17F

02/14 17:19, , 18F
不然還是會看起來有心電感應的樣子
02/14 17:19, 18F

02/15 09:41, , 19F
把AI的陣列先打亂 然後每個AI都睡個10~50ms再執行
02/15 09:41, 19F

02/15 09:41, , 20F
看起來就很"不同步"了
02/15 09:41, 20F

02/15 15:12, , 21F
樓上應該是說 100ms~500ms 吧?
02/15 15:12, 21F

02/15 15:12, , 22F
小於 100ms 人眼不容易分得出差別
02/15 15:12, 22F

02/16 04:25, , 23F
嗯,我平常是用100ms為延遲單位,200ms以上就很明顯了
02/16 04:25, 23F

02/18 09:22, , 24F
我不是打錯 XD 真的是打10~50ms
02/18 09:22, 24F

02/18 14:52, , 25F
我的意思是,同時進行停下手邊動作的"動作"
02/18 14:52, 25F

02/18 14:52, , 26F
例如警鈴響起或大喊,所有人就該同時反應,不過怎麼反應的
02/18 14:52, 26F

02/18 14:52, , 27F
動作差異,就會造成不會同時轉頭
02/18 14:52, 27F

02/18 23:53, , 28F
02/18 23:53, 28F

02/19 16:38, , 29F
樓上這個...玩到後來感覺有點像是新兵訓練向後轉
02/19 16:38, 29F

02/21 14:43, , 30F
GALINE那個讚
02/21 14:43, 30F

02/24 10:38, , 31F
推GALINE的demo
02/24 10:38, 31F

02/26 11:04, , 32F
推個,我把rand換成(s-m)*i/5 XD
02/26 11:04, 32F

02/26 11:06, , 33F
s+ 才對..
02/26 11:06, 33F

03/17 11:09, , 34F
03/17 11:09, 34F
文章代碼(AID): #1MlhsH3g (GameDesign)