2D platfrom游戏的适当级别表示/数据结构?


9

我要用Java编写Mario的副本。我正在考虑针对级别的2种表示形式/数据结构,但是我不确定应该选择哪一种:

  • 一个2D整数数组。
  • 用四叉树将级别分成几部分。

它的优缺点是什么?

Answers:


9

四叉树的目的是有效地剔除大量数据,以便您仅在紧邻的数据上花费时间。但是2D阵列已经为您提供了特定于位置的随机访问,因此对于可能会使四叉树变得多余的2D游戏。在3D游戏中,您无法使用数组来定位所有内容,而这正是四叉树(或更好的八叉树)的方便之处。

现在,我在这里谈论该级别的基础数据表示。根据图形架构的设置方式(例如,在3D引擎中使用平面进行2D图形处理),您可能需要在场景图中使用四叉树来有效地剔除图形内容。

然后不要忘记关卡中的各种敌人和其他互动对象。也许您使用2D数组来管理关卡的切片,但使用四叉树来组织所有交互式元素(例如,用于物理引擎)。


这样考虑:在关卡中随机选择一个点,然后考虑要找出该点1000像素半径内的所有内容需要花费多少工作。如果因为所有内容都按2D数组中的位置组织而可以快速执行此操作,则不需要四叉树。但是,如果您必须遍历所有内容并分别检查每个对象的距离,则可以使用四叉树使搜索更加有效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.