Step by Step Guide
指南介紹
本指南的目的是告訴你如何創建、配置和使用你的第一個Photon Server插件。
本指南是為第一次發現Photon Server插件的用戶準備。
本指南應按順序一步一步地仔細遵循。
本指南並不取代手冊。
您的第一個插件
在第一部分中,我們將創建和部署一個最小的插件。
提取SDK。由此產生的文件夾路徑將在本指南中被稱為"{pluginsSdkFolder}"。
下載免費的100CCU这里到"{pluginsSdkFolder}\deploy\bin_Win64 "文件夾。
創建一個新的Visual Studio項目(本指南中使用的是Visual Studio 2019社區版)。
- 添加一個 "類庫(.NET框架)"類型的新項目
- 項目名稱:"MyFirstPlugin"
- 位置:"{pluginsSdkFolder}\src-server\Plugins"
- 檢查:"將解決方案和項目放在同一目錄下"
- 框架:".NET框架4.6.1"(或更高)。
添加依賴性:
只需要一個文件資料庫:"PhotonHivePlugin.dll"。
要從Visual Studio添加它。- 在項目的 "參考文獻 "上點擊右鍵
- 點擊 "添加引用..."
- 選擇 "瀏覽"
- 點擊 "瀏覽 "並選擇"{pluginsSdkFolder}src-server\Plugins\lib\net461\PhotonHivePlugin.dll"
- 用 "OK "確認
添加插件類:
- 將VS自動創建的類文件從 "Class.cs "重命名為 "MyFirstPlugin.cs"。
- VS也會建議重命名這個類,接受。否則,自己將類從 "Class "重命名為 "MyFirstPlugin"。
- 擴展
PluginBase
。
C#
using Photon.Hive.Plugin; namespace MyFirstPlugin { public class MyFirstPlugin : PluginBase { } }
設置插件名稱:
C#
public override string Name => "MyFirstPlugin";
- 保留的插件名稱是"Default" and "ErrorPlugin"。
覆蓋
SetupInstance
來創建一個記錄器:C#
private IPluginLogger pluginLogger; public override bool SetupInstance(IPluginHost host, Dictionary<string, string> config, out string errorMsg) { this.pluginLogger = host.CreateLogger(this.Name); return base.SetupInstance(host, config, out errorMsg); }
在回調中添加一個日誌信息:
C#
public override void OnCreateGame(ICreateGameCallInfo info) { this.pluginLogger.InfoFormat("OnCreateGame {0} by user {1}", info.Request.GameId, info.UserId); }
調用一個回調處理方法:
C#
public override void OnCreateGame(ICreateGameCallInfo info) { this.pluginLogger.InfoFormat("OnCreateGame {0} by user {1}", info.Request.GameId, info.UserId); info.Continue(); // same as base.OnCreateGame(info); }
添加插件類別:
- 添加一個名為
MyPluginFactory
的新類 - 使其成為公共的
C#
using Photon.Hive.Plugin; namespace MyFirstPlugin { public class MyPluginFactory { } }
- 添加一個名為
擴充類
PluginFactoryBase
:C#
using Photon.Hive.Plugin; namespace MyFirstPlugin { public class MyPluginFactory : PluginFactoryBase { public override IGamePlugin Create(string pluginName) { throw new NotImplementedException(); } } }
創建並返回插件:
C#
public override IGamePlugin Create(string pluginName) { return new MyFirstPlugin(); }
建立解決方案(F6)。
更新插件配置。
- 打開"{pluginsSdkFolder}\deploy\LoadBalancing\GameServer\bin\plugin.config"
- 更新 "PluginSettings "節點,內容如下。
XML
<Configuration> <PluginSettings Enabled="true"> <Plugins> <Plugin Name="MyFirstPlugin" AssemblyName="MyFirstPlugin.dll" Type="MyFirstPlugin.MyPluginFactory" /> </Plugins> </PluginSettings> </Configuration>
將二進制文件復制到預期路徑:
把"{pluginsSdkFolder}\src-server\Plugins\MyFirstPlugin\binDebug "中的所有內容復制到"{pluginsSdkFolder}\deploy\Plugins\MyFirstPlugin\bin"。
打開[PhotonControl]。
它可以在"{pluginsSdkFolder}\bin_Win64\PhotonControl.exe "找到。將Photon Server作為一個應用程序啟動:
檢查日志:
You can directly open the logs from PhotonControl:
在"{pluginsSdkFolder}\deploy\log\GSGame.log "中,您應該看到插件配置被解析並成功處理:
連接到Photon伺服器。使用任何客戶端SDK。
創建一個房間。調用您的SDK中實現CreateRoom操作的相應方法。
重新檢查日志:
在"{pluginsSdkFolder}\deploy\log\GSGame.log "中,您應該看到插件的創建,然后是插件回調的自定義日誌信息:Plain Old Text
2021-05-24 16:03:19,734 [20] INFO Photon.Hive.Plugin.PluginManager - Plugin successfully created:Type:MyFirstPlugin.MyPluginFactory, path:D:\ExitGames\SDKs\Plugins\photon-server-plugin-sdk_v5-0-12-24499-rc1\deploy\Plugins/MyFirstPlugin//bin/MyFirstPlugin.dll 2021-05-24 16:03:19,760 [20] INFO Plugin.MyFirstPlugin - OnCreateGame 81f04234-892d-4b14-ae17-3708e9f7fe5c by user 848140c0-a7fb-4d61-ba5f-5846184a9b78 2021-05-24 16:03:19,761 [20] DEBUG Photon.Hive.Plugin.CreateGameCallInfo - Continue.
除錯模式
在第二部分,我們將向您展示我們推薦的插件開發工作流程。
關閉Visual Studio項目並再次打開,但這次要雙擊"{pluginsSdkFolder}\src-server\Plugins\MyFirstPlugin\MyFirstPlugin.sln "解決方案文件。
這一步很重要,因為它能夠使用步驟3中解決方案文件夾路徑的路徑。更新插件項目的 "Post-Build Events":
此意思是通過復制和貼上從項目構建輸出目錄到Photon配置的預期路徑來自動更新插件二進制文件。
如截圖所示,在 "Post-Build Events "文本區中輸入這條命令,在構建成功後就可以完成這一工作。
為了方便和可轉移性,我們使用相對路徑。Plain Old Text
xcopy /Y /Q "$(TargetDir)*.*" "$(SolutionDir)..\..\..\deploy\Plugins\MyFirstPlugin\bin\"
不要忘記儲存。
更新插件項目的 "Debug "動作。
想法是,當調試插件開始時自動啟動Photon服務器,當它停止時自動停止。
配置 "啟動動作 "和 "啟動選項",如屏幕截圖所示。
為了方便和可移植性,我們使用相對路徑。"啟動外部程序":
Plain Old Text
..\..\..\deploy\bin_Win64\PhotonSocketServer.exe
"命令行參數":
不要忘記儲存。
添加一個斷點:
從[PhotonControl]中停止Photon伺服器:
從Visual Studio(F5)啟動Photon伺服器:
您可以使用TaskManager檢查伺服器是否啟動。該程序被命名為Photon。
連接到Photon伺服器。使用任何客戶端SDK。
創建一個房間。為您的SDK調用適當的方法,實現CreateRoom操作。
等待中斷點被觸發。