什么是优化?

  • 为了达成相同目标,寻求并采用消耗更少资源的办法的过程

对游戏来说通过特别的技巧,在实现相同的表现效果、流畅度的前提下对硬件机能的需求更低、更平民化。或者在相同性能的平台上,实现更好的画面表现效果、流畅度。是追求极致。

  • 包括CPU,GPU,内存,闪存,网络等

一般来说优化主要针对硬件因此分类也和硬件相关。此外优化也和职责相关,程序需要对代码优化,美术需要对资源优化,策划也需提供一些策划上的方案避免性能开销。

  • 一个永恒不变的话题

人的欲望是无止境的,玩家的需求和项目的需求永远在不断增长。优化永无止境。

优化方法

  • 根据性能指标设定优化目标

没有目标就没有方向我们首先就是设立优化目标,这也是一种通用的优化方式。不仅仅针对Unity。

一般游戏的性能指标有:帧率,稳定性(卡顿),等待时间(Loading),内存占用(手机上最重要指标,绝大部分闪退的原因,理想值是内存占用低于150M),安装包大小,网络延迟,网络流量,耗电量(手机比较重要,限帧)等等。

例如可以订我们的目标是在低配机型红米上可以稳定30帧运行内存200M以内,在中配机型上稳定在45帧运行实现主流游戏效果内存300M以内,高配机型上60帧稳定运行实现次世代效果内存。

  • 根据性能指标设定优化目标

一般来说游戏优化也遵循28原则,游戏优化又是很费时费力的一件事,我们需要找出性能瓶颈。按照优先级来进行优化。

望闻:根据优化目标,先大概分析一下性能指标。包括帧数多少,是否稳定,是否存在卡顿。较长时间运行,发热量如何,是否存在闪退。安装包多大。网络流量多大等。找到最优先需要解决的点。

问:询问相关开发人员性能热点大概从什么时候开始出现。我们之前的项目在开发到中后期会找测试同学测试每日构建的版本,及时监控性能指标,第一时间发现性能瓶颈,发现越早越容易优化。

切:通过一些工具分析来进行深度的分析,必要时需要自己开发分析工具,定位热点。

  • 优化性能热点

找到性能热点指点之后工作就已经完成一大半了,然后针对热点指定方案优化。下面先介绍一些常用的分析工具。

优化工具

  • Unity Profile

最常用的性能分析工具,官方自带可编辑器可连真机,不做过多介绍。

  • Xcode

苹果的性能分析工具,在IOS平台上是最好的选择。

  • UWA

有本地工具(详见使用使用UWAGOT优化Unity性能和内存)和在线版。它通过自动化工具收集Unity Profile的数据,并结合人工进行测试分析。可以提供一些采集分析过的性能数据和优化建议。

  • ADB & AndroidStudio

有时也会在Android设备上直接查看性能数据,日志等。

  • Unity Frame Debugger

Unity自带的图形调试工具。功能相对较弱,不过因为集成在了Unity中,使用方便。

  • Xcode GPU Frame Caputre

苹果平台下图形调试最好的选择。

  • Adreno Profiler

高通的GPU调试工具。使用Mono开发,特别介绍一下,这是唯一可以比较方便导出渲染资源的工具,可以在不破解的情况下扒取游戏贴图,模型,Shader等资源。不过导出的资源会丢失一些信息需要工具还原。提供记录渲染API和回放分析,小米2小米4都可以使用,需要安装AndroidSDK,使用Adb连接。

  • GPA

Intel的开发工具,DX版本的工具就非常强大(详见使用英特尔GPA优化《轩辕传奇》游戏的性能),现在也有OpenGL版本,使用方法类似。和DX版本兼容性非常好一样,各种GPU的手机基本都可以使用,不过一些深层次的性能分析只有Intel自家芯片才支持。。

  • NVIDIA Tegra Graphics Debugger

Nvidia公司的分析工具,二手手机号出售平台前身是大名鼎鼎的PerfHud,代替了PerfHudES。功能强大使用方便,和PerfHud一样使用的时候不是抓一帧而是实时冻结手机上一帧的显示,支持实时修改Shader并在手机上显示最终效果。缺点是使用Tegra的设备比较少,小米3和小米平板。

  • Memprofile

Unity官方出的内存分析插件。

  • 其他

每个显卡厂商都有自己的分析工具:一般都是基于驱动层。另外开发过程中还会开发很多自己开发的性能分析工具和集成一些插件,例如BuildReport,WeTest Cube,Emmagee等等。

  • 最后使用这些工具能干什么?
  • 实时显示游戏运行时CPU,OpenGL runtime以及GPU上的性能数据。同时支持多种3D流水线的override模式。
  • 可以看到3D流水线的渲染过程,API的调用过程,Shader的源代码和指令个数,使用的贴图格式等信息,mesh信息。
  • 可以分析DC是否过多,渲染状态是否调用过多,是否可以合并或者排序,地形,场景,角色,UI,后期处理等占比来定位性能热点。
  • 可以分析贴图是否过多过大,是否使用显卡支持的压缩格式。
  • Override模式下。Null Driver, Null Hardware,看定位性能是否在GPU上。关闭渲染或者一些相关API来定位性能瓶颈。例如ps,1像素贴图等。
  • 可以看一些工具提供的Shader优化建议,也可以修改Shader实时发送到设备,既可以分析其他游戏shader也可以自己调试。
  • 分类开关不同类型的对象定位性能瓶颈。监控内存,当前引用资源数据,网络延迟,内存池开销等。
  • 等等。

