【SLG遊戲 (風色幻想III) 】  (C)FunYours Technology Co,Ltd.

SLG遊戲,或者更確切一點說是..S RPG
( S RPG = Strategy Role-Playing Game )
說成中文的話,有人叫作「戰棋遊戲」...

代表作有...夢幻模擬戰 / 炎龍騎士團 / 天使帝國 / 風色幻想 / ...等等

今天我們要探討的問題是...這個棋盤式移動系統是怎麼做的? 
 
【 圖 1 】模擬移動能力為3格,可移動範圍
 

【圖 2 】 計算 ( 3, 3 ) 與原點的距離

要設計移動之前,我們知道
這個棋盤遊戲 只能走 直的 或 橫的....
所以一點與原點的距離...
就是 X座標差 + Y座標差
 
那麼我們把每一個點,去做判斷
看看哪些點,和原點的距離,是小於3格的

 
【圖 3 】 與 ( 5, 4) 相隔 3 格以內的格子

計算出來的結果,就類似一個圓圈
這些格子,是一個「在 點( 5, 4 ),移動能力為 3 格」 的人物可以移動的格子

所以我們知道,要判斷可以移動位置,要丟入三個參數
(a). 人物 X 座標
(b). 人物 Y 座標
(c). 人物 可移動格數

然後寫一個程式,把距離人物指定格數以內的座標標記起來...


【 圖 5 】 程式運行結果

[ 下載範例 + 原始碼 ]





討論:
【問】為什麼要用步數判斷? 而不用半徑判斷?

【答】這是非常有意思的一個問題

如果要用半徑判斷,那我們是把每一點 都用畢氏定理 去算出 與原點距離

但是我們的格子是 離散 的 (也就是沒有小數點)
所以不可能畫出一個「無懈可擊的圓」  


從這張圖我們知道,對於咖啡色上面四個點,
仍然是在半徑3以內的範圍....
但這四點,不是我們想要的結果
因此,我們絕對不能用半徑去判斷...!!
  [ 操作看看 ]

 

  【問】你的範例中,沒有障礙物啊!
有了障礙物,步數的計算並不這麼單純!

【答】是的,有了障礙物,步數的計算就麻煩了

這個步數計算的技術門檻就高出許多了 ( 更何況碰上障礙物很多的情況下...)
因此市面上有遊戲,是不考慮障礙物的

在此...有誰可以指導一下這個要怎麼計算.....XDDD  (瓶頸...正經全破功...)


創作者介紹

Frank's 資訊科技潮流站

finalfrank 發表在 痞客邦 PIXNET 留言(3) 人氣()


留言列表 (3)

發表留言
  • 小綠
  • 幫你補充一下
    SLG是模擬遊戲,正確說法應該是RSLG或SRPG(戰略角色扮演)

    一般RSLG的移動並不是這樣做
    是用遞迴帶參數(移動步數)去跑的
    從主角起點開始往上下左右四個方向判斷可否行進
    若可行走則步數減一並遞迴繼續判斷
    這樣子才能避開障礙物或敵人
    遇到某些地形還可以一次減兩步達到"難以行走"的效果
  • 喔 這篇還沒有探討到實際移動~~
    只是在探討可移動範圍而已
    (移動相對來講比較好做,判斷可移動比較麻煩)

    障礙物「難以行走」的部分原來是這樣做的...大開眼界了~^^

    還有...
    是迴圈(loop)還是遞迴(recurrence)??
    我目前的移動都是用迴圈做的...

    謝謝你的建議!! 我會參考看看的!

    finalfrank 於 2008/09/17 20:28 回覆

  • 小綠
  • 是遞迴(recursive)
    遞迴的用法比迴圈難上許多
    而且速度還比較慢
    但是有些地方是非遞迴不可的
    我講不清楚的話可以再問我沒關係
    畢竟我很少看到談遊戲設計的部落格^^"
  • 原來這就是我的盲點...
    謝謝你!!
    只是這裡的遞迴真諦...我真的不懂啊!
    來日有請高手幫忙了m(_ _)m

    finalfrank 於 2008/09/17 21:18 回覆

  • 噗嚕
  • 請教大大
    現在有什麼比較的slg教學書籍嗎?
    我以前好像有看過但是忘了
    謝謝
  • 如果我現在手邊有的話...也不必在這邊重頭研究了XD
    嗯,如果有的話可以推薦一下阿~XD

    finalfrank 於 2008/11/14 23:25 回覆

找更多相關文章與討論