我正在尝试在 Android 上使用 opengl es 制作一个简单的突破游戏,但我无法决定是否必须使用单独的线程来处理某些游戏逻辑内容,例如更新游戏和碰撞检测。我设计了一个简单的原型:在自己的线程中并行绘制和更新彼此。它带来的问题比我想象的要多,所以我想:
我需要多个线程吗?
以闯关游戏为例,它有 6X5 的方块网格,并且对于每个方块都需要测试
球碰到这块砖了吗?每秒大约30次。如果我把这段代码放在我的主绘图循环中:OnDrawFrame(GL10),我担心它会花费大量的渲染时间。
那么我可以返回单线程游戏吗? (因为 Android 设备与 PC 相比没有那么强大。
我正在尝试制作一个简单的突破游戏
不,您不需要穿线任何东西。
线程不适用于“简单”任务。线程适用于您可以合理预期性能出现重大问题的任务,这样您实际上可以通过多线程获得一些好处。
通过对 Breakout 克隆进行线程化,您将获得令人头痛的编码。而已。它根本没有重要到需要它,如果你不需要需要线程,你几乎不应该使用它。
是的,您绝对不应该使用单个线程进行渲染和计算。 顺便说一句,您可能会发现关于实时 Android 游戏的 IO 谈话这里很有用。
以闯关游戏为例,它有 6X5 的方块网格,并且对于每个方块都需要测试
因此每次更新您必须执行 30 次圆形调整测试。我认为当前的计算机速度足够快,每秒可以执行数十万次。
多线程使某些事情变得更容易,将渲染和游戏逻辑保持在单独的线程中是一种常见的做法。但就您而言,随之而来的开销根本不值得付出努力。此外,只有在多核 CPU 上才能实现性能提升。
如果您的应用程序应该在多核系统上运行,那么多线程就有意义。
当线程数超过核心数时,称为超额订阅,这在线程应用程序中通常会产生不良影响,因为它会带来额外的开销。
有时,当您期望某些线程等待相当长的时间(例如文件系统上的读/写操作)时,就会出现超额订阅。
停车场多人游戏是一款有趣的手机游戏,玩家可以在各种场景中测试自己的驾驶和停车技巧。您将定制您的汽车,在现实环境中驾驶,并完成具有挑战性的停车任务。 https://carparkingmultiplayerpro.com