问题
抱歉标题,似乎找不到更短/更好的描述..
情况如下:我正在制作一个简单的游戏,其中有一张大地图(简单,但尺寸非常大)。那张地图上也有很多敌人,但行动完全围绕主角(在一定半径内,占地图的一小部分)。
在每个“滴答”(或步骤,或任何你称之为的)处,每个对象都会调用一个特定的函数来确定它们的下一步动作。出于性能原因,由于我不关心在我的视野范围之外发生的事情(或者至少是非常遥远的事情),我不想在非常陌生的对象上调用该函数。
如何管理这些对象以确保我始终拥有在地图上移动时更新的附近对象列表?
(我知道它是用 C++ 标记的,但任何语言都可以——我不是在寻找那么多代码——更多的是关于这个想法)
我已经尝试过的
我尝试了一些替代方案:
- 备选方案 1:将我的地图分成“区域”并在每个区域中存储敌人列表。问题是当我在这些区域的边缘和(更糟)我在拐角处(我周围的 4 个不同区域)时会发生什么。此外,如果我从一个区域跑到另一个区域,就更难让敌人切换区域(但我已经想出了一些可行的方法......)
- 备选方案 2:每次移动
x
距离时扫描整个地图并刷新活动敌人列表。这要好一些,因为我不必担心像备选方案 1 这样的边界,但我每次都必须扫描整个地图。
我现在正在研究Alternative 3,即将这两种解决方案混合在一起。
但是,我想确保没有更明显的解决方案。