關於 web service, unity, blogger 等軟體工程筆記

Photon 與 Unity 完美結合應用分享會 筆記心得

Edit icon 沒有留言
Photon Engine

偶然看到的資訊,老闆說可以來看看,研究一下其他專案的網路解決方案,所以就報名參加了。文章為從現在拿到的資料以及現場講師的分享所理解的筆記心得,還未嘗試使用過。

先講結論:

  • 若要進行多人連線的展示專題,只是單純在同步多個 Unity Client 的資料,不需要在伺服器上寫驗證程式,Photon Clouds 是一個不錯的選擇,20 個同時連線數免費,不需要自架伺服器

  • 若要寫伺服器邏輯 (Business Logic),例如驗證用戶端資料,可以使用 Photon Server 方案,Photon SDK 使用 C# 寫伺服器邏輯,限制在 Windows Server 上執行,需要自行架設伺服器,100 個同時連線數免費

  • 更多問題可以找台灣代理商-珈特科技

Photon Cloud

這次有實機介紹如何修改 Unity Tank Tutorial,修改成兩個 Client 透過 Photon Unity Networking (PUN) 連線到 Photon Cloud,相互同步坦克位置,發送子彈事件等等,更多細節可以參考 Photon Taiwan 的部落格,上頭有幾篇文章在說明如何製作這次展示的專案。

由投影片以及手頭拿到的 Photon 資料,可以想像整個運作模式:

Photon Cloud & Unity PUN

Unity Client 透過 PUN SDK,透過已經準備好的 Protocols (Reliable UDP, TCP, Web-Sockets, or HTTPS),將資料加密後傳送給 Photon Cloud,由上頭伺服器運作處理,把資料同步給其他連線到相同房間 (Room) 的 Client。That is done, very simple。

如果想在伺服器上撰寫邏輯,例如玩家是否能夠登入,驗證遊戲資料是否正確(例如玩家位置是否合法),當時講者給的答案是使用 Photon Server 方案,基於 Photon Server SDK 自行架設伺服器,客製化伺服器邏輯。但回來看一下官方網站的資料,Photon Enterprise Cloud 應該也是可行的方案,寫好 Photon Plugin 的伺服器邏輯,上傳到 Photo Cloud 運作。

Photon Server

由架構圖理解為一個網路引擎,底層傳輸 Protocol 都已經完成實做,主架構為大廳 (Lobby) 與房間 (Room),使用 C# CLR 來開發 Plugins,Plugins 處理事件的伺服器邏輯 (Business Logic)。

架構圖 Photon Server 架構圖,From Photon Engine

Photon Server 得自己架設伺服器機器 (Self Hosted),自行管理伺服器,不用擔心自家機密放在別人那邊不安全。但 Photon 只能運作在 Windows 系列的伺服器,而不能運作在 Linux 伺服器上。

So Next?

Photon 將通訊 Protocol 那段實做完成,對於 Unity 也準備好對應的 SDK 可以使用,伺服器方案也可以考慮 Photon Cloud,而不必自己準備機器。或是寫 Photon Plugins,撰寫 Server 的運用邏輯。

相較於自己使用 Java/ Javascript/ PHP/ C# .Net/ Ruby/ Golang 來寫伺服器的方案,當完成伺服器後,還得實做資料傳遞的 Protocol,UnityClient 也得使用 Unity Networking 或是 UnityWebRequest 來撰寫對應的 NetClient SDK 給遊戲使用。

Photon 感覺是相當方便的網路存取解決方案,也許下次 GameJam 需要同步網路連線可以拿出來試試看,20 個連線數內免費嘛。

附註:之後嘗試使用 Photon,其筆記記錄在 Unity5 with Photon 一文中。

沒有留言: