`
java-mans
  • 浏览: 11457609 次
文章分类
社区版块
存档分类
最新评论

游戏性能优化特殊案例

 
阅读更多

声明:

一不小心使用了QQ的图标,希望不会惹到什么麻烦!

当然,绝不会使用qq图标作为具有商业用途的素材图片,这里仅用于讨论学术!!

在纠结一个问题,某之游戏应该采用怎样一个方案才能进一步提升效率

关卡文件是我自定义的xml文件,之前我想过将该文件持久化以提升效率(读取的时候直接将文件内容读成对象)

不过鉴于objective-c持久化的自动程度完全不能与java相比,于是我便放弃了,其实也提升不了多少效率

我也意识到这是我的一个缺陷,这本是微不足道的,但是我却吹毛求疵,不可谓不能称之捡了芝麻丢了西瓜

但是,人总是有一个目标,比如说,我就喜欢追求完美,虽然不能做到极致,但我一直向着这么目标而努力,不断的项目标靠近

这不,我又发现了一个可以挖掘的点,如下:

游戏地图背景是一张很大的图片,这张图片是我依据自制的地图编辑器描点而成



编辑完毕之后,会生成一个xml文件,这个文件保存了所有的描点数据

然后我再在游戏里面通过一个特定的关卡解析模块来完成对xml文件的解读

读取完毕之后,能够使用这些数据来生成游戏中的地图背景图片,以及相应的box2d body,游戏效果如下


岩石的纹理表示了静止不可动的山体,是具有box2d 静态物体碰撞骨骼的

看到岩石外围那一圈黑边了吗?这圈黑边耗费了我很多的精力

这些复杂的多边形本来是由简单的凸多边形拼接合成的

如果不处理而希望整个复杂多变形外围添加上一圈黑边的话,这是不可能的!

因为由简单凸多边形组成的复杂多变性内部会出现黑线,这样严重影响到了游戏ui的美观


但是如果去掉了复杂多变形的外部黑边,游戏的界面效果也会大打折扣(锯齿效果严重,切割间隙不突出)~

源自冰块可被切割的特性以及抗锯齿的表现不力,就因为抗锯齿这块我不知道如何处理,导致只能舍弃3代的市场



所以说,我既想保留外部黑边又想去除内部黑线,这是一个让我非常蛋疼的问题

想了好几天,得出一套方案,能够大部分的解决内部黑线的问题,但是还是有不完美的地方,偶尔内部黑线还是会冒出来~



说到这里,还没有走入正题,这是我的老毛病了,不过我打紧,我主要还是写给我自己看~

山体图片是由xml数据+CCRenderTexture即时渲染出来的,消除内部黑线这个方法个人认为效率还是比较低的

我并不想玩家每次在进行游戏的开始,都要做一个这样的耗费

所以我想,由于每个关卡刚开始的时候画面都是 一致的,我何不将山体纹理导出为图片保存起来呢?

倒时候直接拿来使用就是了,这不很方便么?

天从人愿,我找到了解决方案,CCRenderTexture本身就提供一个这样的方法谓之saveBuffer

说实话我开心了两天,因为我确实能将即时渲染出来的山体纹理保存成图片了,这样无疑降低了cpu的负荷

但是,经过我的仔细观察和深入思考,发现有不妥的地方:

1。生成出来的山体图片必须是png格式的,但是png格式的图片和jpg格式的图片体积相差太大了!!


换句话说,我如果用增大游戏体积的方法来降低游戏对cpu的耗费,如果游戏关卡为40关,

那么40张山体png图片的大小合计下来就是12M

(每张300kB肯定是少算了的,因为我有意将最大地图的分辨率提升到1920*1280,也就retina所支持的极限)

12M,整整12M,可有可无的12M!!! 据我的伙计说,app的大小一旦超过20MB,就无法实现无线下载安装

当然我也仅仅只是听说,不过本着宁可信其有的心态,这不是一件好事情!!

况且山体图片如此做了之后,我肯定会尝试将 每关1-6张的冰块图片亦如法炮制

有言opengl从硬盘里读取一张大图片的效率要比读取多张小图片的效率高很多

因此,我又要将1-6张小图片拼凑到一张大图片上面(Zwoptex,CCSpriteBatchNode,你懂的),这些都是要手工来完成的

这样就太麻烦了,而且又要再一次增大游戏安装包的体积,实乃得不偿失!!

不过提升性能的方案还是存在的,可以修改描点工具,在生成关卡文件的过程中就完成消除内部黑边的步骤

这样在游戏过程中就可以将这一步给节省掉了,ok,这就是我接下来要完成的工作了!!

分享到:
评论

相关推荐

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    第15章 RAC稳定性与性能优化 15.1服务器硬件 15.1.1 Firmware固件升级 15.1.2硬件设备兼容性 15.1.3 FC HBA卡冗余 15.1.4 Infiniband技术 15.1.5 RAC硬件结构案例 15.2操作系统 15.2.1认证操作系统 15.2.2...

    高性能MySQL(第3版).part2

    3.1性能优化简介67 3.1.1通过性能剖析进行优化69 3.1.2理解性能剖析71 3.2对应用程序进行性能剖析72 3.2.1测量PHP应用程序74 3.3剖析MySQL查询77 3.3.1剖析服务器负载77 3.3.2剖析单条查询81 3.3.3使用性能...

    MySQL管理之道 性能调优、高可用与监控.part2.rar

    第二部分 故障诊断与性能优化篇 第3章 故障诊断 72 3.1 影响mysql性能的因素 72 3.2 系统性能评估标准 73 3.2.1 影响linux服务器性能的因素 73 3.2.2 系统性能评估指标 74 3.2.3 开源监控和评估工具介绍 76 ...

    饥饿游戏搜索(HGS):迈向性能转变:提出了一种新颖的算法(HGS),用于在现实世界中进行全局搜索和优化。 访问文件:https://aliasgharheidari.com/HGS.html-matlab开发

    为了使优化社区朝着更加注重性能而不是隐喻变化的方向前进,本研究提出了一种通用的基于总体的优化技术,称为“饥饿游戏搜索”(HGS),该技术结构简单,具有特殊的稳定性且非常实用。竞争绩效,以更有效地实现约束...

    2021 云和恩墨大讲堂PPT汇总(50份).zip

    经典知识库:性能优化那些事 经典知识库:ASM元数据简介及案例分享 经典知识库:MGR原理介绍与案例分享 经典知识库:MySQL常用运维工具小妙招集锦 经典知识库:MySQL故障诊断常用方法手册 经典知识库:Oracle 19c ...

    Linux高性能服务器编程

    第三部分从侧重实战的角度讲解了高性能服务器的优化与监测,包含服务器的调制、调试和测试,以及各种实用系统监测工具的使用等内容。本书另外免费赠送一个负载均衡服务器程序的完整实际项目的源代码!作者简介游 双...

    深入解析OracleDBA入门进阶与诊断案例 4/4

    针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手...

    深入解析OracleDBA入门进阶与诊断案例 3/4

    针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手...

    深入解析OracleDBA入门进阶与诊断案例 2/4

    针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手...

    大数据分析的分布式MOLAP技术

    述了 DOLAP 在科学数据分析的应用案例,并与主流的非关系数据库系统进行性能对比.实验结果表明,尽管数据装 载性能略显不足,但DOLAP的性能要优于基于HBase,Hive,HadoopDB,OLAP4Cloud等主流非关系数据库系统实现 的 ...

    软件测试技术与实践培训班

    脚本调试技术 测试工具配置技巧 特殊的测试类型等 第三天 性能测试技术(二) 性能测试、故障诊断与性能调优 性能测试 故障诊断 性能调优 软件平台性能测试与故障诊断 操作系统性能测试与故障诊断 数据库性能知识、...

    Sybase IQ助力海尔综合决策分析案例

    Sybase IQ是专门为数据仓库系统设计的一种存储和管理的数据库,它包含了许多特殊的技术以专门满足数据仓库应用的需求,Sybase IQ突破了传统技术的很多限制,与普通的关系型数据库比较,有许多性能和应用上的优势。...

    深入解析Oracle.DBA入门进阶与诊断案例

    针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手...

    全球城市数据表和json数据

    正确的创建和使用索引是实现高性能查询的基础。高效的选择和使用索引有很多方式,其中有些是针对特殊案例的优化方法,有些则是针对特定行为的优化

    《Android应用开发实战》源码

    本书将基于最新版的Android撰写,作者不仅有丰富的Android开发经验,而且也有这方面的专著出版,销量和...高级篇讲解了网络通信、多线程、2D/3D动画、特殊输入和输出、性能优化等高级内容,使全书的内容得到了升华。

    ESM_ArcSight控制台用户指南(中文翻译版—Zephyr)_6.11.0 .pdf

    优化频道性能的最佳做法 188 活动频道查询时间范围 189 活动频道筛选 189 筛选索引字段 189 在联接字段上进行筛选 189 持续更新时间参数 189 结束时间或管理器接收时间 189 在活动频道中排序 190 使用标准内容中的...

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    《深入云计算(MongoDB管理与开发实战详解)》系统全面的介绍了MongoDB开发、管理、维护和性能优化等方方面面。详细而深入,对MongoDB的开发和管理方法进行了详细的讲解,也对MongoDB的工作机制进行了深入的探讨。注重...

    深入云计算 MongoDB管理与开发实战详解pdf.part2

    《深入云计算(MongoDB管理与开发实战详解)》系统全面的介绍了MongoDB开发、管理、维护和性能优化等方方面面。详细而深入,对MongoDB的开发和管理方法进行了详细的讲解,也对MongoDB的工作机制进行了深入的探讨。注重...

    jQuery权威指南-源代码

    内容全面、丰富、翔实,不仅由浅入深地讲解了jQuery的所有必备基础知识,还介绍了jQuery UI等扩展知识以及jQuery开发中的技巧与性能优化方面的高级知识。 本书极其注重实战,因为动手实践才是掌握一门新技术的最...

    jQuery权威指南366页完整版pdf和源码打包

    9.5.1 需求分析 9.5.2 效果界面 9.5.3 功能实现 9.5.4 代码分析 9.6 本章小结 第10章 jquery性能优化与最佳实践 10.1 优化选择器执行的速度 10.1.1 优先使用id与标记选择器 10.1.2 使用jquery对象...

Global site tag (gtag.js) - Google Analytics