目录
一、PhotonServer介绍
1、为什么选择 Photon Server?
2、Photon Server 有什么缺点?
二、PhotonServer下载与安装
1、下载PhotonServer SDK
2、安装PhotonServer SDK
三、PhotonServer运行
四、通过一个简单的案例来配置PhotonServer服务器
1、新建项目
2、引用类库
3、服务器代码主流程
4、服务器程序发布
5、配置PhotonServer.config文件
6、启动服务器
一、PhotonServer介绍
Photon Server是一款实时的Socket服务器和开发框架,快速、使用方便、容易扩展,服务端架构在Windows系统平台上,采用C#语言编写,Photon Server发布包括两个部分,Client SDK Release和Server SDK Update,Server SDK的版本是v2.4.5,而Client SDK的版本是v6.2.0。客户端SDK提供了多种平台的开发API,包括DotNet,Unity3D,C/C++等。SDK就是指可以为第三方开发者提供特定的软件包、软件框架、硬件平台、操作系统等创建应用软件开发工具的集合,并且SDK还能简单的为某个程序设计语言提供应用程序接口API的一些文件。
1、为什么选择 Photon Server?
Photon Server的核心是用C++开发,不同 於其他伺服器采用的java,因此在效能上凌驾於其他server不少,在 Server 端 Script 采用C#语言,算是一种很容易学习的语言,Photon的Client端支援C++、.net、java、html5 、flash、Unity、mamalade、iOS、android、winphone、cocos等,市面上常见的平台全部都有支援,使用容易、效能高、支援平台多,这些优点让photon成为一个优越的套装socket server。
2、Photon Server 有什么缺点?
若要说Photon最大的缺点大概就是文件实在不是很好,市面上教学非常少 ,到目前为止也没有专门的书籍,官方的手册语焉不详而且也很没有系统,更諻论中文相关的教学了,大多在评估套装伺服器的人都是在第一步打退堂豉而选择了其他的Server,但只要跨过门栏就能发现Photon开发起来是比其他Server容易的多,附加的Lobby Server和MMO Server功能都非常强大完善而且效能极高,官方及讨论区的服务快速而且热心,这点足以弥补资料及手册的不足了。
以上内容摘抄自百度知道
二、PhotonServer下载与安装
1、下载PhotonServer SDK
在https://www.photonengine.com/en/sdks#server中下载服务器端SDK,需要登录的,就先注册一个账号吧。
![](https://img-blog.csdn.net/201808220928428?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
选择Server进行下载
![](https://img-blog.csdn.net/20180822093158579?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
2、安装PhotonServer SDK
下载之后安装PhotonServe,实际上安装过程就是解压过程,解压后目录文件如下:
![](https://img-blog.csdn.net/20180822093638724?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
下载后直接解压有四个文件:
build:修建工具;
deploy:主要存放photon的服务器控制程序和服务端Demo;
doc:PhotonServer开发文档和相关介绍;
lib:Photon类库,开发服务端需要引用的;
src-server:服务端Demo源代码;
三、PhotonServer运行
![](https://img-blog.csdn.net/20180822094649595?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
打开deploy文件夹,看到包含了不同平台编译出的Photon目录,以“bin_”为前缀命名目录,选择你的电脑对应的文件夹打开。本文以win64电脑为例,打开bin_Win64文件夹,找到PhotonControl.exe可执行文件运行,在Windows桌面右下角托盘区域可看见PhotonServer的图标,击图标可以看到photon服务器控制菜单。
![](https://img-blog.csdn.net/20180822094848496?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](https://img-blog.csdn.net/20180822095314543?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
四、通过一个简单的案例来配置PhotonServer服务器
1、新建项目
打开visual stadio,新建项目,选择c# 类库,应用程序名字叫做TestPhotonServer.
![](https://img-blog.csdn.net/20180822095754770?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
2、引用类库
完成后,把我们的Class1.cs,改名为TestPhotonServer.cs,作为服务器端主类.
![](https://img-blog.csdn.net/20180822100433182?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
然后在当前项目添加引用,链接到刚才提到的lib文件夹目录下,添加以下引用:ExitGamesLibs.dll ,Photon.SocketServer.dll , PhotonHostRuntimeInterfaces.dll三个文件。
![](https://img-blog.csdn.net/20180822100544656?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
3、服务器代码主流程
创建新类PhotonClientPeer.cs
using Photon.SocketServer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using PhotonHostRuntimeInterfaces;
namespace TestPhotonServer
{
public class PhotonClientPeer : 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)
{
}
}
}
在主类TestPhotonServer中添加如下代码 :
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 TestPhotonServer
{
/// <summary>
/// 继承自ApplicationBase的类,是server的入口程序,也是启动程序
/// </summary>
public class TestPhotonServer : ApplicationBase
{
///<summary>
///当一个客户端连接到服务器的时候调用
///</summary>
protected override PeerBase CreatePeer(InitRequest initRequest)
{
return new PhotonClientPeer(initRequest);
}
/// <summary>
/// 当服务器启动时调用
/// </summary>
protected override void Setup()
{
}
/// <summary>
/// 当服务器关闭时调用
/// </summary>
protected override void TearDown()
{
}
}
4、服务器程序发布
在PhotonServer安装目录deploy文件夹下新建文件夹,命名TestPhotonServer,再在其文件夹中创建bin文件夹
![](https://img-blog.csdn.net/20180822104325819?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
在Vs项目解决方案资源管理器中选中当前项目,打开属性,选择生成选项卡,把输出路径改成上一步新建的TestPhotonServer文件夹下的bin文件夹。
![](https://img-blog.csdn.net/20180822104551731?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
.net版本修改,建议将其改成.net4.5
![](https://img-blog.csdn.net/20180822104856324?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
右击项目名选择生成,编译器将生成的文件直接输出到我们知道的文件夹下。
5、配置PhotonServer.config文件
在服务器安装目录->deploy->bin_Win64下找到,PhotonServer.config文件:
![](https://img-blog.csdn.net/20180822110424798?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
打开配置文件,复制MMoDemo标签内的所有内容,将其复制到与其同一级的标签下,将MMoDemo标签名改为MyGameServer
![](https://img-blog.csdn.net/20180822111454414?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](https://img-blog.csdn.net/201808221120204?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](https://img-blog.csdn.net/20180822112139630?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](https://img-blog.csdn.net/2018082211225671?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](https://img-blog.csdn.net/2018082211304743?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
配置PhotonServer.config文件如下:
Name:项目名字
BaseDirectory:根目录,deploy文件夹下为基础目录
Assembly :是在生成的类库中的bin目录下与我们项目名称相同的.dll文件的名字
Type:是主类的全称,在这里是:MyServer.MyApplication,一定要包括命名空间
EnableAutoRestart:是否是自动启动,表示当我们替换服务器文件时候,不用停止服务器,替换后photon会自动加载文件
6、启动服务器
![](https://img-blog.csdn.net/20180822113439308?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1NjE0Nzg3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)