gpt4 book ai didi

c# - XNA Platformer (2D) - 帧率/FPS 波动

转载 作者:太空狗 更新时间:2023-10-29 23:26:29 25 4
gpt4 key购买 nike

我是 C Sharp 的新手,正在使用 XNA Framework 编写游戏。我创建了一个项目,它是“Platformer”XNA 入门工具包的重大修改版本。

我看到(看似)随帧率随机波动。有时它会一直以 60 FPS 的速度运行,有时它会以 60 FPS 开始然后下降到 49-52,有时它会立即下降到 49-52。使用 Fraps 显示帧率(不将视频录制到磁盘)。

这款游戏的独特性要求它始终以 60 FPS 的速度运行。

所以似乎某些竞争条件或随机因素导致了 exe 的各个运行之间的差异。多次重建没有任何区别。

这种波动在我的台式机和笔记本电脑上发生的频率完全相同,因此这不是硬件、防病毒等问题。

我已经搜索过如何在 XNA 中锁定帧率,我的代码似乎做了很多它需要做的事情,包括尝试限制在 60 FPS(使用 IsFixedTimeStep、SynchronizeWithVerticalRetrace)。

游戏绝对可以从头到尾达到 60 FPS,我一直都在看。据我所知,当它以 60 FPS 的速度运行时,它不会占用 CPU、RAM 或任何其他资源。

有没有人遇到过这种情况?

谢谢,- S

最佳答案

你描述的不一致说明问题要么是由于

  • 环境因素,例如另一个过程;或
  • 游戏中并非每次运行都采用的代码路径

最可能的原因是您的两台计算机上都在运行另一个进程。

关闭所有非必要进程,例如媒体播放器。 Windows Media Player 和 iTunes 都可以在播放时降低帧率。 Fraps 应该没问题,只要它不在录制,但我会实现您自己的内置 FPS 显示以确保万无一失。

使用windows性能监视器检查是否有进程占用cpu或内存。尤其要查找未能正常关闭但仍在后台运行的游戏实例。

您可以尝试缩小环境原因范围的其他事情包括:

  • 确定游戏是否以 60fps 运行干净重启后
  • 确定是否游戏始终以 60fps 的速度运行第一次运行
  • 从以下位置启动您的游戏资源管理器而不是 Visual Studio
  • 确定是否在 Release 或 Debug模式有任何影响
  • 运行你的在 friend 的电脑上玩游戏

如果原因是您游戏中的代码路径未在每次运行时执行,您可以:

  • 反复玩游戏并尝试确定您在游戏中的什么行为导致了速度下降。
  • 实现输入记录和回放系统,使游戏中的相同运行完全可重复
  • 分析您的垃圾收集和一般性能以寻找任何突出的问题

关于c# - XNA Platformer (2D) - 帧率/FPS 波动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5088282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com