基于PHOTON(光子)的服务器端开发II
Photon Server
Link Start!
1.Photon简介
内核基于C/C++编写,运行速度较快,但使用时使用C#(.NET环境),适用于小型工作室或个人开发者
photon cloud相当于云服务器端,只需开发客户端,服务器端由photon提供(功能受限)
photon server则需要自己手动开发服务器端(功能全面)
支持UDP、TCP、WS、HTTP协议
2.Photon SDK
(1)在官网下载安装好SDK,打开安装目录,lib文件夹存放的一般为动态链接库。deploy文件夹存放部署的项目,在deploy文件夹下win32/win64文件夹PhotonControl进行对应版本photon的开启。doc文件夹下为API说明书,英语较好的同学可以看一看了解下(注:解压目录不能包含中文字符)
(2)在官网注册后申请Max100CCU上限的License,将下载好的license文件复制到win32/win64目录下,重启photon即可识别license
(3)真正将photon作为游戏服务器的话建议购买容量更大的license
3.Config配置文件
(1)打开win64文件夹下(我的计算机系统为64位,因此下文全部使用64位相关内容)PhotonServer.config文件,在块内配置服务器各项信息(photon已经给出一个配置实例MmoDemo,可以模仿进行配置)
(2)给出我自己的配置信息进行解释说明
<!-- Instance settings -->
<MyGameInstance
MaxMessageSize="512000"
MaxQueuedDataPerPeer="512000"
PerPeerMaxReliableDataInTransit="51200"
PerPeerTransmitRateLimitKBSec="256"
PerPeerTransmitRatePeriodMilliseconds="200"
MinimumTimeout="5000"
MaximumTimeout="30000"
DisplayName="PVP_demo">
<UDPListeners>
<UDPListener
IPAddress="0.0.0.0"
Port="5055"
OverrideApplication="PVP_demo">
</UDPListener>
</UDPListeners>
<TCPListeners>
<TCPListener
IPAddress="0.0.0.0"
Port="4530"
PolicyFile="Policy\assets\socket-policy.xml"
InactivityTimeout="10000"
OverrideApplication="PVP_demo">
</TCPListener>
</TCPListeners>
<Runtime
Assembly="PhotonHostRuntime, Culture=neutral"
Type="PhotonHostRuntime.PhotonDomainManager"
UnhandledExceptionPolicy="Ignore">
</Runtime>
<Applications Default="PVP_demo">
<!-- PVP_demo Application -->
<Application
Name="PVP_demo"
BaseDirectory="MyGameServer"
Assembly="MyGameServer"
Type="MyGameServer.MyGameServer"
ForceAutoRestart="true"
WatchFiles="dll;config"
ExcludeFiles="log4net.config">
</Application>
</Applications>
</MyGameInstance>
①DisplayName 即在photon server展示的项目名称
②UDPListeners 即UDP配置
IPAddress="0.0.0.0" 表示开放所有可用IP可连接到服务器
Port="5055" 端口号
③TCPListeners 即TCP配置
PolicyFile="Policy\assets\socket-policy.xml" 即policy文件存放位置
④Application
BaseDirectory="MyGameServer" 项目位置(基于deploy文件夹)
Assembly="MyGameServer" 指令集
ForceAutoRestart="true" 是否自动重启
4.创建服务器端项目
(1)新建类库MyGameServer,右键—>重新生成即可在项目下debug文件夹内找到对应的dll文件
(2)在deploy下新建文件夹MyGameServer,将项目输出路径更改为刚才新建的文件夹MyGameServer,以后重新生成得到的文件会直接存放到deploy下的MyGameServer文件夹方便部署
(3)添加引用,所有用到的dll文件都在photon下lib文件夹内,下面罗列出需要添加的文件:
ExitGamesLibs.dll
Photon.SocketServer.dll
PhotonHostRuntimeInterfaces.dll
5.创建主类
(1)新建类 MyGameServer,将其设置为public class
(2)继承自ApplicationBase并实现抽象类
using Photon.SocketServer;
//引入命名空间 Photon.SocketServer;
namespace MyGameServer
{
public class MyGameServer : ApplicationBase
{
//客户端请求连接方法
protected override PeerBase CreatePeer(InitRequest initRequest)
{
return new ClientPeer(initRequest);
}
//用于初始化的方法
protected override void Setup()
{
}
//server关闭时的方法
protected override void TearDown()
{
}
}
}
6.创建ClientPeer类
(1)新建类 ClientPeer,将其设置为public class
(2)继承自Photon.SocketServer.ClientPeer并实现抽象类
namespace MyGameServer
{
public class ClientPeer : Photon.SocketServer.ClientPeer
{
public ClientPeer(InitRequest initRequest):base(initRequest)
{
}
//处理客户端断开链接后的操作
protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail)
{
}
//处理客户端请求
protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
{
}
}
}
7.配置完成后重新生成并重新启动photon,可以在日志查看项目启动情况,若
完结撒花~
基于PHOTON(光子)的服务器端开发II
https://baifabaiquan.cn/2020/08/01/基于Photon的服务器端开发2/