3 分鐘閱讀

第 07 週開發日誌

實作道具特效動畫,並處理多人連線遊戲中碰撞與畫面同步造成的平行世界問題。

道具特效動畫

道具物件本身的動畫之外,想在製作吃到道具時,畫面畫出此道具的特效圖。除了能更好知道自己吃到什麼之外(道具功能為隨機),也增加遊戲內容豐富度。

一開始認為這動畫應該要存在道具上的,但執行後立即發現問題。因為為了避免道具吃到後被連續碰撞,所以會立即刪除道具物件,導致道具特效播放無法出現。修改為播放後刪除,又會造成播放期間道具被重複碰撞。

這部分卡了很久,最後將動畫另外建立一個類別,並在此類別中給予 boolean 屬性,控制動畫是否播放的開關。當道具碰撞時打開,且用 delay 當播完動畫時間時,就將此屬性關閉,達到想播放動畫的時間跟速度,也不會因為道具碰撞後移除而導致無法繼續播放。

這中間有碰到小問題,是 paint 時會無法知道碰撞到的道具是哪一個,不過透過在 scene 中用一個變數專門存被碰撞的那個道具即可。

真正的大魔王:網路連線

網路連線模組一開始聽學長姐講,就是模組中最困難的。當模組套用在自己的遊戲中,又遇到各種問題,也是最多。

因為我們遊戲類似於躲貓貓,地圖上除了遊戲者本身,還有鬼、其他的躲藏者、小動物 NPC、道具的碰撞跟效果等等。連線中的遊戲,如何每個人的畫面都是同步的,非常困難。

像是當有碰撞時,可能其他遊戲者畫面因移動資料封包延遲,所以對他來說沒有碰撞,或是被其他人先碰撞。這時不同的結果就造成平行世界,各個遊戲者的遊戲內容走向變得不一樣,但卻看到彼此,這還在逐步處理中⋯⋯。