2015年11月24日 星期二

Unity開放高階的多人連線網路層原始碼

作者:LÁRUS ÓLAFSSON 原文連結

開源的意義是甚麼?


Unity的多人連線功能可以分為高階和低階兩個階層,低階是用來傳輸層,大多時候是
過NetworkTransport 類別進行溝通。這一層功能在Unity引擎中是用C++寫的,主要目的是優化Socket接口的通訊傳輸。在這上面我們提供了用C#編寫以DLL形式存在的高階API。這些文件我們已經開放原始碼,開發者只需遵守MIT/X11協議,便可以根據自身需要修改成自己的。

兩個抽像層的使用介紹


DLL文件我們可以分為兩個部分:高階和低階。當使用NetworkClient 和 NetworkServer類別時,你可以在低階層手動建立連接,而使用NetworkManager和NetworkLobbyManager則可以對高階進行存取。將上述NetworkClient等組件加到游戲物件後,即可在游戲物件的inspector窗口獲得相應的鏈結選項以及預設的HUD組件。當然你也可以修改、延伸這些類別,自訂行為和功能。上述內容都是基於C/S架構以及伺服器授權模式實現。當你想了解和使用通訊層,或者去實現你自訂的高階API時,這些類別會是絕佳的參考資料。

注意事項


我們所提供的資源包含三個Visual Studio專案:分別針對Runtime、Editor以及Editor-Runtime。最後一個是在編輯器裡的Runtime模式,當在編輯器進入Playmode時,由於Unity引擎內部的Update方法是由Unity引擎內部觸發,所以必須讓它能呼叫到NetworkIdentity.UNetUpdate(),否則會無法正常執行。在編輯器中,我們還會即時進行一些程式編譯,這個工具叫做UNetWeaver,我們也正在討論是否將這部分內容開放源碼。這個工具負責分析NetworkBehavior並產生序列化程式碼,像是Command/ClientRPC程序或各種查詢表格。有些東西在擴展時必須注意保持名稱一致(如SyncVar、Command等..),以確保對應的功能正常。


現在,你可以從 這裡 下載這些原始碼

沒有留言:

張貼留言

關於我自己

我的相片
Unity台灣官方部落格 請上Facebook搜尋Unity Taiwan取得Unity中文的最新資訊