C++ 在具有任意大小世界的游戏中进行交互的有效数据结构或方法

C++ 在具有任意大小世界的游戏中进行交互的有效数据结构或方法,c++,game-physics,C++,Game Physics,我刚刚开始在WINAPI中制作一个有限版本的Agar.io,这样我就可以试验各种机器学习风格来训练机器人玩它。我一直对游戏机器人感兴趣,Agar.io一开始就足够简单(所以我想)。然而,我一直困惑于一个相当简单的效率问题,我不知道如何解决。在Agar.io中,有一个充满细胞、多细胞玩家、病毒和食物的大世界。每一个细胞,每一个游戏蜱,都必须检查它是否在吃食物,是否被病毒感染,是否在吃其他细胞或被其他细胞吃掉。我如何才能有效地进行“点击注册”,使游戏始终能够创建正确的结果,而不必不必要地扫描几十个其

我刚刚开始在WINAPI中制作一个有限版本的Agar.io,这样我就可以试验各种机器学习风格来训练机器人玩它。我一直对游戏机器人感兴趣,Agar.io一开始就足够简单(所以我想)。然而,我一直困惑于一个相当简单的效率问题,我不知道如何解决。在Agar.io中,有一个充满细胞、多细胞玩家、病毒和食物的大世界。每一个细胞,每一个游戏蜱,都必须检查它是否在吃食物,是否被病毒感染,是否在吃其他细胞或被其他细胞吃掉。我如何才能有效地进行“点击注册”,使游戏始终能够创建正确的结果,而不必不必要地扫描几十个其他细胞/病毒/食物斑点,而这些细胞/病毒/食物斑点离玩家还远


我考虑过建立一个全局网格结构,其中每个正方形都有关于其上的单元格等的数据,单元格只能检查靠近它们的正方形,但由于Agar.io中的所有实体都大于一个像素,这里的重叠问题看起来太复杂了,所以我取消了这个想法。我现在陷入了经验不足的困境:)。有人能提出更好的设计吗?

看来你是过早优化的受害者。与其困惑什么是最有效的,你应该实施一些东西,测量它,然后改进。当然,你必须回去重新考虑你所知道的,但是如果不做一些你无法测量的事情,因此你也无法知道什么是有效的,你需要某种空间分解数据结构。这是一个完整的字段,但可能从四叉树(又名quadtrie)开始。似乎您是过早优化的受害者。与其困惑什么是最有效的,你应该实施一些东西,测量它,然后改进。当然,你必须回去重新考虑你所知道的,但是如果不做一些你无法测量的事情,因此你也无法知道什么是有效的,你需要某种空间分解数据结构。这是一个完整的字段,但可以从四叉树(又名quadtrie)开始。