遊戲技術相關研究

2017年7月30日 星期日

【node.js】自製小型網路引擎-打磚塊連線(1)

上午12:20 Posted by Channel Chung No comments

是的,又開始手癢想要玩些新東西了,所以趁著我們家遊戲上線這段小小的空檔趕快來稿一下,這次要玩的是好久沒碰的網路引擎,剛好又一直想要找時間摸摸node.js,那就順水推舟這次Server端語言就用node.js,Client端就用之前使用three.js寫的打磚塊來作連線的練習,大至上想要達成的目標如下:


上圖中間是玩家操作的打磚塊,左右兩邊的打磚塊是準備接受Server的廣播後同步玩家操作的狀態;在玩家操作部份我們這次只會同步球的X、Y座標跟板子的X座標,Server接收到訊息後會立刻廣播球跟板子的座標給左右兩邊的打磚塊遊戲,這樣看左右兩邊的打磚塊運作就會跟玩家操作的打磚塊畫面一樣了,至於左右兩邊碰撞到磚塊會不見的原理是我們同步玩家球的位置,所以左右兩邊在球碰撞到磚塊的時候程式就會自動執行讓磚塊消失的邏輯,以下是這次實作的影片:



影片最後會發現我們我們將Server程式關閉後,左右兩邊的打磚塊就不動了,主要是因為玩家操作的打磚塊訊息已經無法透過Server將資料同步給左右兩邊的打磚塊,所以左右兩邊的打磚塊就停止運作了。

其實只同步球跟板子的作法並不完美,一來需要頻繁的傳送同步訊息,二來只要網路延遲就有可能導致左右兩邊的磚塊數量不同步,因為球有可能會穿透或在未碰到磚塊時接收到反彈球訊息等等狀況導致,至於解決方法也不難,就是拿掉左右兩邊打磚塊遊戲的磚塊碰撞判斷然後由中間玩家發出碰到那些磚塊訊息給左右兩端的打

 (右邊的打磚塊已經出現不同步的狀況)

磚塊遊戲就可以解決磚塊不同步問題了,這次的練習就先到這裡,下次會繼續實作讓三個不同玩家,同時連線在畫面上的三個不同區域玩打磚塊遊戲,咱們下次見囉。

0 意見:

張貼留言