Zéi*_*ksz 15 c# performance xna xna-4.0
我正在使用C#2010和XNA 4.0编写游戏.我希望它是一个好游戏,而不是一些"只是另一个废话",所以我的目标之一是良好的帧率.为此,我想问你一些建议,无论是XNA相关还是C#相关 - 我能做些什么来加速我的代码,从而提高FPS.
这是我发现的一些东西:
arrayinsted list<>会大大提高性能,以防你想要访问大量数据(甚至很多:拥有20000个项目的数组给出了近200%的FPS列表的180%.for而不是foreach 将提高性能.在相同的20000元素上,它就像5-10%的差异.drawuserprimitives而不是Model上课.(不知道是否只有4.0,或者3.1也有这样的性能问题)好吧,所以长话短说,请在这里发表一些好的建议,这样我/我们就可以做出好的,快速的,优化的游戏;)
提前致谢:Zéiksz
软件优化是一种工艺.最好的优化类型是基于收集的统计数据的证据.
在你遇到问题之前不要优化.您是否认为游戏可玩性比此指标或其他指标更重要?我的建议是首先制作游戏,然后根据自己的喜好考虑它的表现.
然后发布一些具体问题,我相信你会在这里得到一些具体问题的帮助.
与此同时,我建议您从游戏开发书籍中获取更多信息,例如:http://forums.create.msdn.com/forums/p/8642/45646.aspx.
XNA Extereme 101 - 似乎是一个有趣的教程
我的2美分价值:
不要将所有代码放在一个方法中,因为您认为调用方法是成本.如果你通过调用一个空方法来考虑丢失1-3 FPS,你可能还没有完成对1-3损失的研究.因为在空方法调用期间失败是真的,你必须拥有数千万的FrameRate ....你不会在1-3左右的时候关注自己.
FPS是判断XNA性能的不好方法.如果启用了可变时间步,则涉及操作系统的其他进程可能会影响帧速率.你真的需要改为.只需通过使用System.Diagnostic.Stopwatch对象计时来完成更新和/或绘制方法所需的时间.他们单独计时,而不是在一起(非常重要).
'new'关键字不仅应该在绘制调用中避免,还应该在更新和绘制中的任何位置避免...仅限FOR引用类型.随时随地在值类型中使用新关键字.
UberGeekGames有一篇关于XNA优化的好文章.它主要针对Xbox和WP7,但许多东西也适用于PC.
原始网站已经死亡,但可以在Internet Archive中找到:
在xbox 360和windows phone7上进行高端性能优化的存档版本
经验法则是"优化之前的概况".
| 归档时间: |
|
| 查看次数: |
7979 次 |
| 最近记录: |