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
  1. 添加依賴性: 只需要一個文件資料庫:"PhotonHivePlugin.dll"。 要從Visual Studio添加它。

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

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

    C#

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

    C#

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

    C#

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

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

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

    C#

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

    C#

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

    C#

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

  11. 更新插件配置。

    • 打開"{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
  1. 檢查日志:

    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
  1. 更新插件項目的 "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
  1. 從[PhotonControl]中停止Photon伺服器:
Stop LoadBalancing from PhotonControl
Stop LoadBalancing from PhotonControl
  1. 從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

Last updated on

Back to top