This document is about: SERVER 5
SWITCH TO

Step by Step Guide

指南介紹

本指南的目的是告訴你如何創建、配置和使用你的第一個Photon Server插件。

本指南是為第一次發現Photon Server插件的用戶準備。 本指南應按順序一步一步地仔細遵循。

本指南並不取代手冊

您的第一個插件

在第一部分中,我們將創建和部署一個最小的插件。

  1. 創建一個Photon賬戶

  2. 下載Photon插件SDK

  3. 提取SDK。由此產生的文件夾路徑將在本指南中被稱為"{pluginsSdkFolder}"。

  4. 下載免費的100CCU这里到"{pluginsSdkFolder}\deploy\bin_Win64 "文件夾。

  5. 創建一個新的Visual Studio項目(本指南中使用的是Visual Studio 2019社區版)。

    • 添加一個 "類庫(.NET框架)"類型的新項目
    • 項目名稱:"MyFirstPlugin"
    • 位置:"{pluginsSdkFolder}\src-server\Plugins"
    • 檢查:"將解決方案和項目放在同一目錄下"
    • 框架:".NET框架4.6.1"(或更高)。
    new project creation window in visual studio 2019
    New Project Creation Window in Visual Studio 2019
  6. 添加依賴性: 只需要一個文件資料庫:"PhotonHivePlugin.dll"。 要從Visual Studio添加它。

    • 在項目的 "參考文獻 "上點擊右鍵
    • 點擊 "添加引用..."
    • 選擇 "瀏覽"
    • 點擊 "瀏覽 "並選擇"{pluginsSdkFolder}src-server\Plugins\lib\net461\PhotonHivePlugin.dll"
    • 用 "OK "確認
  7. 添加插件類:

    • 將VS自動創建的類文件從 "Class.cs "重命名為 "MyFirstPlugin.cs"。
    • VS也會建議重命名這個類,接受。否則,自己將類從 "Class "重命名為 "MyFirstPlugin"。
    • 擴展PluginBase

    C#

    using Photon.Hive.Plugin;
    
        namespace MyFirstPlugin
        {
            public class MyFirstPlugin : PluginBase
            {
            }
        }
    
  8. 設置插件名稱:

    C#

    public override string Name => "MyFirstPlugin";
    
    • 保留的插件名稱是"Default" and "ErrorPlugin"。
  9. 覆蓋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);
    }
    
  10. 在回調中添加一個日誌信息:

    C#

    public override void OnCreateGame(ICreateGameCallInfo info)
    {
        this.pluginLogger.InfoFormat("OnCreateGame {0} by user {1}", info.Request.GameId, info.UserId);
    }
    
  11. 調用一個回調處理方法:

    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);
    }
    
  12. 添加插件類別:

    • 添加一個名為MyPluginFactory的新類
    • 使其成為公共的

    C#

    using Photon.Hive.Plugin;
    
    namespace MyFirstPlugin
    {
        public class MyPluginFactory
        {
        }
    }
    
  13. 擴充類PluginFactoryBase

    C#

    using Photon.Hive.Plugin;
    
    namespace MyFirstPlugin
    {
        public class MyPluginFactory : PluginFactoryBase
        {
            public override IGamePlugin Create(string pluginName)
            {
                throw new NotImplementedException();
            }
        }
    }
    
  14. 創建並返回插件:

    C#

    public override IGamePlugin Create(string pluginName)
    {
        return new MyFirstPlugin();
    }
    
  15. 建立解決方案(F6)。

  16. 更新插件配置。

    • 打開"{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>
    

閱讀更多關於自托管Photon服務器上的插件配置

  1. 將二進制文件復制到預期路徑:

    把"{pluginsSdkFolder}\src-server\Plugins\MyFirstPlugin\binDebug "中的所有內容復制到"{pluginsSdkFolder}\deploy\Plugins\MyFirstPlugin\bin"。

  2. 打開[PhotonControl]。 它可以在"{pluginsSdkFolder}\bin_Win64\PhotonControl.exe "找到。

  3. 將Photon Server作為一個應用程序啟動:

    start loadbalancing from photoncontrol
    Start LoadBalancing from PhotonControl
  4. 檢查日志:

    You can directly open the logs from PhotonControl:

    open logs from photoncontrol
    Open Logs from PhotonControl

在"{pluginsSdkFolder}\deploy\log\GSGame.log "中,您應該看到插件配置被解析並成功處理:

  1. 連接到Photon伺服器。使用任何客戶端SDK。

  2. 創建一個房間。調用您的SDK中實現CreateRoom操作的相應方法。

  3. 重新檢查日志: 在"{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.
    

除錯模式

在第二部分,我們將向您展示我們推薦的插件開發工作流程。

  1. 關閉Visual Studio項目並再次打開,但這次要雙擊"{pluginsSdkFolder}\src-server\Plugins\MyFirstPlugin\MyFirstPlugin.sln "解決方案文件。 這一步很重要,因為它能夠使用步驟3中解決方案文件夾路徑的路徑。

  2. 更新插件項目的 "Post-Build Events":

    此意思是通過復制和貼上從項目構建輸出目錄到Photon配置的預期路徑來自動更新插件二進制文件。

    如截圖所示,在 "Post-Build Events "文本區中輸入這條命令,在構建成功後就可以完成這一工作。 為了方便和可轉移性,我們使用相對路徑。

    Plain Old Text

    xcopy /Y /Q "$(TargetDir)*.*" "$(SolutionDir)..\..\..\deploy\Plugins\MyFirstPlugin\bin\"
    
    post build events
    Post Build Events

    不要忘記儲存。

  3. 更新插件項目的 "Debug "動作。

    想法是,當調試插件開始時自動啟動Photon服務器,當它停止時自動停止。

    配置 "啟動動作 "和 "啟動選項",如屏幕截圖所示。 為了方便和可移植性,我們使用相對路徑。

    • "啟動外部程序":

      Plain Old Text

      ..\..\..\deploy\bin_Win64\PhotonSocketServer.exe
      
  • "命令行參數":

    debug start action
    Debug Start Action

    不要忘記儲存。

  1. 添加一個斷點:

    breakpoint in myfirstplugin.oncreategame
    Breakpoint in MyFirstPlugin.OnCreateGame
  2. 從[PhotonControl]中停止Photon伺服器:

    stop loadbalancing from photoncontrol
    Stop LoadBalancing from PhotonControl
  3. 從Visual Studio(F5)啟動Photon伺服器:

    photon server debug started from visual studio
    Photon Server debug started from Visual Studio

您可以使用TaskManager檢查伺服器是否啟動。該程序被命名為Photon。

  1. 連接到Photon伺服器。使用任何客戶端SDK。

  2. 創建一個房間。為您的SDK調用適當的方法,實現CreateRoom操作。

  3. 等待中斷點被觸發。

    breakpoint triggered
    Breakpoint Triggered

PhotonControl

Back to top