作者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/cn.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