Libgdx 關於Rpg大師風格遊戲

前言

本篇為無靈感開發的開發者,欲開發Rpg風格遊戲所留下的心得,簡單講述用非Rpgmaker開發類風格遊戲所需要的知識。其實只是又一胎死腹中的專案啊(汗。

正文

使用過Rpg製作大師的人都知道,製作Rpg風格遊戲(後文皆稱如此),使用介面中各種方便的工具,配合第三方大師們的插件,就可以讓自己的遊戲越來越完美,並讓有邏輯的遊戲創作者利用其事件系統,就可以創造出一款基本的Rpg風格遊戲,而且MV版本還支援輸出手機的功能了!

但若不使用其強大的製作工具,又想開發類似風格,就必須要一些工具與知識來輔助。首先Dowen當然是使用Libgdx來進行開發。用來製作地圖使用的是Tiled

Tiled網路上有各種教學資源就不多說,只是連結Libgdx時,會有些許困擾。首先最上方的圖應該注意到了,有各種樹、房子、柵欄,其實還有些帶編號的物件。如果直接將檔案匯入遊戲會發現,所有物件都像是一張圖,接下來這邊有兩個解決辦法:

  1. 拉多邊形建立碰撞。 其好處是建立地圖時,就可以直接的與物理世界做結合,但缺點就是無法連結實體物件,像是一棵樹,想要同步移除幾乎是不可能的。

  2. 建立虛擬的框格物件,使用客製編號,在程式中對應位置建立物件,其壞處是每個東西,樹、房子、柵欄,都必須要透過程式內部定義好,才可以根據虛擬框格對應位置,當然有幾百個物件就要定義幾百個藍圖。好處也是極端的多,畢竟進入程式,每個物件想擁有物理屬性,想搭配特效,想自己會動,擁有數不盡的好處。

身為一個程式,理所當然使用第二招,目前使用還算順暢,只是如果程式比例一開始沒訂製好,例如人物放大兩倍,那物理矩形全部都需要重新定義,也是最糟糕的一環。

建立好場景與各種物件後,來基本的物件移動,其中有兩個問題。

  1. 物理移動需要進行調校。
  2. 人物移動遇到障礙物處理。

第一個問題,參考物理的力與衝量就可以解決問題。

第二個問題又有很多解決方案,根據網路上觀察的Rpg風格遊戲,有幾種處理方式。
1.根據手指(滑鼠)指標直線移動
2.使用四方按鈕來代替移動
3.點擊位置,自動移動。

前兩個方案就不用說了,算是簡單的實作,第三個倒是需要技巧的問題,Dowen見過有Google Play上有遊戲的方式特別神奇,像是Dowen使用A* Pathfinding,而某遊戲,雖然不知道是使用何引擎,不過其使用偏1.與3.的混合方法,有點詭異但還滿順暢的。

最後提一下,由於二維沒有深度,所以角色被遮蔽的效果可以靠Y軸來達成,等等見到成果,就可以看到效果。

成果

基本上Prototype會遇到的問題,都提到了,就來看不才的Prototype吧!