Java游戏开发。更快地制作瓷砖地图。关于优化的建议

时间:2012-06-05 01:37:19

标签: java optimization map game-engine

我正在尝试制作一个全自动游戏引擎,需要根据事件进行工作。我面临的问题是我已经制作了一个地图类并且它已经在游戏类中初始化了。它几乎是静态的,只有一个地图存在于游戏中。通过清除当前地图中的对象并添加新地图来加载新地图。您可以在此处查看地图类的来源。

http://code.google.com/p/game-engine-for-java/source/browse/src/com/gej/map/Map.java

主要问题出现在碰撞检测中,我正在使用蛮力碰撞检测,我不应该这样做。这会大大减慢游戏速度,我只想检查碰撞对象是否更靠近物体。我一直在使用MapLoader接口来构建地图。我想在另一个线程中调用对象的collision()方法可能有所帮助。然而,所有的地图对象都在Game类中更新。

如果有可能帮助

,这是游戏类

http://code.google.com/p/game-engine-for-java/source/browse/src/com/gej/core/Game.java

还有一个问题,有时候,物体不会被破坏。我正在调用map的removeObject()方法,但它需要1秒的延迟,有时候根本不会删除。

它在游戏中有158个对象的平台游戏中给出了48-64 fps。但在太空入侵者风格的游戏中,它只给我20-30 fps。任何有关优化的建议都非常感谢......

如果有人能给我一个二进制间距等教程,我会很感激。

1 个答案:

答案 0 :(得分:2)

通过查看代码提出两个建议:首先,您应该尝试最小化碰撞检测中的对象分配,不要创建新的Rectangles,通过直接编写冲突检测算法来处理已有的数据

第二个更重要的事情:碰撞检测引擎应该使用两个级别:

  • 粗略的碰撞已经排除了碰撞太远的物体(你可以在这里使用很多技术,比如大碰撞斑点的binary spatial partition算法,或对象的层次结构)
  • 精确级别,可以使用更精确的算法计算可能发生的碰撞的特定细节