Photon Server Deploy (基礎部署)
在前兩篇中建立好 server 的執行個體與 SQL server 的執行個體之後,這篇要開始進行 Photon Server 的基礎部署。 這邊會跳過 Photon Server 的一些介紹直接開始,所以想看架構等等的請各位在自己前往官網文件哦。
開始
首先第一個要做的就是透過上次下載的 RDP 檔案登入 Server 執行個體。小小前置作業
- 安裝 Visual Studio - 這邊我是裝 2015。
- 安裝 Chrome - 這是我的習慣啦,若是習慣 IE 可以跳過。
Step 1 下載 SDK 與基本啟動測試
在 SDK 的下載頁面可以看到如下圖,上面的紅框是要你去拿免費的授權檔,沒有它就算下載完畢也無法正常啟動。所以在點選第二個紅框下載 SDK 時,請記得點設定畫面去下載免費的授權檔。進入設定畫面時會要你輸入電子郵件和密碼,登入後會看到下圖,請下載 100 ccu 作為免費試用。
此時 SDK 應該早就下載完成,將它解壓縮,若你下載的位置都相同會如下圖。
- SDK 解壓縮之後的資料夾
- 100 ccu 免費授權檔
- 下載下來的 SDK
現在,將免費授權檔放到 Photon 資料夾下的 deploy/bin_Win64 資料夾中,如下圖。
放置好了之後我們點擊,來啟動 Photon Server,在桌面視窗的右下角會看見一樣的小圖示,右鍵他選擇 LoadBalancing (MyCloud) 再點選 Start as application ,這樣預設的程式就啟動了。
啟動後,可以參照上面那張圖的下方,有個 Run Testclient (LoadBalancing),若啟動成功會和下面的圖相同。
Step 2 建置自己的 Photon Server 伺服器類別庫
這邊只作簡單的連線測試,並不撰寫其他複雜的邏輯。首先,先打開你的 Visual Studio,開新專案,類型選擇類別庫 。(因為需要的是 dll )好了之後把預設的 class1 刪除,並在方案總管的地方加入 5 個參考,此 5 個檔案的位置在 Photon Server 的 lib 資料夾下,若還是不清楚可參照下圖。
- ExitGames.Logging.Log4Net.dll
- ExitGamesLibs.dll
- log4net.dll
- Photon.SocketServer.dll
- PhotonHostRuntimeInterfaces.dll
好了之後,加入一個類別,作為伺服器應用程式的類別,請自己命名自己可以辨別的,我是
命名 XXXServer。 (加入using、繼承ApplicationBase,自動實作),完成會如下圖。
- CreatePeer - 當有新 Clinet 連線到 Server 時就需要創建一個新 Peer,Peer 被用來接收 Client 發送過來的請求並傳遞資料,有點類似專屬通道的感覺。所以在 Peer 被創建時最好把它收起來,避免遺失的麻煩。
- Setup - 伺服器程式被開起來(Start as application)時會做的事情。
- TearDown - 伺服器程式被關掉的時候要做的事情。
創建 Peer 類別
再加入一個類別,作為處理 Client 通訊的Peer,如下圖。- 建構子
- OnDisconnection - 即當 Client 斷線的時候要做什麼事。
- OnOperationRequest - 當 Client 送來 Operation Request 的時候要做的事,也就是伺服器邏輯,例如日後 Client 發送一個代號 5 為登入的請求,Server 在接收到這個請求的後續處理。
實作類別
只作接通連線功能範例,首先是 Application- Setup - 完成 Log 的設定,之後就可以直接使用,這可以幫助你紀錄一些訊息或是 debug用。
- 增加一個靜態屬性 Server - 以方便的存取 Server 物件。
- 給 Peer 加上了一個 Guid 的屬性 - Guid 很難出現相同的值,不過為了避免這個狀況,給 Peer加上刷新 Guid 的方法,當出現相同的時候可以重刷。
- 用 Dictionary 把 Peer 都裝起來 - 以免之後要用的時候找不到。
- TearDown - 這裡不需要做事。
接下來是 Peer 類別
基本的 Photon Server 類別庫就完成了,接著
- 在方案總管對方案按右鍵建置,建置專案。
- 打開建置的檔案位置,預設是方案右鍵 > 在檔案總管中開啟資料夾 > bin\Debug。
- 打開 Photon 的資料夾,在 deploy 中建立新資料夾,我取名叫做 XXXServerDepolyment。
- 在裡面建立2個資料夾,bin 和 log。
- 把建置出來的類別庫資料複製一份( Debug 裡面的東西全部都複製過去)到 bin 中。
- 打開 deploy\CounterPublisher\bin 把 log4net.config 複製一份到 XXXServerDepolyment\bin中,打開你複製過去的 log4net.config。
完成如下
接著打開 deploy\bin_Win64 中的 PhotonServer.config。
- 把LoadBalancing的部分都刪掉,然後拿 MMO 的起來改。( 原因是每個 port 只能被用一次,只剩下 MMO 的部分的話就沒有重複 port 的問題。)
- 標籤 Configuration 之後的第一個標籤(我用 XXXXServer )這個可以依照你的意思取,這是你伺服器應用實體的名稱。
- DisplayName 是在 PhotonControl 中顯示的名字 (像 LoadBalancing (MyCloud) 這樣的名字)。
- 看到 OverrideApplication 就把內容換成你伺服器程式的真名(可以隨意取,和標籤的實體名稱可以不同,我取 XXXXServerProgram )。
- Default 的值要給伺服器程式的真名
- Appplication 中一些屬性的設定:
- Name - 伺服器程式的真名。
- BaseDirectory (起始資料夾) - 在Photon資料夾下deploy資料夾中,你創立的那個。
- Assembly (組件) - 其實就是 Server dll 檔的 namespace。
- Type (類型) - namespace + server類別名 。
在 deploy\PhotonServerDepolyment\log 中,可以看到 --------- Server Setup Successiful --------- 的Log。 然後可以執行 PhotonControl 的 Run TestClient 會出現下圖,代表已成功了。
這篇記錄距離現在已有些時日,相信 Photon Server 可能已有所不同,但還是供有興趣的人參考,謝謝觀賞。
0 意見