当前位置: 首页 > news >正文

Unity | 游戏开发中的优化思维

目录

​​​​​​一、优化三板斧:

第1步:定标准

第2步:重数据

第3步:严测试

二、流程和性能的优化

1.定标准:

2.重数据:

三、交互和表现的优化

1.卡顿和延迟

2.手感硬

四、沟通和学习


​​​​​​一、优化三板斧:

        优化的开门三板斧:“SDT(Standard-Data-Test)”模型:定标准、重数据和严测试。

第1步:定标准

        就是要求在重事实的前提下,进行同标准下的问题沟通。相对应地,在做性能优化的量化分析中,我们经常会将设备一致和流程一致等作为前置标准,以确保分析和研究使用数据的确定性、可比性和可重现性。只有这样,我们在进行定性和定量分析的时候,才能最快达到逻辑条件的覆盖,否则容易陷入盲猜原因的冗余测试中。

第2步:重数据

        优化的本质就是改善数据。数据来源:

  • 既定事实:如项目大小,文件数量,代码行数等。
  • 人工统计:如人工计时统计等。
  • 代码逻辑:如代码 Loop嵌套循环遍数等。 
  • 工具测试:如UWA工具统计的各种运行时开销等。
  • 官方文档:如Unity官方文档,iPhone/Android手机官方文档等。

第3步:严测试

        优化调整的正确性、完整性和安全性是我们追求的胜利结果,切忌看到一点小胜后就盲目乐观与大意,要胜就要大胜完胜,优化后的严格测试环节就是确保大胜完胜的必备基础和先决条件。

二、流程和性能的优化

1.定标准:

  • Android设备的闪退以系统当前PSS值(Proportional Set Size)作为阈值参考。
  • 1G运存的iOS设备闪退阈值大约在645m左右。
  • 运存越大的安卓系统设备,APP相对应的PSS值中缓存比例也越大。

2.重数据:

        在1G运存的iOS设备上初始号半小时内的相关内存峰值低于645m。

        用数据说话: 升级机器配置很重要!但是有多重要?数据说话:启动项目耗时对比数据

三、交互和表现的优化

1.卡顿和延迟

        玩家通常会把有掉帧表现的卡顿和延迟混在一起说,我们知道它们有本质上的不同:

  • 卡顿:单秒的渲染帧数不满足设定的标准帧率,尤其在连续的时间内实际帧率波动太大,卡顿表现就会尤为明显,卡顿必然伴随着处理的延迟。
  • 延迟:操作的反馈比预期要来得晚,原因可能有多种,消息阻塞了,逻辑卡顿了,网络耗时长,响应灵敏度低等等。

        【定标准】我们要将游戏操作的延迟控制在可接受范围之内。

2.手感硬

        如果是对操作要求非常高的即时类游戏,如若采用状态同步,则策略通常是以前端的表现优先,即操作的响应先行,不依赖于服务端的逻辑判断,但操作的最终结果则需要在服务器进行校验,若采用帧同步则需要等待服务器转发后,各端再同时进行表现。不同的游戏类型对于延迟的要求和处理方案均不同,需细心处理对待。

        操作的响应反馈过程是交互的重要一环,我们对于一次交互产生的感觉以及交互质量的判断均取决于此。例如当我们说操作过程给人感觉比较硬的时候,一般说的是在这次交互过程中的响应反馈过程是偏硬的,而硬这种体验从现实来说,就是缺乏过程或过程转换太快的一种描述(软通常就伴随着有弹性和形变过渡)。

        【定标准】游戏操作的手感不要太硬。

四、沟通和学习

1.沟通

        在心理学上有一个叫自利归因偏差的理论,说的是在我们的潜意识里,有归因的倾向性。成功的事都归因于自己,失败的事都归因于别人。这是大脑的一种自我保护机制,这种自我保护通常会让我们无视既定事实,会有缺乏理性的冲动。

        【定标准】确保我们的沟通可以客观,克制本能的下意识自利冲动。 

2.学习

        【可量化】学习不仅仅要求知识和技能成长,更要重视学习思维与方法的训练与成长。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 使用微软Detours库进行DLL注入
  • 【JAVA】阿里巴巴 EasyExcel:高效的Excel处理解决方案
  • 【java】RuoYi-Vue前后端分离版本-登陆请求流程解析
  • OpenAI推出GPT-4o微调功能
  • Nuitka 打包 exe 软件步骤
  • JSON, YAML, XML, CSV交互可视化
  • 设计模式六大原则(一)--单一职责原则
  • 一站式NVR模组解决方案:基于海思 3520D芯片的完整源码与系统集成
  • 基于Python的机器学习系列(7):多元逻辑回归
  • GT IP中的Sequence Max Skew
  • Git入门 -- 分支
  • 基于人工智能、三维视觉、混合现实等技术的智慧能源开源了
  • 使用SSMS连接和查询 SQL Server 实例
  • 基于深度学习的环境感知系统
  • 设计模式-结构型模式(第五章)
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [nginx文档翻译系列] 控制nginx
  • Angular Elements 及其运作原理
  • java中具有继承关系的类及其对象初始化顺序
  • node学习系列之简单文件上传
  • 不上全站https的网站你们就等着被恶心死吧
  • 从0到1:PostCSS 插件开发最佳实践
  • 前端面试总结(at, md)
  • 前端性能优化——回流与重绘
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​iOS安全加固方法及实现
  • #pragma data_seg 共享数据区(转)
  • #QT(TCP网络编程-服务端)
  • $$$$GB2312-80区位编码表$$$$
  • (07)Hive——窗口函数详解
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (23)Linux的软硬连接
  • (poj1.3.2)1791(构造法模拟)
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (面试必看!)锁策略
  • (三)终结任务
  • (四)c52学习之旅-流水LED灯
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)SpringBoot3---尚硅谷总结
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • .gitignore文件—git忽略文件
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net 提取注释生成API文档 帮助文档
  • .NET中winform传递参数至Url并获得返回值或文件
  • @property python知乎_Python3基础之:property
  • @vue/cli 3.x+引入jQuery
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [AI 大模型] 百度 文心一言
  • [AIGC 大数据基础]hive浅谈
  • [AIGC] 解题神器:Python中常用的高级数据结构
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [C#]winform基于深度学习算法MVANet部署高精度二分类图像分割onnx模型高精度图像二值化