Flash性能——游戏性能优化

Flash游戏的性能因素

  • 游戏性能因素之一:帧率

  1. 游戏性能中最关键的数据,可是在很长时间内被忽略。
  2. 帧率不稳定会使游戏不流畅甚至出现卡顿现象。
  3. 影响帧率的因素:
    1. 渲染时间
    2. 每帧代码执行时间
  • 游戏性能因素之二:CPU

  1. 一直以来备受关注的数据,对帧率有直接影响。
  2. 影响CPU的因素:
    1. 大量元件
    2. 各种复杂的计算、处理
    3. 动画等一切能引发重绘的内容
  • 游戏性能因素之三:内存

  1. 高内存容易引发频繁GC,导致游戏出现卡顿现象。
  2. 内存过高的因素:
    1. 代码问题导致实例未释放
    2. 资源管理不当,特别在使用了位图后

Flash游戏优化基本原则

  1. 使用性能监控工具找出最影响性能的部份并优化
    尽量构建与线上相同的测试环境
  2. 在优化后一定要再次使用监控工具检查优化结果
  3. 二八原则,软件运行的典型情况:20%的程序占用80%的执行时间,优化重点是这20%

如何优化Flash游戏

Flash游戏优化的主要工作是对内存、CPU、帧率不断改进的过程,其中帧率最为关键。

下面将分别对三个性能因素进行分析

优化Flash游戏性能—内存

  1. 内存在性能上的影响不是很明显,比较好控制但也容易出问题,保持良好的编程习惯是控制内存增长的有效方法。
  2. 低内存有助于CPU优化,常见做法是空间换时间
  • 降低内存的做法:

  1. 对象用完后一定要销毁

    1. 删除事件
    2. 清除引用
  2. 使用子域加载临时资源
    1. 使用子域的前提是:保证所有不使用的对象被销毁,否则只会适得其反导致内存更快增加
    2. 不要将不相关或生命周期不同的资源放入同一子域,任何一个对象不能销毁,都会导致整个子域不能被释放
    3. 实际上Flash已经提供最佳方案:下载时默认将每个文件加载到一个独立的子域,项目中因为嫌编码麻烦被强制加载到主域

优化Flash游戏性能—CPU

CPU使用情况对游戏性能有直接的影响,我们一直在努力降低CPU的消耗,正因如此也进入了某些误区。

下面将对影响CPU的两个主要因素做优化:

  • CPU优化—大量元件

  1. 舞台上元件数越多,CPU的消耗越高
    1. 不可见的元件同样存在消耗
    2. 静止的内容也会因为其他元件的重绘产生消耗
  2. 重绘区域
    1. 叠加对象的重绘区域能够合成一个更大区域,这将导致更多不需要处理的内容发生重绘
    2. Flash最多同时支持3个重绘区域,超出时会被合并产生更大的重绘区域
  • CPU优化—动画

  1. 明确美术制做规范并严格要求,尽量避免美术元件中以下内容的出现
    1. 滤镜、透明、显示样式、混合模式
    2. 过多的子元件、嵌套动画
    3. 对元件进行缩放,比较常见的小图大画
    4. 补间动画
    5. 遮罩
  2. 使用cacheAsBitmap
    1. 从策略上使用“缓存为位图”,将复杂图形、文件本“缓存为位图”能有效的降低CPU消耗,提高游戏性能
    2. 不要对动画使用,当元件内容、大小发生改变时Flash需要重新生成内部位图,反而增加CPU消耗
    3. cacheAsBitmap不会导致生成的swf文件增加,在性能上却能带来良好的提升,能够满足大部份性能要求,虽然比直接使用位图资源要差一点。
  3. 使用位图资源
    1. Flash的位图渲染非常快,能大幅降低CPU消耗,提升游戏性能
    2. 尽量避免使用MovieClip,采用位图替代
      1. 将动画转换为一组位图,通过不停的更换bitmapData实现动画播放
    3. 问题:文件、内存增加
      1. 文件增加是不可避免的,在允许的情况下采用更低品质能有效减小文件。
      2. 内存增加并非绝对,而且很多内容只是临时使用会很快被释放,短时间内的内存增加不会有明显的性能影响。
      3. 某些情况下美术提供的矢量图资源生成的文件和位图资源的相差不大,可以优先采用位图
  4. CPU优化—复杂计算

    因为动画占用的比重太大,算法优化对Flash的CPU影响很不明显,但采用执行效率高的处理方式也很重要

  5. 优化的误区:低CPU就是高性能

    常见表现:

