GameDesign 板


LINE

※ 引述《cjcat2266 (CJ Cat)》之铭言: : 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/ : 请多指教 :) 不要每个frame都执行,除了cjcat大分享的timeslicing之外 还有使用timer,设定interval时间每隔一段时间处理的方法 这边想分享一下曾经遇到"失败"的经验 首先我们先回到没有改的状况 版本1: 每个frame要做的事情都写在Update里 版本2: 使用timer 在begin play的时候设定timer,interval可能是5秒,每次作原来Update的事 结果悲剧发生了,如果这个entity被种了10个在同一个场景可能会发生什麽事? 10个同时睡觉,同时起床,於是每5秒游戏就会顿一下 (前提是这Update很花时间,不过如果这个Update很快,你根本不会把版本1改掉) 从profiler分析,版本2的average fps会比1好很多, 可是max fps还是跟版本1一样,游戏体验却比1还要遭。 所以这篇文章除了要说明, 使用timer要小心不要同时触发之外。 profiling时也要拥有全面以及正确的观念,average/max 都要同时注意 在寻找改善的标物建议多花一点时间,确定找到的是目前较重瓶颈 时间要花在刀口上~~ 以上就是曾遇到的失败经验~~没踩过雷的人可以趁机知道一下~ --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.116.41.55
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1490459698.A.90E.html
1F:推 cowbaying: 你这是把同样把全部要做的事情都塞进update里面吧 03/26 00:50
2F:→ cowbaying: 这样有没有延迟5秒执行没有差别阿 03/26 00:51
3F:→ windkey: 的确只是单纯的把呼叫次数降低而已 03/26 01:16
4F:推 Frostx: 在开头的时候把timer的第一次周期随机分散 03/26 09:25
5F:推 cjcat2266: 我自己是不太喜欢用timer,因为有不确定因素 03/26 10:03
6F:→ cjcat2266: 因为用frame数来决定是否update的话,控制比较精确 03/26 10:04
7F:→ cjcat2266: 一开始我会推荐最简单的 (object index + frame#) % n 03/26 10:06
8F:→ cjcat2266: 来决定是否update,不够的话再看有没有其他地方可以切 03/26 10:07
9F:→ cjcat2266: 也可以试试看lazy update,有需要的时候才触发update 03/26 10:08
10F:→ cjcat2266: 下个frame再给结果,太多query的话就排队timeslice 03/26 10:09
11F:→ cjcat2266: Uncharted 4的就是用这种request-based lazy update 03/26 10:10
12F:→ cjcat2266: 来算出NPC的最佳移动目的地,NPC有reqeust才开始update 03/26 10:11
13F:→ cjcat2266: 要算的东西太多,就timeslice,过几个frame再给结果 03/26 10:11
14F:→ cjcat2266: 反正是决定层,慢个0.1秒才反映在动画层也看不出来 03/26 10:12
15F:推 softpak: 我的方法跟cj是一样的 03/26 12:13
16F:→ softpak: 用更新率来切step 03/26 12:14
17F:→ softpak: 或者说就是最简单的一招吧 XD 03/26 12:15
18F:推 softpak: 这样做是不用另开执行绪 03/26 12:17
19F:→ softpak: 效能不足再开就好 03/26 12:17
20F:推 cjcat2266: 如果平台支援fiber的话,可以在低overhead的状况达到 03/26 15:07
21F:→ cjcat2266: 多执行绪的效果,一开始开跟CPU core数量一样的执行绪 03/26 15:08
22F:→ cjcat2266: 然後用core affinity绑定CPU core,再用job system分配 03/26 15:09
23F:→ cjcat2266: fiber给执行绪处理 03/26 15:09
24F:推 cjcat2266: 范例可以看 http://bit.ly/1eX5mb1 03/26 15:12
25F:推 lemmii: push~ 03/27 10:55
26F:推 sakyer: 赞 03/27 14:40
27F:推 breakself: 时域切割正夯 03/28 23:25







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP