存储2d平台/卷轴的生成信息

时间:2010-08-15 20:26:54

标签: game-engine

我正在寻找一些想法,如何最好地存储侧卷轴的生成信息。我正在写的游戏与超级马里奥兄弟非常相似。我想要实现的是当你在一个关卡中移动时,敌人应该在特定位置产生。我想将这些信息存储在关卡中,我不想随意产生敌人。我正在寻找一种高级策略来存储和检索当玩家到达特定位置(如马里奥)时产生的对象。我找不到谷歌周围的任何体面的教程或建议。

Level是基于图块的,所以地图是Tile [] []。现在每个图块都是16x16像素。

到目前为止,我看到的唯一好建议是将产卵信息存储在二维数组中,其中第一个维度为x,第二个维度为y,在图块空间中给出。我对该实现的问题是,如果我的玩家说(160,0)我想要产生一个特定的敌人。但是,如果下次重置等级时玩家处于(160,5),我想生成同一个敌人。因此,为了实现该实现,我必须对给定的y位置进行扫描。

我正在寻找更高效的存储机制。我需要一些东西,我可以快速找回正确的产卵,而不是腰部太多的记忆存储产卵位置。

游戏中有什么共同的策略吗?

1 个答案:

答案 0 :(得分:3)

只要没有太多的生成点,就会有一个简单的列表。每个列表条目都有XY坐标和生成信息。只需遍历列表即可确定玩家是否在产卵点附近。这比稀疏填充的2D阵列更加节省内存,非常容易实现,并且可能足够快。

如果结果不够快,则需要某种spatial index,kd-tree实现起来相当简单,并且为邻近搜索提供了良好的性能。 另一种解决方案是使用局部敏感哈希,如this paper (PDF)中所述。