- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我一直在阅读一本关于安卓游戏编程的书(安卓游戏开发初学者指南),然后我开始制作自己的游戏。
这是一个使用本书框架的java游戏。 (这本书从在转向 android 之前用 java 制作游戏开始)。
无论如何,我制作了我的游戏并且它在我的笔记本电脑上运行顺利,它配备了一个普通的 i3 处理器 2.4GHz,我几乎在上面完成了所有的编码和测试。
我买了一台配备 i5 3.3 GHz 处理器的新台式机,所以我决定在那里试试我的游戏。
但是,在我可能更快的台式机上,游戏运行起来似乎非常不稳定。似乎有一个口吃,我不知道是什么原因造成的,因为我没有更改任何代码。
我的增量在两台机器上都是一致的,我应该得到一个流畅的 ~60fps 但它在桌面上根本不流畅。
我注意到减少最长 sleep 时间(主要是提高帧速率)似乎有点帮助,但我的所有功能都基于最大 60fps。
我不太擅长这种级别的编程(你知道线程等等)。
关于可能是什么问题的任何想法,我认为这与游戏循环和更快的处理器有关。
最佳答案
至于为什么你的更快的 CPU 会卡顿,我猜是因为 updateAndRender(...)
中的代码。奇怪的是,当您可能有很多更新但想跳过一些渲染时,该方法既更新又渲染。
对于游戏循环和一般的此类计时循环,请记住,您的循环既会“超前”所需时间,也会“落后”所需时间。
这意味着期望您的循环“符合要求”是一种不切实际的期望。一旦你 sleep ,你就把控制权让给了操作系统。操作系统可能让你在请求的时间正好 sleep ,但很有可能如果它没有更好的事可做,它可能会提早叫醒你,如果它很忙,可能会吵醒你。
考虑到这一点,我会首先确定您在游戏中睡了多少“滴答声”并更新世界状态。然后确定您是否睡了足够长的时间来更新屏幕,如果没有,请等待。如果你有,那么检查你是否需要不止一个,如果需要,只做“最后一个”。如果您“跳过”太多屏幕更新(4 个是一个不错的数字),那么就错误地退出,表明屏幕绘制速度不够快(您的目标是 15 fps)。
关于java游戏在更快的cpu上口吃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32984212/
我刚开始在android中进行游戏开发,并且正在开发一款 super 简单的游戏。 游戏基本上就像飘扬的小鸟。 我设法使所有工作正常进行,但是却遇到了很多困难和滞后。 我用于测试的手机是LG G2,因
我有自己的 TrackRenderer 实现,用于我集成的 mp3 解码器。当 Lollipop 设备进入待机状态并返回时,它并不总是可重复的,但音频开始断断续续,直到我强制停止应用程序。 一开始,我
学习使用自动布局计算动态表格 View 单元格高度的有效方法。遇到滚动表格 View 时的问题,它开始有点卡顿,这很烦人。有时向上滚动时会卡顿很多,但这可能与我的演示核心数据代码有关。 This视频演
我有一些基于用户滚动的功能,它们会沿着页面上下移动元素(模仿滚动效果)。 为了让它更平滑一些,我正在使用 transition: transform 0.7s cubic-bezier(0.49, 0
我是一名优秀的程序员,十分优秀!