问题标签 [frame-rate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
23331 浏览

xna - 如何正确计算 XNA 中的 FPS?

我写了一个组件来显示当前的 FPS。
其中最重要的部分是:

在大多数情况下它工作正常,但最近我遇到了一个问题。
当我将以下代码放入游戏的 Update 方法时,奇怪的事情开始发生。

这段代码的主要思想是始终在不同的线程中运行 pathFinding 算法。

奇怪的事情是我的意思是有时 FPS 会急剧下降,这很明显,但显示的 FPS 变化的频率超过每秒一次。如果我理解此代码,FPS 的更改频率不会超过每秒一次。

有人可以解释一下发生了什么吗?

编辑 26.03.2010
我还发布了 Draw 方法的代码。

编辑 31.03.2010 Venesectrix 问题的答案
1) 您是在使用固定时间步长还是可变时间步长运行?
IsFixedTimeStep 和 SynchronizeWithVerticalRetrace 设置为 true。
2)发生这种情况时,您是否正在移动 XNA 窗口?

3) XNA 窗口是否有焦点?

的 4) 它有多引人注目(即,更新速度如此之快以至于您无法阅读,或者只是更新不到一秒钟)?
我能够读取更新,FPS 每秒更新约 3 次。
5)所有这一切都只发生在那里的线程代码?
是的

0 投票
3 回答
998 浏览

actionscript-3 - 让系统时间决定动画速度,而不是程序 FPS

我正在用 ActionScript 3 编写纸牌游戏。每张纸牌都由一个类的实例表示,该类扩展了从 Flash CS4 导出的包含纸牌图形和翻转动画的影片剪辑。当我想翻转一张卡片时,我在这个movieclip 上调用gotoAndPlay。

当帧速率减慢时,所有动画都需要更长的时间才能完成。默认情况下,Flash 似乎会以确保绘制剪辑中的所有帧的方式为影片剪辑设置动画。因此,当节目帧率低于剪辑的帧率时,动画将以较慢的速度播放。

我希望动画始终以相同的速度播放,因此始终在屏幕上显示相同的时间。如果帧速率太慢而无法显示所有帧,则会丢弃帧。是否可以告诉 Flash 以这种方式制作动画?如果不是,那么我自己编程这种行为的最简单方法是什么?

0 投票
2 回答
17428 浏览

python - 如何在 Python + Pygame 中提高帧速率(fps)?

我正在开发一款小型换卡世界旅行游戏,我将其设想为介于宝石迷阵和 10 天地理棋盘游戏之间的交叉游戏。到目前为止,编码一切正常,但帧速率很差……目前我的 Core 2 Duo 的帧率很低 20。这是一个问题,因为我正在为英特尔 3 月份的开发者竞赛创建游戏,该竞赛的目标是搭载动力不足的 Atom 处理器的上网本。

这是游戏的画面

