2019年8月16日 星期五

Counter Strike Source - AI

在念研究所的期間利用空閒時間,嘗試撰寫射擊遊戲的Artificial Intelligence,也就是利用自己寫的程式跟遊戲中的電腦互打,在這過程還蠻有趣的,需要分析整個遊戲的地圖,然後再路徑規劃(PathFinder),以及蒐集在記憶體上的人物資訊,例如座標、血量、隊伍等等,有了這些資訊就能追蹤敵人的座標,不過還需要找出控制自己的移動和射擊,這樣就能擊殺敵人了。

  • 路徑規劃
當時在找路徑規劃的演算法也想了蠻久的,因為要找個比較容易實現的演算法,不然可能要花非常久的時間再理解它的理論,因此就找到了Dijkstra's,它是基於圖的結構,所以只要將地圖上可走的座標建立成圖的結構,就可以利用深度或廣度來直接搜尋最短路徑,因而達到我們要的目的。

地上的紅線是代表要去殺敵的路徑



  • 人物資訊蒐集
人物資訊蒐集是非常重要的一環,因為要知道敵人在哪,就需要知道他的座標,有了座標就能繪製整個模型的骨架,也可直接將射擊的準心移動到敵人的頭部,這樣就完成了自動瞄準的功能。



最後當然電腦是贏不了我們,因為我們掌握了他們的位置,就直接去爆了他們的頭,不過要讓程式更有AI的感覺還需要搭配蜜蜂演算法,讓他有更多的決策,並不是直接去找最近的敵人,而是找最容易殺的敵人,這樣就不會讓攻擊顯得太單調。