Android游戏开发中的优化策略

2023-11-03

绘图优化:

  1、脏矩形:每次都重绘整个背景图,其实是非常浪费的,前后两帧的图其实只有很少的一部发生了变化,因此可以只重绘变化的部分。这是一种常用的绘图优化方式,需要注意的是,android用了双缓冲,也就是说,使用脏矩形的时候,需要连续绘制两次才能完成对surface的刷新。

  2、卷屏:这是常用的一种方法,缓存整张背景图,抽象出一个可视窗口,仅显示窗口中的内容,窗口的移动方向与sprite相同,与背景运动方向相反。android游戏背景图的分辨率一般与屏幕的相同,这种方法很少会被用到。

  引擎优化:

  1、流水作业化资源:简单来说,就是整合资源,不用的资源就及时释放,需要用到的资源再加载,类似流水线生产过程。比如,游戏加载过程中,当前关卡(场景、模式等等)使用不到的音乐或者图像资源就全部释放,仅加载需要用的资源;用不到的线程,不要让它休眠,一定要把它干掉;如果有的资源只用得到一部分,那么就拆解开来,仅加载需要的部分。

  2、状态转移逻辑:游戏开发前一定要想清楚状态转移,冗余的状态变化将损耗框架的整体性能,对游戏流畅性的影响以及后期修改的成本往往是远远超出预期的。不要怕费力,一定要认真优化状态转移过程。此外,activity之间切换、ui线程和游戏线程之间的切换,都是非常花费时间的,应该尽力避免。

  游戏逻辑优化:

  1、预处理:尽可能地预处理游戏逻辑中的运算。比如游戏中经常要用到随机数,就应该在游戏开始之前,生成足够的随机数供游戏逻辑调用,千万避免使用系统自身的rand()函数。这种优化方式难度比较大,但是往往是突破瓶颈的最有效手段。

  2、算法优化:这个没有什么好多说的,算法功底和经验积累很重要,单干搞不定的,赶快找同事帮忙。

  3、语法优化:语法对运行速度也有很大影响,比如for循环,不同的写法,时间开销差别极大


更多信息请访问:http://www.orietech.com

ORIEtech英文博客:http://orietech.wordpress.com

新浪微博:西安欧锐信息科技

腾讯微博:西安欧锐信息科技



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android游戏开发中的优化策略 的相关文章

