我正在制作一个简单的RTS游戏。我希望它运行得非常快,因为它可以与数千个单位和8名球员一起工作。RTS游戏中视线计算的快速算法
一切似乎都完美无缺,但似乎视线计算是一个瓶颈。很简单:如果一个敌方单位比我单位的任何LOS距离都更近,它就会显示出来。
目前我使用一个相当天真的算法:对于每个敌方单位,我检查我的任何单位是否看到他。这是O(n^2)
所以,如果有8名球员,他们有3000个单位,每个球员在最坏的情况下意味着3000 * 21000 = 63000000测试。这很慢。
更多细节:这是一个愚蠢的简单2D空间RTS:没有网格,单位沿着直线移动,没有碰撞,因此它们可以相互移动。因此,甚至有数百个单位可以在同一个地点。
我想以某种方式加快这个LOS算法。有任何想法吗?
编辑:
所以额外的细节:
- 我是一个球员能有3000甚至单位。
- 我的单位有雷达,所以他们向所有方向平等。
我建议还问这对http://gamedev.stackexchange.com/,如果你还没有。 – cHao 2010-08-21 10:46:44
3000/8 = 375,在SC2中你可以有最多200个食物,谁能够正确地制作375个单位! :) – 2010-08-21 12:06:53
Ohkay,RTS =实时战略! – Lazer 2010-08-21 16:36:32