自己做遊戲(一)-PhotonServer配置
感覺時間過得好快,不知不覺接觸Unity一年多了,當初學習Unity的目的就是為了自己做遊戲,可惜現在的遊戲行業一片混亂,各種賣情懷....(多的不想說了,頗有一種學醫救不了中國的感覺),現在自己從事VR行業,感覺也不是自己想追求的,說實話,自己也感覺比較迷茫,不知道以後何去何從,忽然想起以前不知是誰說的一句話"不忘初心,方得始終",既然如此,就自己做一個遊戲,當做這一年多以來學習Unity的作業吧!
廢話不多說了,今天開始找了許多資源,想做一個MOBA類的遊戲,初步決定遊戲伺服器使用PhotonServer,以下記錄一下PhotonServer的啟動設定吧
首先安裝好PhotonServer,用VS新建一個類庫,引用PhotonServer安裝目錄lib下的5個類庫ExitGames.Logging.Log4Net.dll、ExitGamesLibs.dll、log4net.dll、Photon.SocketServer.dll、PhotonHostRuntimeInterfaces.dll,
建立Server類:
using ExitGames.Logging; using ExitGames.Logging.Log4Net; using log4net; using log4net.Config; using Photon.SocketServer; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MobaServer2._0 { public class MobaServer : ApplicationBase { protected override PeerBase CreatePeer(InitRequest initRequest) { return new MobaClient(initRequest); } /// <summary> /// 伺服器初始化 /// </summary> protected override void Setup() { InitLogging(); LogInfo("-----------------------"); LogInfo("Server is Setup"); } /// <summary> /// 伺服器關閉 /// </summary> protected override void TearDown() { LogInfo("Server is Down"); } #region 日誌功能 private static readonly ILogger log = ExitGames.Logging.LogManager.GetCurrentClassLogger(); /// <summary> /// 初始化日誌 /// </summary> private void InitLogging() { ExitGames.Logging.LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance); GlobalContext.Properties["Photon:ApplicationLogPath"] = Path.Combine(this.ApplicationRootPath, "log"); GlobalContext.Properties["LogFileName"] = "Moba2.0"; //this.ApplicationName+"2.0"; XmlConfigurator.ConfigureAndWatch(new FileInfo(Path.Combine(this.BinaryPath, "log4net.config"))); } /// <summary> /// 日誌輸出 /// </summary> /// <param name="str"></param> public static void LogInfo(string str) { log.Info(str); } #endregion } }
實現基類的MobaClient類如下:
using Photon.SocketServer; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using PhotonHostRuntimeInterfaces; namespace MobaServer2._0 { public class MobaClient : ClientPeer { /// <summary> /// 構造 /// </summary> /// <param name="initRequest"></param> public MobaClient(InitRequest initRequest) : base(initRequest) { } /// <summary> /// 客戶端斷開連線 /// </summary> /// <param name="reasonCode"></param> /// <param name="reasonDetail"></param> protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail) { } /// <summary> /// 客戶端向伺服器發起請求 /// </summary> /// <param name="operationRequest"></param> /// <param name="sendParameters"></param> protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) { } } }
從deploy\Loadbalancing\GameServer\bin目錄下複製一個log4net.config檔案到VS目錄下,選擇始終複製,這樣就可以在Log資料夾下檢視輸出日誌了
在deploy資料夾下建一個Moba\bin資料夾,選擇生成路徑生成
配置PhotonServer.config檔案如下:
Name:專案名字
BaseDirectory:根目錄,deploy資料夾下為基礎目錄
Assembly :是在生成的類庫中的bin目錄下與我們專案名稱相同的.dll檔案的名字
Type:是主類的全稱,在這裡是:MyServer.MyApplication,一定要包括名稱空間
EnableAutoRestart:是否是自動啟動,表示當我們替換伺服器檔案時候,不用停止伺服器,替換後photon會自動載入檔案
WatchFiles和ExcludeFiles
這段程式碼放在<Default><Applications>放這裡</Applications></Default>節點下面
最後.執行!