CPU不高但帧率低或不稳定

原因

1、不合理的资源管理

某些操作执行时间过长:构造大型元件、耗时的计算过程

2、渲染时间过长也会出现CPU低但帧率达不到要求

优化Flash游戏性能—帧率

帧率的变化对游戏体验有着直接的影响

以每秒25帧为例,平均第帧40ms,如果超出该时间会导致帧率不稳定或下降,进而引起游戏不流畅甚至画面卡顿。

  1. 如何控制帧时间

    1. 算法优化,尽量减少执行时间
    2. 时间片
      1. 某些处理确实很费时也很耗CPU,可以将这个处理分散成更小的过程,每帧执行一部份
      2. 控制每帧的处理量,使执行时间在40ms以内,剩下的在下一帧继续处理
      3. 问题:代码变得复杂
  2. 除了代码执行时间还要考虑渲染时间,当舞台上大量显示元素时,渲染也很费时

    1. 优化渲染方式:使用位图
    2. 新的内容
      1. 位块传输(Blitting)
      2. 不被看好的Stage3D,但可以用来做2D图形加速

其他:

  • 发布选项

  1. 文件的发布参数对游戏性能也有直接的影响

将播放器版本设置在10以上(使用FlashCS3制做的文件默认为9) ,Flash10相对9有很多改进的地方:

      1. 位图重用
      2. MovieClip跳帧机制
    1. 关闭调试、省略trace
时间: 2024-11-07 09:07:57

Flash性能——游戏性能优化的相关文章

优化手机游戏性能,美术相关

何时选择3D(何时保留2D) 作为一个3d游戏美术,我得到的第一个关键教训就是,让所有的东西尽可能的保持低模--不要使用额外的不必要的顶点,如果你确实要让你的模型拥有精度,把它放置在贴图中.比如说,我们的建筑物都是用简单的方块创建而成,然后贴上带有质感的细节纹理. 当我们要为Vogel教授(它只在我们游戏的GUI和HUD中出现)建模时,首先尝试的是3D模型,但是最终,我们还是把它分解为像Flash中那样的多层2D平面.它运行非常流畅,看上去也更棒,事实最终的结果比用3D模型赞非常多!使用带有动画

Cocos2d-x游戏性能优化分享大赛 奖最新出版《我所理解的Cocos2d-x》

由于移动平台的硬件性能及移动网络限制,以及便携设备耗电的特征,对移动平台游戏进行性能优化至关重要,从应用程序包的大小,到应用程序运行时期的内存占用,应用程序计算导致的耗电大小等,都能对移动游戏的优化带来很大的改善. 征文主题: 1,提供一些自己工作中实践的一些对游戏进行性能优化的方案,例如减少纹理占用内存,减少算法复杂度,减少耗电量等均可. 2,从OpenGL ES渲染管线等角度思考我们可以怎样更好地优化我们的应用程序,例如减少DrawCall等.

优化SpriteKit游戏性能的15条建议

本文翻译自 15 tips to optimize your SpriteKit game SpriteKit是一个简单快速的二维游戏框架,由苹果自己的媒体库支持,可以直接访问GPU. 但是随着游戏的编写,可能会发现帧率开始下降,而且对于iPad Pro这样拥有120Hz刷新率显示屏的设备,需要努力将每一帧更新时间控制在8毫秒之内. 如果遇到帧率低.动画不稳定或类似的性能问题,可以通过一下15个优化方法来识别和解决问题,而且有少量代码示意. 使用纹理图集时要谨慎 纹理地图集将多个单独的资源放置在

