博客导读网

一个让你随便看看的地方

案例研究:使用英特尔GPA优化《兵王》游戏的性能

推荐
中文

作者:英特尔:卢卷彬, Kiefer Kuah 巨人:余娜娜 下载PDF版本:使用英特尔GPA优化《兵王》游戏的性能 1. 介绍 《兵王》是由巨人网络公司旗下,上海巨贤公司耗时两年自主研发的一款未来战争MMORGP。《兵王》使用了优秀的3D引擎技术,在声光特效方面有极其优秀的表现。为了使《兵王》能够流畅的运行在更多玩家的机器上,我们在英特尔 集成显卡上对游戏进行了优化。英特尔集成显卡的出货量非常大,超过了60%(Q3’2011, Jon Peddie Research统计),其性能和特性也日益增强,是游戏开发者应该重点关注的对象。为了帮助游戏开发者在英特尔集成显卡上优化游戏性能,英特尔推出了一款出色的免费的性能分析工具,英特尔图形性能分析器(Graphics Performance Analyzers, 简称GPA),不用修改游戏的代码,不用安装特殊的驱动版本就能够使用。游戏开发者可以利用这个工具清晰的了解自己的游戏在什么地方耗费了更多的时间,以进行有针对性的优化。GPA是我们在这次优化中使用的主要工具。 2. 优化准备 以下的分析和优化基于Intel HD Graphics 3000硬件平台,代号Sandybridge(简称SNB),SNB拥有出色的图形性能,完全可以满足绝大多数网络游戏对性能的需求。我们使用的操作系统为Windows 7, 64位版本,GPA版本为4.2。 关于优化场景的选择,《兵王》支持大规模的群体作战,开发者对这种场景下的游戏性能特别关注,所以我们选择的是以下的一个群体战斗场景,其中有~100个玩家,并且有大量的武器和技能特效,游戏的性能在这个时候遇到很大的挑战,只有10fps左右,如图1所示: 图1,性能分析和优化的目标场景,有~100个玩家和坐骑,大量的技能特效,fps为10左右 3. GPA系统分析器HUD GPA HUD可以从平台的角度分析游戏的性能,它提供了超过80个关于CPU,D3D runtime和GPU的性能指标,以及Null Hardware,Disable all draw calls, 1x1 ScissorRect, 2x2 Texture,Simple Pixel Shader等覆盖模式,收集这些性能指标和覆盖模式得到的数据,可以帮助我们分析出游戏的瓶颈所在。使用GPA HUD分析游戏的这个场景后我们得到以下的结果: 游戏在该场景下,FPS只能维持在10左右,此时的Null Hardware 和Null Driver覆盖模式分别只能达到14fps和20fps左右,也就是说显卡无限快的时候,游戏也只能跑到14fps,因此游戏在CPU上的性能消耗非常大。游戏有7800多个draw calls,这个一个非常大的数字。大量的draw calls,会导致游戏程序,D3D runtime以及显卡驱动等这些CPU上的计算量增加,由此导致性能非常的低。所以,游戏在这个场景中的优化重点,应该是合并小的画图操作,减少draw calls和State Changes的数量,这样可以同时减少CPU和GPU上的负担。 4. GPA帧分析器 GPA可以抓取游戏的一帧数据,然后使用帧分析器进行离线的详细分析。帧分析器打开一帧的过程,就相当于是重新发送指令让GPU渲染出这一帧。帧分析器界面主要包含上部分的柱状图(A),它们代表的是游戏中按照调用顺序排列的Clear, Draw Primitive,StretchRect等,我们统称为ergs,可以通过设置X轴和Y轴来快速的定位最耗时的调用,比如X轴设为GPU [...]
原文地址:http://software.intel.com/zh-cn/blogs/2012/01/06/gpa-3/

中文的其他文章
通过FFTW Wrapper 使用 MKL DFT 函数 Linux 多线程函数解析
游戏里实现碰撞检测方法 在 Win32 下用 C++ 实现多线程读写锁
如何用 VC++ 编写 MIDI 文件播放程序 移动Web应用程序开发 HTML5篇 (一) HTML5简介
快速使用PTU工具得到函数调用次数 Tizen SDK Intro (2) – 安装
移动Web应用程序开发 HTML5篇 (二) 新功能介绍和测试 移动Web应用程序开发HTML5篇 (三) Canvas API
更多...

© 2010 博客导读网 BlogABC.NET 本站所有内容皆由网友推荐而来,所有博文的版权归原作者所有,如有冒犯,请邮件告知。uncracker#gmail.com