年底总结之六:洗心革面终点站,深度优化之君子善假于物

游戏画面很棒,可玩性也不错,但是这时却发现大部分机器跑起来都不到30帧。相信很多公司都遇到过这种尴尬的情景。偶的上家公司很大程度上就是死在性能上。那么既然优化这么重要,为什么不一开始就重视起来呢。哈哈,不是不重视,原因有很多种,下面列举一些:

 

1、由于进度鸭梨太大,程序们来睡觉的时间都没有,优化见鬼去吧,先把功能实现吧。

2、美术与程序的较力,美术经常在不知不觉中添加N个能突出场景画面的粒子特效等程序无法忍受的东东。

3、引擎本身的承载鸭梨不够。

 

相信很多人都遇到过上面的情况。引擎架构就这样,时间就几个月,美术就这水平,策划就是这样要求。请问各位看官,这时老大把你叫到小黑屋跟你说“这次测试后,反响不错,也发现咱们游戏现在的命门就是性能,不过我相信你的能力,你有信心在1个月搞定吗?”,相信各位都会跟我一样,咬咬牙,坚定的回答“没问题”,(鬼知道是否会不会搞的定),没办法,只能硬着头皮优化了。下面我给大家提供的方法,能用的用,不能用的欢迎拍砖。

 

1、针对明显的性能瓶颈进行重点突破,这个花的时间会最多,但是成效会最明显。我们的瓶颈就是地表渲染,我重写后能提高1/4的性能;

2、整理感觉有问题的代码,通常一定会有问题,也会有意想不到的收获。

 

3、开启NV pref,分析是CPU瓶颈还是GPU瓶颈(一般都是CPU的问题)。

 

4、语法级别的优化。

 

5、针对不同级别的显卡指定不同的策略。

 

下面我针对3提到的CPU瓶颈和GPU瓶颈进行重点分析:

 

CPU瓶颈几乎是100%会遇到的。可以使用  Intel  的 vTune (30天免费),或 AMD 的 CodeAnalysis(免费) 来分析具体哪些函数调用耗时,列出来一个优先级列表,然后一一搞定。

 

下面列为我们游戏当时的前几位的瓶颈:

 

1、地表渲染(CPU部分);

     重写地表渲染算法,重点在于减少dp和pass数目;

2、骨骼动画(CPU计算);

     把骨骼动画的计算改在VS中计算;

3、倒影;

     针对性地减小倒影范围;

4、memcpy;

     寻求快速内存拷贝算法;

5、sqrt;

     寻求更快的开平发算法。例,卡马克算法;

6、场景管理;

     实现四叉树管理;

 

GPU瓶颈,重点就是优化shader,尽量不要使用分支语法。

 

目前提到的都是在游戏开发后期的优化,虽然感觉挺简单的,但的确能起到一定的作用,不至于使游戏因为性能夭折。

 

但是敝人认为,上医治未病,如果我们能在开发早期就指定一个优化方案,那将会事半功倍。

 

可以分以下几个部分来制定:

 

1、引擎架构层的优化。前提是自己写引擎,或对引擎有超强的控制力。这部分可以参考NV的优化策略,及zbufferoptimizations和Real-Time Rending Pipeline Optimization等相关文章。

2、指定严格的代码规范,尽量避免性能差的代码;

3、指定美术模型标准,每个模型的面数范围,及同屏的面数范围;

4、针对不同配置的机器,提前设计不同的显示策略;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值