我刚发布了一个应用程序,避免尖峰!在Android市场上。 我的一些朋友已经在他们的手机/平板电脑上下载了应用程序,我被告知它运行得太快了。它在我的android(HTC Dream)上运行得很好。有没有办法告诉它在某些机器人上运行的速度有多快,以及如何相应地调整它?我已经搜索过低和高,还没有找到答案。
答案 0 :(得分:5)
我在Android电子市场上看过您的游戏并尝试过它。
您实际上无法确定在各种现有硬件上获得的最小和最大速度,如:
你应该做的是让你的游戏独立于帧率。为此,请避免每次更新位置时使对象移动固定距离。喜欢让它们移动固定距离一段时间。
为此,请测量每次更新对象位置后自上次更新以来经过的时间,并计算相应移动距离。
这样,根据硬件的质量,这些物体会很好地跳跃或移动,但至少它们会以相同的速度移动,这个速度将由你决定。当你在一台全新机器或旧机器上玩FPS游戏时,这有点相同:运动的速度是恒定的,只有帧速率不是。在旧机器上你会得到物体跳跃的印象,而在新机器上它们会优雅地移动,但它在两种情况下都有效(当然,对于旧机器来说,在某些限制内)。一台机器永远不会那么快。
为了给你一些伪代码,让伞兵从屏幕的顶部落到底部:
这是要避免的循环:
while (playing) {
update_positions();
display();
}
update_positions() {
paratrooper.y -= 10; // the paratrooper's altitude decreases of 10 at each update
}
在速度较慢的硬件上,跨屏幕需要数小时。在快速的硬件上,这将太快,你甚至不会看到伞兵下降。
这是正确的方法:
while (playing) {
update_positions();
display();
}
update_positions() {
time_elapsed = getSystemTimeInMS() - lastUpdateTimeInMS();
paratrooper.y -= 0.01 * time_elapsed; // the paratrooper's altitude decreases of 10 per second
setLastUpdateTimeMS(getSystemTimeInMS()); // This way it includes the calculation time
}
在速度较慢的硬件上,穿过整个屏幕可能需要15次显示,而在快速硬件上需要45次显示,但在每种情况下,你的伞兵都会以每秒10次/秒的速度下降。
答案 1 :(得分:2)
听起来你的应用程序是游戏吗?如果是这样,你可能有一个游戏循环,只是尽可能快地运行游戏。我发现这篇关于实现游戏循环的帖子非常有用:Game Loops,当我创建涉及时间的游戏时。