替代文字
(来源:必要游戏.com

我对 Python 和 Pygame 非常陌生(这是我使用它们的第一件事),遗憾的是缺乏正式的 CS 培训……也就是说,我认为可能有很多不好的做法正在发生在我的代码中,还有很多可以优化的地方。如果你们中的一些较老的 Python 手不介意看看我的代码,看看是否找不到任何明显的优化区域,我将非常感激。

您可以在此处下载完整的源代码(Python 2.6 + Pygame 1.9): http: //www.necessarygames.com/my_games/betraveled/betraveled_src0328.zip

此处编译的 exe:www.necessarygames.com/my_games/betraveled/betraveled_src0328.zip

我担心的一件事是我的事件管理器,我觉得其中可能包含一些性能整体,另一件事是我的渲染......我几乎只是一直将所有内容都放在屏幕上(参见渲染例程在我下面的 game_components.py 中);我最近发现您应该只更新已更改的屏幕区域,但我仍然对这到底是如何完成的......这可能是一个巨大的性能问题吗?

任何想法都非常感谢!像往常一样,我很高兴通过 PayPal 向您“提示”您的时间和精力。

Jordan



编辑: 感谢下面的建议,我在我的代码上运行了 cprofile。如果有人愿意查看此输出并让我知道什么是预期的,什么是预期的,那就太好了。



这是p.strip_dirs().sort_stats('cumulative').print_stats()的输出:

这是p.strip_dirs().sort_stats('time').print_stats()的输出:





以下是一些来源:

主文件

事件管理器.py

房间.py

0 投票
3 回答
21616 浏览

sdl - 在 SDL 中实现恒定帧速率

我正在尝试制作一个以恒定帧速率运行的 SDL 程序。但是我发现即使我的程序滞后很多并且跳过了很多帧(即使它以低帧运行并且渲染不多)。

你们有什么建议可以让我的程序运行得更顺畅吗?

0 投票
1 回答
370 浏览

iphone - OpenGL ES 仪器的精度

我正在为 iPhone 开发游戏。我已经决定 30FPS 就足够了,所以我编写了一些代码,只允许应用程序每 1/30 秒呈现一次渲染缓冲区。当我尝试用 Instruments 验证这一点时,我得到了不同的信息。

在 iPod Touch(2009 版,32G)上,它报告每秒核心动画帧数为 30 FPS。

在 iPhone 3G 上,我得到了截然不同的结果。而且不只是低于 30 FPS。我经常看到> 30 FPS。它实际上似乎更接近 36-39。

为了调查这种异常情况,我将自己的 FPS 添加到应用程序并每秒更新一次。我在两台设备上都保持在 29 FPS。

那么,有没有人对可能发生的事情有任何建议?我希望 Instruments 是准确的,所以我真的担心它看起来不准确。这让我觉得我在某个地方有一个错误,但我肯定找不到它。

0 投票
1 回答
401 浏览

iphone - 旧款 iPhone/iPod 帧率?

较旧的 iPod 和 iPhone 的帧速率是否为 60fps?我发现在 iPhone 上计算时间间隔的所有方法(cftimeinterval、nstimer、timesince1970 等)都给了我不好的数据,所以我决定假设帧速率为 60,只是不确定旧的苹果设备是否可以跑到这里。

0 投票
3 回答
1306 浏览

java - 将 Java 翻译成 Python——使用 PEM 证书文件对字符串进行签名

我正在尝试将以下 Java 翻译成它的 Python 等价物。

这适用于 AWS FPS 使用的 PKI 签名验证。http://docs.amazonwebservices.com/AmazonFPS/latest/FPSAccountManagementGuide/VerifyingSignature.html

谢谢你的帮助!

0 投票
1 回答
238 浏览

actionscript-3 - 对 Flash ActionScript 动画使用 72 FPS 是否安全?

我正在使用 Flash ActionScript 制作一些生成艺术动画,与 30 FPS 或更低的帧速率相比,它在 72 FPS 的帧速率下显得更加流畅。
在 Intel Pentium E2200 Dual CPU @ 2.20 Ghz 上,Flash Player 在 72 FPS 的动画中几乎不使用超过 9%。动画的运行时间很短(每个不到 10 秒)。
使用此帧速率是否安全?

0 投票
1 回答
3175 浏览

opengl - 从位置和欧拉角计算观察向量

我已经实现了一个 FPS 风格的相机,相机由一个位置向量、欧拉角俯仰角和偏航角(x 和 y 旋转)组成。设置投影矩阵后,我通过旋转转换为相机坐标,然后转换为相机位置的倒数:

现在我已经设置了几个视口,每个视口都有自己的相机,我从每个相机渲染其他相机的位置(作为一个简单的框)。我还想为这些相机绘制视图矢量,但我不知道如何从位置和欧拉角计算观察矢量。我试图将原始相机矢量 (0, 0, -1) 乘以表示相机旋转的矩阵,然后将相机位置添加到转换后的矢量,但这根本不起作用(很可能是因为我远离基地):

我想要的是从相机向观察方向绘制一条线段。我到处寻找这样的例子,但似乎找不到任何东西。

非常感谢!

0 投票
2 回答
3235 浏览

client-server - FPS多人游戏服务器更新客户端的一般策略是什么?

我和一个朋友正在讨论 FPS 服务器如何更新连接到它的客户端。我们观看了一个人在《战地:坏连队 2》中作弊的视频,看到它如何突出敌人在屏幕上的位置,这让我们思考。

他的论点是服务器只用与客户端直接相关的信息更新客户端。即如果敌方玩家距离客户端太远或出于效率原因不在客户端的视线范围内,服务器将不会发送有关敌方玩家的信息。不过他不确定——他举了一个例子,一个人躲在石头后面,看不到任何人。如果玩家突然出现在他视线范围内的三个玩家的位置,那么在服务器传输必要的信息之前,他们会在屏幕上呈现 50 毫秒的延迟。

我的论点是相反的:服务器向客户端发送有关每个玩家的所有信息,并让客户端整理出哪些是允许的,哪些是不允许的。我认为服务器将所有内容发送给客户端并让客户端完成繁重的工作实际上会降低计算成本,可以这么说。我还认为这就是作弊程序的工作原理——它们拦截服务器数据包,获取敌人的位置,然后在客户端的视图中显示它们。

那么问题来了:现代第一人称射击游戏服务器采用哪些一般策略或策略来保持其客户端更新?