rts遊戲中隊伍圍繞一個點圓形散開的演算法是怎樣的?

rts遊戲中經常看到隊伍集群,線性移動,或者圍繞某一點散開,或者圓形包圍某一點,這些要怎麼實現?


發一個簡單的陣型演算法吧,出處在這:GDC Vault - The Simplest AI Trick in the Book

渣手繪請見諒

1. 黑圈表示已經計算好了的陣型,紅點則是你的單位現在的位置

2. 選擇一個方向,從前到後分成幾排,依次對陣型里的各個位置(slot)排序

3. 用同樣的演算法對單位進行排序

4.把序號為N的單位移動到N點上


很多rts(例如帝國時代等)中明確的單位陣型(如矩形,一字縱列、各種圓形扇形等)確實應該是程序在接收到相應輸入後先計算好位置,然後再對各個單位尋路。不過從技術上講,如果只需要實現題主所說的這些功能(即,線性移動,圓形包圍一個點等),最簡單的做法就是在上層邏輯上不作為,從而讓各個單位自己去計算他的路徑,然後在遇到有別的單位擋路的情況下再重新尋路就可以了。

對此,「單位圓形包圍一個點」這一現象最能說明問題:如果題主玩過星際爭霸的話(好吧,我是暴白)應該就能了解,當一隊槍兵縱向前進並遇到一個敵方建築時,如果該建築剛好位於排頭的那個兵的最大射程處,那麼後者會直接開始攻擊,而對於排第二的那個槍兵,由於此時該建築在他射程外(隔了第一個槍兵)並且他貌似也沒膽量踢他前面這個哥們的屁股,因此他只能繞開第一個兵然後在另一個正好到目標建築距離為其射程的地方急不可耐地開火了。同理,這隊槍兵中後面的那堆倒霉蛋也不得不跑老遠繞開他前面已經開始爽了的哥們找到自己的位置:最後,因為所有這些兵都會在離目標建築相同距離處(即槍兵最大射程處)開火,因此幾何上他們正好構成了一個以該建築為圓心,槍兵射程為半徑的圓。此即開上帝視角的我們所看到的情況;

而與之相對的,大家可以試一下讓這隊槍兵移動到距離敵方建築很近的地方再讓他們開火,我賭100頓雞公煲(乾死黃旭東)他們才不會再老老實實的畫一個圓再打出六十人口的差距,而是站在原地就把這個建築給打爆了。。。。

最後,上面雖然只列舉了星際爭霸著一個例子,不過根據我的回憶(可能不準),魔獸爭霸、帝國時代、紅色警戒等老一輩rts應該都是這個尿性:程序員們偷偷懶也是可以理解的呀~~~~


推薦閱讀:

遊戲沒有新手教程的話,對玩家來說是失去了探索感還是增加了挫折感?
iOS 遊戲 Where"s my water 的關卡設計好在哪裡?
dota2移動速度的具體單位是?(比如300移速,是300碼/?秒)
一般的mmorpg的經驗數值如何搭建的?有哪些方式及其公式?都有哪些好處?
傳奇的遊戲性如何,能評價下它的遊戲性嗎?

TAG:遊戲設計 | 遊戲開發 | 演算法 | 編程 |