我正在製作一個簡單的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