游戏对象线程?

时间:2011-07-12 06:27:39

标签: android

我正在尝试开发游戏。这是一个简单的whack-a-mole类型的游戏,在屏幕上弹出一些东西然后点击它来杀死它。我想把“摩尔”给自己的线程,以便他们可以在自己的生命周期中做自己的动画,事件处理等,直到最终自杀。

这种“每个对象都有自己的线程”实现是否适合Android游戏?

3 个答案:

答案 0 :(得分:2)

绝对不是。不要给每个痣自己的线程。这将是对线程的过多使用,而不用说在这种类型的游戏中你不需要这么多的线程。只需将所有内容保存在主线程中,并使用一些侦听器来杀死痣。 (=使隐形)

是的,这是一个性能问题,也是开发人员决定的问题。为什么要为每个痣创建一个线程?这是一个正确的问题,因为这样做是一个更不切实际的决定。每个痣会访问数据库吗?与服务器通信?我不这么认为。

无论如何,因为它是屏幕上的痣,你只需要一个可以在主线程中渲染/移动它/禁用/等的实例。

答案 1 :(得分:1)

如果没有大量物体,并且每个物体都有大量活动,这可能会有效。

我建议thread pooling。从线程中拉出非活动对象并放入活动线程。

答案 2 :(得分:0)

保持单线程直到您真正需要更改 - 特别是对于简单的游戏,您将不会遇到需要线程化的各种性能问题。

无论如何,一般的方法不是针对单个实体,而是跨越100或1000甚至整个系统(例如音频,物理等)执行的算法的整个步骤 - 也许是最极端但常见的情况是将渲染提交分割为自己的线程以进行所有渲染,在另一个线程上使用动画,物理,游戏逻辑等,以换取所有内容的单帧延迟。

更不用说拥有很多线程的开销经常变得有限 - 如果你有2或3摩尔可能没问题,但如果你有更多的线程,你很快就会达到收益递减的程度 - 更不用说保持许多线程同步并避免死锁,竞争条件等所固有的困难。