我正在开发一个模拟器,我需要能够处理数千个潜在数百万个更新每个循环的对象。 所有对象都需要具有称为(AI)的逻辑功能。 但取决于对象的位置决定了逻辑的详细程度。例如:有效地迭代和存储数以千计/数百万个对象
[100个对象合作,以保持它的简单]
- 所有对象都有一个位置(x,y)的
20
对象是500点远离 从'的景点位置。50
对象是500点从20
对象(1000点的距离) 。30
对象内的兴趣点100个 点。
现在说这是一个详细的城市仿真的对象是虚拟的公民。 在下午6点,每个人都应该从工作中回家睡觉。
所以我们遍历所有的公民,但我想让他们做不同的事情。
- 更远离物体(50)回到家中从他们的工作和睡觉 直到早晨。
- 较近的物体(20)从他们的工作回家,有一个 咬吃,然后睡觉,直到早晨。
- 最接近的对象(30)去从他们的工作 家,得一口一口吃,刷牙然后睡觉,直到早上 。
正如你可以看到他们是接近的兴趣点的更详细的逻辑变。
我正在努力研究什么是最好和最有效的方式来遍历所有对象将是。 这将是一个相对容易的手充满对象,但因为这需要处理至少500,000对象有效,我需要一些建议。
而且我不知道我是否应该通过所有对象的每一个循环迭代或者它会更好地迭代通过最近的物体的每一个循环,但每10个循环只有itereate通过渐行渐远的对象?
与需要的对象与其它对象之间的互动接近他们的附加要求,我一直在想这样做可能是组织他们在四叉树的最佳方式,但我不知道。看起来好像四叉树对于静态内容更多,但我所处理的对象具有一个位置,并且需要移动到其他位置。 我是否正在思考的正确轨道?或者,还有更好的方法?
我也在C++中工作,如果有人认为它的相关。
任何意见,将不胜感激。
注:
- 的兴趣变化点定期,认为它是一个摄像头 视图。
- 对象是动态创建和
因此,第一个数组最接近点,第二个数组接近第二个数组......然后在数组之间移动对象,取决于对象与点的距离如何?我忘记提及的唯一问题是感兴趣的点会改变,所以会有很多数组交换。 – xyz 2013-02-14 21:06:49
@xyz号只需添加更多细节。 – 2013-02-14 21:25:39
对不起,我想知道。谢谢你为我清理这个。 – xyz 2013-02-14 21:27:50