4种方法提高你的Unity游戏性能

这是原文 手机游戏的性能异常重要,特别是对于快节奏的动作游戏.你可能知道,我们现在在做一款安卓/IOS平台的弹球游戏,他的特点是在一个3D世界中迅速的物理引擎结合完整的角色动画,任何弹球游戏需要60fps的性能,为了实现它我们需要一点一滴地压榨设备CPU. 所以,我们面对的挑战是,如何在至少60fps的情况下保证游戏运行流畅.只要降低到60fps以下将会减少一半的帧率!60fps-30fps之间切换意味着一个严重的hick-up.而且如果频繁发生将会带来不好的游戏体验. 极限情况,我们想要支持最

Linux游戏性能再获提升

导读 谈到Linux操作系统,对其有了解的朋友就会知道Linux在服务器.超级计算机等领域表现出色,但在个人电脑领域就远远不如Windows. 尽管近年来Linux的PC系统图形界面越做越好,甚至国内也出现了不少简单易用的国产Linux,但游戏依然是其短板.不过,如今在多方的努力下,Linux的游戏也可能很快就要崛起了. Linux 就在前些天,全球知名的游戏厂商V社(Valve)就提出要对Linux内核进行修改,以提升其游戏性能,而且还率先在自己的产品作出了相应的改进.多年来,V社一直为了丰富

SqlServer性能检测和优化工具使用详细

原文:SqlServer性能检测和优化工具使用详细 工具概要 如果你的数据库应用系统中,存在有大量表,视图,索引,触发器,函数,存储过程,sql语句等等,又性能低下,而苦逼的你又要对其优化,那么你该怎么办?哥教你,首先你要知道问题出在哪里?如果想知道问题出在哪里,并且找到他,咱们可以借助本文中要讲述的性能检测工具--sql server profiler(处在sql安装文件--性能工具--sql server profiler) 如果知道啦问题出现在哪里,如果你又是绝世高手,当然可以直中要害,写

Swift 性能探索和优化分析

Swift 性能探索和优化分析 Apple 在推出 Swift 时就将其冠以先进,安全和高效的新一代编程语言之名.前两点在 Swift 的语法和语言特性中已经表现得淋漓尽致:像是尾随闭包,枚举关联值,可选值和强制的类型安全等都是 Swift 显而易见的优点.但是对于高效一点,就没有那么明显了.在 2014 年 WWDC 大会上 Apple 宣称 Swift 具有超越 Objective-C 的性能,甚至某些情况下可以媲美和超过 C.但是在 Swift 正式发布后,很多开发者发现似乎 Swift

linux服务器的性能分析与优化(十三)

[教程主题]:1.linux服务器的性能分析与优化 [主要内容] [1]影响Linux服务器性能的因素 操作系统级 Ø CPU 目前大部分CPU在同一时间只能运行一个线程,超线程的处理器可以在同一时间处理多个线程,因此可以利用超线程特性提高系统性能. 在linux系统下只有运行SMP内核才能支持超线程,但是安装的CPu数量越多,从超线程获得的性能提升越少. 另外linux内核会将多核的处理器当做多个单独的CPU来识别,例如,两个4核的CPU会被当成8个单个CPU,从性能角度讲,两个4核的CPU整

1.linux服务器的性能分析与优化

[教程主题]:1.linux服务器的性能分析与优化 [课程录制]: 创E [主要内容] [1]影响Linux服务器性能的因素 操作系统级 CPU 目前大部分CPU在同一时间只能运行一个线程,超线程的处理器可以在同一时间处理多个线程,因此可以利用超线程特性提高系统性能. 在linux系统下只有运行SMP内核才能支持超线程,但是安装的CPu数量越多,从超线程获得的性能提升越少. 另外linux内核会将多核的处理器当做多个单独的CPU来识别,例如,两个4核的CPU会被当成8个单个CPU,从性能角度讲,