2

我正在寻找一些想法,即如何最好地存储横向滚动条的生成信息。我正在编写的游戏与《超级马里奥兄弟》非常相似。我试图实现的是,当你通过一个关卡时,敌人应该在特定位置产生。我想将此信息存储在关卡中,我不想只是随机生成敌人。当玩家到达特定位置(如马里奥)时,我正在寻找一种高级策略来存储和检索生成的对象。我在 Google 周围找不到任何像样的教程或建议。

关卡是基于瓦片的,所以地图是瓦片[][]。现在每个图块都是 16x16 像素。

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

我正在寻找一种更有效的存储机械。我需要一些东西,我可以快速检索正确的产卵,而不是过多的内存存储产卵位置。

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

4

1 回答 1

3

只要没有太多的生成点,一个简单的列表就可以了。每个列表条目都有 XY 坐标和生成信息。只需遍历列表以确定玩家是否在生成点附近。这比稀疏填充的 2D 数组的内存效率要高得多,非常容易实现,并且可能足够快。

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

于 2010-08-16T11:52:17.313 回答