如何消耗更少资源?Unity优化技巧(上)相关推荐

  1. 复习Unity优化技巧

    复习Unity优化技巧 一.引言 新的格局 有推荐的吗? 二.优化 第一章.优化图形性能 1.分析: A.GPU通常受填充率或者内存带宽制约. 填充率 渲染管线 B.CPU 通常受到需要渲染的批次数的 ...

  2. 显卡升级为啥总显示登录账号_科技让生活更美好:游戏画质更好,显卡资源消耗更少...

    一. 前言 蘑菇之前一直都认为,既然想要玩游戏,那肯定就是追求流畅,既然想要流畅,除了升级显卡之外,还可以选择一台1080P的电竞显示器.分辨率的降低,对于游戏帧数的提升,比升级显卡还明显,这也是蘑菇 ...

  3. Unity 优化技巧集锦

    前言 Unity性能优化是面试的时候经常被问道的一些内容,今天给大家分享一些常用的Unity的优化技巧和思路,方便大家遇到问题时候参考与学习. 包体大小优化 游戏的安装包体大小对于游戏开发而言非常重要 ...

  4. 节俭式创新:用更少资源,做更多的事

    \u0026#xD; 本文要点: \u0026#xD;\u0026#xD; 在发展中国家,大小型企业都将金字塔底层人民的需求视为市场机会,并开始着手设计节俭的.以市场为主导的解决方案,以满足之前未能满 ...

  5. Unity优化技巧,此时无光胜有光

    在unity中,常常会碰到场景里错综复杂,光照信息众多,而导致性能明显降低的情况. 我们举个例子(左下角圆圈圈是操作角色移动用的手柄,该场景可以漫游): 这是个在安卓平台应用的写实风格场景,通过URP ...

  6. linux java -xms_为什么JVM比指定的-Xms消耗更少的内存?

    我的问题是 Headers ,我通过搜索获得了一些知识: 但还是不知道为什么,有些可以提供一些帮助吗? 这是我在Ubuntu12.04(64位)上的测试运行JDK 1.7.0_04 . 和顶部显示如下 ...

  7. 【Unity 优化篇】 | 优化专栏《导航帖》,全面学习Unity优化技巧,让我们的Unity技术上升一个档次

    文章目录

  8. c语言strcat_s用于调用的参数太少_为什么系统调用会消耗较多资源呢

    为什么这么设计(Why's THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点.对具体实现造成的影响 ...

  9. 移动设备渲染架构以及GPU优化技巧

    移动设备渲染架构以及GPU优化技巧 前言 一.常用的两种GPU渲染架构 二.Immediate Mode Rendering 1.说明 2.优点 3.缺点 三.Tile-Based Rendering ...

最新文章

  1. debian10 更换阿里源
  2. PHP脚本批量清除nginx缓存的方法
  3. InfoPath表单每增加一个表单产生一个自动增加ID序号
  4. 梁戈碧:促数据中心转型 释放数据洞察力
  5. Spring Boot 内置Tomcat——getServletContext().getRealPath()为临时目录问题解决方案
  6. webpack开发Vue配置
  7. Windows下python发送邮件_CustomEmail.py[text、html、附件、读取文本到正文]
  8. 查找算法(一)顺序查找
  9. 【mysql】【windows】MySQL 服务无法启动,服务没有报告任何错误,请键入 NET HELPMSG 3534 以获得更多的帮助。...
  10. maven helper解决依赖冲突问题
  11. 单片机学习方法总结资料分享
  12. 浅谈车载支架无线充电方案
  13. android获取指纹信息最新,# android 指纹识别并检测指纹库是否变更
  14. table(单击行,把当行的单选按钮(radio)设为选中状态,并应用当前样式)
  15. Vue项目实现web端第三方分享(qq、qq空间、微博、微信)
  16. 为什么使用use strict可以节约你的时间
  17. 甘特图在项目管理中的应用
  18. NVIDIA面经整理
  19. Lua阿拉伯数字转中文大写数字
  20. 配置nginx + keepalived双主模式(双机互为主备)

热门文章

  1. MySQL编程技巧_MySQL编程中的6个重要的实用技巧
  2. mysql聚簇索引存储结构_MySQL聚簇索引的实际应用于结构描述
  3. 拓扑学+计算机,吴国平: 拓扑学到底有多重要? 在数学中占据多高的地位?
  4. oracle 创建nchar类型,nchar类型的用法!
  5. DDPG-强化学习算法
  6. 限界分支法优先级队列方式出口和追踪解的两种方法总结
  7. Codeforces Round #486 (Div. 3) C Equal Sums (map+pair)
  8. 九章算法班L5 Linked List
  9. 微信小程序-京东购物系列一
  10. iOS开发--线程通信