gpt4 book ai didi

java - 让 Android 游戏不卡顿是不可能的吗?我要疯了

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:01:08 26 4
gpt4 key购买 nike

在过去的 6 个月左右的时间里,我一直在开发一款 Android 游戏,并且已经多次在这里发布关于我无法摆脱的各种延迟问题。

我最终捕获了 LunarLander 示例并将其剥离到它的核心组件,看看我是否可以做出任何不滞后的东西。它真正做的是改变每帧 Canvas 的平移量,然后在 Canvas 上绘制背景。即便如此,对于 surfaceView 应用程序来说,这也是最简单的 - 卡顿......

我的游戏是一款滚动游戏,您可以在其中不断向上移动屏幕(想想飞行游戏),但我目前处理背景的方式会导致每秒约 50-100 毫秒持续卡顿。这不是破坏游戏,但它非常分散注意力,让游戏看起来好像是由一个彻头彻尾的白痴编写的(尽管我开始怀疑可能是这种情况)。

不,它不是垃圾收集器,在游戏运行循环期间根本没有创建新对象,并且在我的游戏运行时 GC 几乎不运行。

我沮丧得几乎要抓狂了。仅在过去一周,我就花了 40 多个小时试图摆脱这个简单应用程序示例的滞后,这让我发疯。像我链接的应用程序这样简单的应用程序怎么可能有滞后问题?您不会认为滚动背景会变得比这简单得多...

注意:此演示在我的手机上不断获得大约 60fps(摩托罗拉里程碑)。取消注释示例中的 FPS 代码以查看 FPS。

TL;DR:只是滚动背景的非常简单的程序显示卡顿。请看...

下载基于 LunarLander 示例的简单口吃示例的链接: http://dl.dropbox.com/u/4972001/LunarLander.rar

最佳答案

我已经下载了带有滚动背景(看起来像草地)的 RAR 文件,并将其安装在我的摩托罗拉 Droid 上。

我在滚动时没有感觉到卡顿,我已经看了一分钟多了。

根据您的描述,我敢打赌 Milestone 硬件/平台存在一些奇怪的视频绘图/时序问题。

也许解释是这样的:Milestone 的显示器以 60 Hz 刷新(只是在这里选择一个数字,我不知道它到底是什么),而你的帧率只是略微低于这个 - 比如说63 或 57 Hz ... 是否无法想象大约每秒一次的绘制时间和硬件显示更新的时间不匹配足以使背景不会重新绘制一次,并且有等到你的下一帧?偶尔,时间安排刚好足以让您错过连续两到三个绘制的时间(取决于您的帧周期与实际屏幕刷新周期相差多远)。

编辑:实际上,我又看了一分钟,我确实看到了一个非常短的(只是可感知的)口吃。

关于java - 让 Android 游戏不卡顿是不可能的吗?我要疯了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4900014/

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