xBox360上的游戏抖动

时间:2011-02-21 07:03:35

标签: c# performance xna xbox360

好的,我的游戏已经接近完成,一切都运行良好,它在我的电脑上运行得相当好(运行在99Mb RAM左右)。但是当我在我的xBox上运行它时,我偶尔会对主要玩家角色产生紧张情绪。我在游戏中确实有爆炸和广告牌效果,但是我正在xBox GPU上进行所有渲染(最初在发生爆炸时导致抖动,但现在不再发生)。 紧张情绪也是随机的,而不是在我产生大量单位或执行大量行动时。我不知道为什么会这样,任何想法?

P.S。该游戏确实集成了多线程,在一个线程上更新,在另一个线程上呈现。

2 个答案:

答案 0 :(得分:6)

听起来垃圾收集器会导致你的紧张情绪。在Xbox上,每次分配1MB数据时都会启动。所需的时间取决于程序中使用的引用数量。

使用XNA Framework Remote Performance Monitor for Xbox 360判断您是否存在垃圾回收问题。阅读Shawn Hargreaves的How to tell if your garbage collection is too slow

如果确实存在垃圾收集问题,则需要一个可以确定哪些对象生成垃圾的分析器。 CLR Profiler for the .NET Framework 2.0是一种选择。默认情况下,XNA 4.0不支持它,但Crappy Coding上的Dave有workaround。有关解决垃圾收集问题的策略,请阅读Shawn Hargreaves的Twin paths to garbage collection Nirvana

更新 CLR Profiler for the .NET Framework 4.0现已可用。

答案 1 :(得分:1)

听起来你的渲染线程只是坐在那里等待更新线程完成它所做的事情导致“抖动”。也许放入一些代码,记录一个线程在被允许访问另一个线程之前必须等待多长时间才能找出这是否真的是问题。