[英]Best data structure to hold a group of coordinates inside a really big rectangle?
我有一个地图的抽象表示,可以说在X和Y坐标上有5.000.000个不同的整数坐标,所以它是一个非常大的2d矩形。
然后,在该可变大小的矩形内,我有几个对象(字符,怪物,npc)。 玩家可以选择该矩形的位置,我必须检查该位置上是否有怪物或角色。
到目前为止,我创建了一个名为GameMatrix的自定义类,该类具有列和行,并且所说的列具有3000x2000位置(角色的区域视图)。
当我的游戏玩家点击所述坐标时,我必须对矩阵内的每个元素进行一次foreach()
,并且大多数情况下它为空。
有没有更好的方法来解决这个问题? 具体来说,我在问什么是最好的方法,即拥有一个非常大的矩形和一个坐标,以一种有效的方式检查在所述坐标内是否有对象。
忘了提一下,但这是在服务器端每毫秒完成几次的。 所以我需要很多表现。
编辑:忘了提,我正在使用C#。
您应该使用四叉树实现,除非网格中的项目数确实很少(例如几十个项目),在这种情况下,线性搜索(同时用力检查所有项目)可能是最好的选择。
看这里
http://en.wikipedia.org/wiki/Quadtree
请注意,可以快速高效地查询四叉树,但更新的成本更高,也就是说,如果您的项目在地图上移动很多,则要获得良好的性能就变得更加复杂。
我建议先尝试最简单的解决方案,然后再担心优化。
尝试使用数组。 随时随地改善您的解决方案。 列表或哈希图可能也很有趣,具体取决于您的设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.