游戏优化

来源:互联网 发布:陈柏霖人品好吗 知乎 编辑:程序博客网 时间:2024/04/30 13:07
今天,静下心来进行了传说中的游戏性能优化,由于前些日子进行的优化都是基于资源方面的,该做的已经都做了,所以今天就在代码以及游戏性方面进行着力。
 
所谓的游戏性方面,是指在游戏的过程中,将那些内存消耗较大,比较费时的操作进行替代。尽可能地增加效率。
拿sexyapp的框架来说,里面的drawimage的性能会比drawimagemirror的性能高上好多。
 
资源整合:
            将用到的公共资源进行整合。所有的资源按照类型存放在系统统一的管理组里面,及时存储及时释放。尽可能地减少资源组空间的浪费。
 
至于代码方面,还没有完全优化好,等明天优化好了,我会继续出游戏优化的心得。
 
我觉得代码方面还是要多写多思考,才能有所得,写代码是件快乐的事,只要你喜欢写代码的话!

=====================================
本帖子结合了一些帖子以及个人心得总结的,可能对于各个不同的游戏来讲,会有不同的理解。
首先来说说那个帖子里面从个人的角度讲能够理解到的东西。
首先来说说C++游戏优化的两个误区。
1.如果优化确实对游戏的效率有效,那么就值得在效率上花时间。否则没得必要。
2.优化要慎重,不能优化过了头,或者主观认为可能提高效率。在写代码的过程中可以积累慢慢经验。
还有几点比较好的习惯:
1.除非必要,否则不构造
2.代码要执行的很快?执行最快的代码是“没有代码”。这句话是什么意思呢?就是说不要在一段代码有可能用不到的情况下就执行这段代码。比如先创建一个对象,然后在对象实用之前,由于某个条件不符合而return了,那么上面的创建的对象纯属于浪费时间空间。
3.不要在循环中定义复杂的变量。不然每个循环都要付出构造的代价,很不值当。可以在循环外构造一次,然后传递引用进去。
4.前自增比后自增更有效率。因为不要保留自己的拷贝。
5.不要使用具有返回值的操作符。+=除外。
6.内存管理:
C++可以通过构造临时对象和成员变量来隐式地分配内存。有一个比较好的方法是一旦游戏开始了就不要再分配内存。或者可以一下子管理一个比较大的内存空间。定期释放这一段内存空间。
 
以上就是看别人的经验学来的东西。接下来的我会根据我自己的经验来讲下游戏优化的心得。

=================
粗糙了些,毕竟开发游戏这才是第一个。希望大家多多指正。
 
1.资源。把握好资源关是非常重要的。在有些场景里面,可能图片不需要做闪烁等特效,就无须将图片分割成很多元件进行处理。可以将图片直接做成一张整图。避免加载资源的消耗,再说了,很多图片也很占用内存。
2.不要在游戏中实时释放内存。构造对象、析构对象很占用资源。
3.将共性的东西抽出来,对资源来讲,如果一个资源可能被很多的地方用到,那么做一个系统管理的资源组,通过系统管理这些资源,避免重复的使用。
4.不再使用的临时对象要注意释放,在现代的机器中,3中所讲的实时创建能避免当然好,避免不了也不是不可以。但是要注意不再使用的临时对象一定要及时释放,不然会造成很大的资源浪费。
对于指针临时对象来讲,千万不要使用简单的=NULL。这样子指针是Null,但是内存并没有释放。
5.带着上一篇帖子的基本概念去写程序。
在看上一篇帖子的东西之前,我写C++很随意,在看了之后,我就会时时刻刻注意我的代码是不是最优的。
 
可能还有一些遗忘,等我想到了我再补充上来,有兴趣的朋友可以一起来交流,共同提高。


=============
昨天写了一篇C++优化的个人心得,今天游戏的测试结果出来了。
帧率还是8,9,帧的样子,对游戏性能没有很大的提升。
于是,就可以下结论:游戏的渲染,在这个游戏下面对游戏性能影响不是很大的。
 
导致游戏帧数这么低,是由于每一个逻辑帧中计算的东西太多了。
 
这就涉及到游戏过程中实时的计算优化。
一个有效地方法是将逻辑帧降低,系统时间步增长,保证足够的计算时间。
 
下午准备这么试下。到时再看结果。

原创粉丝点击