ET框架:windows/Linux 雲伺服器部署

本文針對ET框架1:C#伺服器 unity3d客戶端 開源 github而寫,主要說明ET框架中的伺服器開發完成後,如何部署到雲伺服器上。

眾所周知,大部分遊戲伺服器部署在linux系統,網上也不少這方面的教程,對於大部分多人遊戲的開發者來說,大部分都是熟練windows系統的,我就是一直用windows系統進行開發,擅長unity3d前端,這也是首次嘗試前後端同時搞定,而且做得是一個多人在線推塔的項目,為了個人維護起來方便,我選擇了騰訊雲的windows server 2012當遊戲伺服器進行項目部署。接下來詳細介紹部署過程,希望對在使用ET框架進行全棧遊戲開發的人有幫助。

  1. 伺服器選擇,下圖這個配置是一個比較簡單標準的配置,這個自己選擇,目前各大廠商的雲計算都還可以。

圖1.雲伺服器配置

雲伺服器選定後,選擇正在運行的windows雲伺服器,進行安全組配置,如下圖所示,安全組決定了對於該伺服器的訪問許可權.

圖2 安全組選擇

圖3 安全組配置

如上圖所示是我的伺服器的配置信息,完全按照這個來配置是沒錯的,本身並非伺服器開發人員,在進行過伺服器配置的過程中也是遇到了很多坑,所以讀者最好直接按照圖3進行伺服器設置,我在設置的過程中,給騰訊雲提交了工單,因為伺服器ping不通,雖然這個問題很簡單,最後還是自己搞定的,但還是感謝騰訊雲的維護人員,ping不通的原因2點:安全組配置不正確或者伺服器防火牆沒有關閉,如果你遇到了這樣的問題,又不是特懂伺服器,1是直接找個懂得問問,2是和我一樣檢查上述2點。

好了,到這裡大家的伺服器都有了,我們可以登錄了,登錄過程如下所示,下載登錄rdp登錄文件,如圖5所示操作,即可下載登錄文件。圖6所示為下載好的文件,雙擊既可以登錄。經驗證,RDP登錄方式是最簡答便捷,界面也是最流暢的,建議大家這種方式。

圖5 伺服器登錄

圖 6下載得到的文件

雙擊上圖所示RDP文件即可登錄雲端伺服器,如果這時候提示登錄不了,原因一定是你的安全組沒有開啟windows遠程登錄這個埠。如果登錄成功後,我們可以進行環境部署了,

如下圖所示,我們可以將本地電腦上的.netcore 2.0,mongodb安裝文件直接拷貝到雲伺服器,不需要類似linux的weget+鏈接的方式去下載,對於使用windows開發的客戶端人員來說,確實太方便了。途中可以看到我還在伺服器上面安裝了vs2107,這是有原因的,我安裝了.netcore2.0之後,發現在運行伺服器的時候,來時會提示丟失很多的關聯庫,於是一氣之下安裝過了vs,比較笨的方法,但是管用,不再提示錯誤了。

圖7 環境部署配置

這裡有一點需要注意,windows的防火牆是要關閉的,不然本地機器是ping不通雲伺服器的。到這裡我們雲伺服器環境配置就算完成了,接下來檢驗一下。

2 生成Server包

接下來,回到本地ETserver工程中,我們需要安裝CommandLineParser.core包,如下圖所示。

圖8 commandlineParser

安裝完成後,cmd開啟命令行,此時我們需要對當前的server進行重新publish。圖a-b-c展示了完整流程。publish完成後會生成用於放置到雲伺服器上的server包,接下來開始操作:

a:命令輸入,如圖a

b:publish成功後命令行所示狀態,如圖b

c:發布成功後D:WorkProjectsServerBin路徑下文件狀態。(每個人的路徑不一樣)

a 開始編譯

b 編譯成功圖

c 編譯成功後文件路徑結構

到這裡,我們要將三個文件夾拷貝到雲伺服器上

1 Serverlogs文件夾

2 Serverconfig文件夾

3 serverbinpublish文件夾(這是我們剛生成的文件)

拷貝到伺服器後,如圖所示

雲伺服器文件結構

運行伺服器和資料庫

運行成功示意圖

到這裡,伺服器就算是運行成功了,這裡我運行的ETdemo鬥地主的伺服器,然後就可以在本地打開客戶端登錄遊戲,同時可以邀請多人一起戰起來了。

本文篇幅較長,希望能給不懂伺服器又正在用ET框架的客戶端開發人員提供一些參考。

---------------------------------------------------------------------------------------------特別的坑介紹:

1 配置文件中:outHost 需要設置為雲伺服器內網IP;outHost2設置為雲伺服器的公網IP。

2 Server代碼設置:登錄的時候需要連接Gate,連接gate需要使用outHost2的地址。

3 客戶端代碼:開啟伺服器的時候是根據outhost來開啟的,地址也是內網IP地址,但是要登錄realm和gate伺服器又必須使用outHost2的公網IP,這個我是手動直接在代碼里寫上的,因為config管理組件中沒有用到outhost2來連接,後期修改好後會跟大家分享。


推薦閱讀:

棋盤格與幻影坦克
一口氣解決RenderQueue、Ztest、Zwrite、AlphaTest、AlphaBlend和Stencil
關於Unity動畫系統優化,你可能遇到這些問題
一個關於渲染管線中坐標變換的簡單實例

TAG:虚拟现实VR | MMO游戏|大型多人在线 | Unity游戏引擎 |