问题
抱歉标题有点长,但我实在找不到更好的描述方式了。
这是情况:我正在制作一个简单的游戏,其中有一张大地图(简单,但非常大)。地图上也有很多敌人,但行动范围仅限于主角周围的某个半径(这个半径只占地图的很小一部分)。
每次“打勾”(或步骤,或任何你想称呼的东西),都会对这些对象中的每一个调用某个特定函数来确定它们的下一步移动。出于性能考虑,因为我不关心视野范围之外的内容(或者至少是非常遥远的东西),所以我希望不要对那些非常遥远的对象调用该函数。
我该如何管理这些对象,以确保我始终拥有一个附近对象列表,并在我移动地图时得到更新?
(我知道它被标记为C ++,但任何语言都可以 - 我不需要太多代码 - 更多的是关于思路)
我已经尝试过的方法
我尝试了几种替代方案:
- 替代方案1:将我的地图分成“区域”,并在每个区域中存储敌人列表。问题在于当我处于这些区域的边缘时会发生什么情况,以及当我处于角落时会发生什么情况(周围有4个不同的区域)。此外,如果我从一个区域跑到另一个区域,那么让敌人切换区域就会更加困难(但我已经想出了一些可行的方法...)
- 替代方案2:扫描整张地图,并在每次移动
x
距离时刷新活动敌人列表。这个方法比替代方案1好一点,因为我不必担心边界问题,但我需要每次扫描整张地图。
现在,我正在考虑替代方案3,即将这两种解决方案混合在一起。
但是,我想确保是否有更明显的解决方案。