2018年9月22日 星期六

Path of Exile - 地圖碰撞偵測分析與路徑規劃

在製作遊戲輔助程式,如果遊戲中,沒有自動尋路的功能,那麼分析地圖的碰撞偵測就會顯得非常困難,因為要知道遊戲中的障礙物的位置,並且還要透過一些路徑規劃(A*演算法),才能走到想要到的位置,因此整體上來說,會花比較多的時間在分析遊戲地圖。

這裡是將產生空白地圖的空間,可以知道地圖的相關資訊。

1. [ecx+0x38] 是存放的相關資訊 (行等於[ecx+0x38] * 0x17)。

2. [ecx+0x68] 是存放的相關資訊。

3. ebx是暫存地圖的整體大小。



從這邊可以知道遊戲碰撞偵測的演算法,並撰寫尋路的功能。

演算法步驟:
  • 獲取地圖值:Map的基址 + y * 列的大小 + x / 2
  • 判斷x的奇偶數
  • 奇數將地圖值除以16,偶數跟0xF作and運算
  • 判斷是否大於2 (大於2就是可以走得路徑)

下面的影片是自動的走道傳送站的前面。