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

server/2024/11/13 9:58:08/

目录

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

第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.学习

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


http://www.ppmy.cn/server/102261.html

相关文章

DrissionPage自动化获取城市数据内容

一、获取页面内容 二、最终结果 上海市 约收录140个指标 查看98075次 人均GDP 153299元 公交车 17899辆 户籍人口 1469.3万人 三、代码 from DrissionPage._pages.chromium_page import ChromiumPage import time page ChromiumPage() page.get(https://www.swguancha.com/…

Taro+Vue 创建微信小程序

TaroVue 创建微信小程序 一、全局安装 tarojs/cli二、项目初始化三、现在去启动项目吧 一、全局安装 tarojs/cli npm install -g tarojs/cli //安装 npm info tarojs/cli //查看安装信息 如果正常显示版本说明成功了,就直接跳到第二步吧官网说:…

分布式知识总结(基本概念)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 基本概念 吞吐量 指系统在单位时间能够处理多少个请求 QPS 每秒…

小区社区超市商城停车场管理系统-计算机毕设Java|springboot实战项目

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

09结构型设计模式——组合模式

一、组合模式的简介 组合模式(Composite Pattern)是一种结构型设计模式,主要用于处理树形结构中的对象组合问题。它允许你将对象组合成树形结构,以表示部分-整体层次结构。组合模式使得客户端能够统一地对待单个对象和对象组合&a…

兼容并蓄,高效集成:EasyCVR视频综合接入能力助力多元化项目需求

随着视频技术的不断进步,视频监控、视频直播、执法记录仪、语音可视对讲、无人机等视频资源的应用场景日益丰富。这些视频资源不仅在数量上快速增长,而且在质量、格式、编码标准等方面也呈现出多样化的特点。因此,为了有效整合这些资源&#…

vue更新的细粒度

在 Vue.js 中,更新的细粒度指的是框架如何智能地追踪和更新数据变化所引发的界面变化。Vue 通过高效的响应式系统,最大化减少不必要的 DOM 操作,从而实现性能优化。了解 Vue 的细粒度更新机制对于优化性能和理解框架的运行原理非常重要。 1.…

萝卜快跑和端到端的自动驾驶(1)

先看一篇论文 2311.18636 (arxiv.org) 这篇论文里有一个非常好的图 比较了一下模块化任务(级联任务)和端到端自动驾驶的区别 首先什么叫模块化任务(级联) 如上图所示,左边的方块中的子方块,是展示了自动驾驶获取数据的途径,这里包括&…