最近似乎在手機上a-rpg遊戲很受歡迎,當然,我最近也在幫公司寫一款a-rpg類的遊戲。以前從沒寫過這樣的遊戲,從有到無的寫出來了。也碰到不少問題,包括螢幕滾動時地圖title陣列索引的校驗、整個遊戲框架的搭建、地圖資料的處理、分層的處理、主角技能的處理、碰狀檢測。
這些問題有空我會做為小專題乙個乙個的寫出來,這個話題裡我們來一起討論下a-rpg遊戲裡怪物尋路演算法的確定。
很顯然,在手機這樣的裝置上,a*演算法不適合。因為a*中大量的節點會把手機記憶體爆掉,這個是我直觀的感覺,沒親自去實踐,如果有人能在手機上精確的實現了a*演算法的話,請告訴我一聲。
那麼,在j2me裡該如何處理怪物尋路演算法呢?
我在這個遊戲裡用的是a*演算法的簡化版本,暫時稱其為a* ******演算法。
我們可以建立乙個怪物的類,這個類裡包括不同版本的怪物、相應的、相應的尋路演算法、相應的攻擊技能、相應的碰撞檢測等。如果不建立這個類的話,實在很難想象這個遊戲到後期如何擴充套件。
那麼我們就可以在這個類裡面做如下的判斷:
if(!walking)else if(spritex < therolex&&spritey < theroley)
else if(spritey < theroley&&spritex > therolex)
else if(spritey > theroley&&spritex > therolex)
else if(therolex-spritex > 8+spritewidth&&spritey == theroley)
else if(therolex-spritex <= 8+spritewidth&&spritey == theroley&&therolex-spritex>0)
else if(spritex-therolex > 8+spritewidth&&spritey == theroley)
else if(spritex-therolex <= 8+spritewidth&&spritey == theroley&&spritex>therolex)
else if(spritey-theroley > spriteheight&&spritex == therolex)
else if(spritey-theroley <= spriteheight&&spritex == therolex&&spritey-theroley > 0)
else if(theroley-spritey > height&&spritex == therolex)
else if(theroley-spritey <= height&&spritex == therolex)
在這個尋路演算法中,怪物類會先判斷「權值」,即橫向和豎向到目標地的距離的大小。
然後根據「權值」做出相應的動作。
比如,怪物如果在主角的左下方,那麼它會先逼近主角的正下方,然後從下方逼近主角。
當然,這個演算法可以寫的更精確寫,那要以犧牲效能為代價了。
如何在精確和效能上做出平衡,也是我所要尋找的。
歡迎有類似經驗的同行一起討論。
J2ME平台A RPG遊戲怪物尋路演算法初探
最近似乎在手機上a rpg遊戲很受歡迎,當然,我最近也在幫公司寫一款a rpg類的遊戲。以前從沒寫過這樣的遊戲,從有到無的寫出來了。也碰到不少問題,包括螢幕滾動時地圖title陣列索引的校驗 整個遊戲框架的搭建 地圖資料的處理 分層的處理 主角技能的處理 碰狀檢測。這些問題有空我會做為小專題乙個乙個...
J2ME平台A RPG遊戲怪物尋路演算法初探
最近似乎在手機上a rpg遊戲很受歡迎,當然,我最近也在幫公司寫一款a rpg類的遊戲。以前從沒寫過這樣的遊戲,從有到無的寫出來了。也碰到不少問題,包括螢幕滾動時地圖title陣列索引的校驗 整個遊戲框架的搭建 地圖資料的處理 分層的處理 主角技能的處理 碰狀檢測。這些問題有空我會做為小專題乙個乙個...
J2ME平台A RPG遊戲怪物尋路演算法初探
最近似乎在手機上a rpg遊戲很受歡迎,當然,我最近也在幫公司寫一款a rpg類的遊戲。以前從沒寫過這樣的遊戲,從有到無的寫出來了。也碰到不少問題,包括螢幕滾動時地圖title陣列索引的校驗 整個遊戲框架的搭建 地圖資料的處理 分層的處理 主角技能的處理 碰狀檢測。這些問題有空我會做為小專題乙個乙個...