随机推荐

  • Java技术之AQS详解

    AbstractQueuedSynchronizer 简写为AQS 抽象队列同步器 它是一个用于构建锁和同步器的框架 许多同步器都可以通过AQS很容易并且高效的构造出来 以下都是通过AQS构造出来的 ReentrantLock Reentr
  • MATLAB NAN或INF无效点去除 (14)

    MATLAB NAN或INF无效点去除 14 一 算法介绍 二 算法实现 1 代码 含注释说明 2 效果 无效点去除前后点坐标展示 一 算法介绍 仅就一般情况来说 激光点云受到测量影响 可能会产生无效点 即坐标值为NAN或者INF等 这种点
  • 解决npm install安装node-sass包容易失败的问题 (Error: Cannot find module ‘node-sass‘)

    解决npm install安装node sass包容易失败的问题 Error Cannot find module node sass 问题与原因 解决方法一 手动下载binding node文件 解决方法二 设置环境变量安装 解决方法三
  • M1-Mac Qt5 CMakeLists.txt

    Project Config Begin cmake minimum required VERSION 3 17 project untitled CXX set CMAKE CXX STANDARD REQUIRED ON set CMA
  • Python3.5 中plt无法画出图像

    第一 sudo apt get install tk dev 正在读取状态信息 完成 将会同时安装下列软件 libfontconfig1 dev libfreetype6 dev libice dev libpng12 dev libpth
  • python 日期/时间模块

    文章目录 1 python中datetime模块中strftime strptime函数 2 str date以及datetime之间的相互转化 2 1 date和datetime以及time的区别和介绍 2 2 相互转化 3 实例 3 1
  • eclipse导入SpringBoot项目

    有时候会拿到别人现成的 springboot 项目 而不是从头自己做一个 这个时候 就需要用导入的方式来 import 这么一个项目了 本教程讲解如何用 eclipse 来导入 Eclipse 导入Springboot 项目办法 1 菜单
  • spring源码--05--IOC原理--FileSystemXmlApplicationContext(IOC容器)的初始化(细)

    spring 05 IOC原理 FileSystemXmlApplicationContext IOC容器 的初始化 细 1 验证过程 代码地址 https gitee com DanShenGuiZu learnDemo tree mas
  • Pseudoprime numbers(快速幂模板题)

    Fermat s theorem states that for any prime number p and for any integer a gt 1 ap a mod p That is if we raise a to the p
  • Torrent Scanner插件导致网站重复登录

    Torrent Scanner插件导致网站重复登录 网站登录成功后随便点击任意按钮 又重复跳回登录页面 可能原因是cookie的问题 不过博主遇到的是Torrent Scanner插件导致重复登录 解决方法 直接卸载或停止Torrent S
  • sigmoid和tanh求导的特殊技巧

    1 sigmoid 函数 f z 1 1 exp z 导数 f z f z 1 f z 2 tanh 函数 f z tanh z 导数 f z 1 f z 2
  • 『力扣每日一题08』验证回文串

    一 题目 如果在将所有大写字符转换为小写字符 并移除所有非字母数字字符之后 短语正着读和反着读都一样 则可以认为该短语是一个 回文串 字母和数字都属于字母数字字符 给你一个字符串 s 如果它是 回文串 返回 true 否则 返回 false
  • pycharm界面无法正常弹出

    方法二 快捷键打开 将鼠标放在任务栏上 选中Pycharm图标 采用软件最大化快捷键alt 空格 X即可 或者alt 空格 在弹出窗口的选项中选择最大化
  • Shell中各种括号的作用:()、(())、[]、[[]]、{}、>、>>、$()、${}

    字符串比较 str1 str2 检查str1是否和str2相同 str1 str2 检查str1是否和str2不同 str1 lt str2 检查str1是否和str2小 str1 gt str2 检查str1是否和str2大 n str1
  • 使用idea时,光标变成了不能按空格键,只能修改的vim格式,怎么切换回正常光标

    情况1 你可能不小心启用了 IntelliJ IDEA 中的 Vim 插件 你可以尝试以下步骤来禁用它 在 IntelliJ IDEA 中 选择 File gt Settings 如果你在 macOS 上 选择 IntelliJ IDEA
  • 《计算机视觉中的多视图几何》笔记(3)

    3 Projective Geometry and Transformations of 3D 这章主要讲的是3D的射影几何 与2D的射影几何差不多 主要区别是 3D射影几何对偶的是点和平面 直线是自对偶的 3D空间中直线有4个自由度 这一
  • CTF—Python爬虫-WEB目录爆破和指纹识别

    编写自己的web目录爆破脚本 首先我们要准备一个字典 用来爆破web目录 而且为了使扫描效果好一点 这个字典里面的内容几乎都是dedecms可能的目录 其实要实现这个功能 原理很简单 只用读取字典文件中的每一项 与访问的url拼接成一个新的
  • ObiRope的一些笔记

    之前用ObiRope做的两个小功能 分别是绳子剪裁以及绳子拖拽 但是项目没做完 公司黄了 记录一下相关的笔记 ObiRope下载 链接 https pan baidu com s 1D6330eonD4SALxTOJ2a bg 提取码 hg
  • 获取网络,本地连接的具体名称(Friendly Name)

    工作需要 程序需要 以下代码可以得到 本地连接的具体名称 在VC 6 0下需安装sdk 添加 以下代码 include
  • Android游戏开发中的优化策略

    绘图优化 1 脏矩形 每次都重绘整个背景图 其实是非常浪费的 前后两帧的图其实只有很少的一部发生了变化 因此可以只重绘变化的部分 这是一种常用的绘图优化方式 需要注意的是 android用了双缓冲 也就是说 使用脏矩形的时候 需要连续绘制两