作者cjcat2266 (CJ Cat)
看板GameDesign
標題[程式] 遊戲程式:批次邏輯的時域切割
時間Thu Mar 23 14:02:22 2017
timeslicing算是我進入業界一開始接觸到的技巧之一吧
非常實用且幾乎每天都會摸到
簡單來說就是有必須反覆執行的輕量批次邏輯
不用每個frame全部執行,可以分多個frame執行,分擔負擔
像是100個NPC不用每個frame都全部執行,每frame處理20個可省下80%決策運算時間
反映NPC決策的動畫層,因為與決策層中間透過介面溝通
這種幾個frame決策延遲並不會被玩家注意到
(除非你在做無法容忍延遲的格鬥遊戲,那你是要100個NPC幹嘛啦XD)
時域切割 同步/非同步 的 資料讀取輸入/儲存輸出,又有四種排列組合
本文有精美動畫供參考 :)
那就廢話不多說了(好像已經講了一堆)
連結在此
http://wp.me/p4mzke-14V
動畫生成原始碼在此
https://github.com/TheAllenChou/timeslicing
這是遊戲程式系列文的一部分
http://allenchou.net/game-programming-series/
請多指教 :)
--
Web
http://AllenChou.net
Twitter
http://twitter.com/TheAllenChou
LinkedIn
http://linkedin.com/in/MingLunChou
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 104.174.112.138
※ 文章網址: https://webptt.com/m.aspx?n=bbs/GameDesign/M.1490248946.A.C95.html
※ 編輯: cjcat2266 (104.174.112.138), 03/23/2017 14:04:36
1F:推 dreamnook: 03/23 14:11
※ 編輯: cjcat2266 (104.174.112.138), 03/23/2017 14:42:49
2F:推 cowbaying: 這個技巧應該一堆人不曉得 不然國產遊戲效能不會悲劇 03/23 16:53
3F:→ cowbaying: 這麼長一段時間 XDDD 03/23 16:54
4F:→ cowbaying: 這個技巧可以算是執行緒的延伸概念 03/23 16:55
5F:推 laikyo: 有用推 03/23 17:17
6F:→ LayerZ: 沒到效能瓶頸應該都不會去試這個吧XD,而且瓶頸與其在計算 03/23 17:24
沒有喔,一般是稍微有規模的系統,一開始就會用這個模式
運算資源永遠嫌不夠,所以初始規劃就要使用可以隨時調整資源使用量的設計
7F:推 zseineo: 推 03/23 17:24
8F:→ LayerZ: 上,傳輸上反而更大,大概是mmo/家機環境差別 03/23 17:24
9F:→ LayerZ: 而且,這東西意外的讓npc有點人味,看到目標還有點反應延 03/23 17:25
10F:→ LayerZ: 遲好微妙XD 03/23 17:25
文中動畫其實有故意放慢了,一般不會讓近身NPC閒置超過3個frames不跑決定邏輯
NPC最高層決定邏輯需要的較低層邏輯,可以用稍微低一點的頻率更新
像我們家的NPC每3個frame做一次決定,但一個frame只讓一個NPC尋徑這樣
真的要故意延遲和錯開行動時間點,要額外使用time-staggering(時域錯位)
之前有篇短文
#1MlhsH3g提到,遊戲程式系列有計畫之後要寫篇完整的
11F:推 cowbaying: 到處都是效能瓶頸阿 說真的我覺得國產遊戲真的只會硬 03/23 21:42
12F:→ cowbaying: 幹所有功能 看看那精美的仙劍六 03/23 21:43
搞不好跟國產沒關係,就是剛好請到的programmer技術和經驗不夠這樣
或者是production等不及優化,趕鴨子上架
看看那個在PS4上面跑10fps還拿出來賣的Litchdom Battlemage
13F:推 eugenelinrmx: 好文推! 03/23 21:44
14F:推 LayerZ: 了解,一開始架構就做好了 03/23 22:17
※ 編輯: cjcat2266 (160.33.43.15), 03/24/2017 02:18:39
15F:推 Sidney0503: 03/24 06:07
16F:推 riveranb: 推! 03/24 06:18
17F:推 Frostx: 實用推,感謝CJ花時間分享! 03/24 09:48
18F:推 RadiationXen: 實用推 03/24 10:48
19F:推 windkey: 感謝分享~ 03/26 00:06
※ 編輯: cjcat2266 (104.174.112.138), 03/26/2017 10:02:04
20F:推 MADAOTW: 感恩 03/26 18:00
21F:推 sakyer: 感謝分享 03/27 14:19
啊,batched algorithms翻成"平行邏輯"不太對
應該翻成"批次演算法"或"批次邏輯"才對
※ 編輯: cjcat2266 (104.174.112.138), 03/27/2017 15:56:19
22F:推 a83a83cjcj: 10幾20fps的 Lichdom Battlemage 太性感,難得遇到平均 05/04 16:14
23F:推 a83a83cjcj: 幀率低成這樣的現代家機遊戲 之前特價直接買來當寶XD 05/04 16:14
24F:推 elfkiller: AI決策跟網路同步很常用這個技術 不要太看輕國產遊戲XD 05/24 21:25