利用PhotonServer 搭设自己的服务器(上)

首先VS创建新项目 创建一个类库 添加引用利用PhotonServer 搭设自己的服务器(上)_第1张图片

然后添加两个类详细步骤点击打开链接

下面给我们自己的服务器端添加输出日志功能

我们找到Photonserver 自己提供的源码在下面这个路径利用PhotonServer 搭设自己的服务器(上)_第2张图片

 用VS打开选择MasterServer主服务器下的MasterApplication脚本  并且找到里面的SetUp方法

利用PhotonServer 搭设自己的服务器(上)_第3张图片


利用PhotonServer 搭设自己的服务器(上)_第4张图片


我们将这4句代码放在我们继承自ApplicationBase的类中的SetUp方法中 幷引入相对应的命名空间

Properties["LogFileName"] = "TD"  "TD"这里的名字可以自己命名

利用PhotonServer 搭设自己的服务器(上)_第5张图片


然后回到之前打开的源代码路径下 复制一个log4net.config文件  到自己的工程目录下

利用PhotonServer 搭设自己的服务器(上)_第6张图片

然后打开这个log4net的配置文件 删除原来的一些配置

利用PhotonServer 搭设自己的服务器(上)_第7张图片

在回到源代码 找一句代码

 private static readonly ILogger log = LogManager.GetCurrentClassLogger();

将这个代码复制到自己工程下面 

利用PhotonServer 搭设自己的服务器(上)_第8张图片


下面要部署Server 

首先把log4net这个配置文件的复制到输出目录设置为   始终复制

创建一个输出目录 在deploy目录下创建 文件夹/bin 

生成的输出路径选择这个文件夹


下面配置文件  到deploy下Bin_win64下面 找到PhotonServer.config 文件用VS打开它

利用PhotonServer 搭设自己的服务器(上)_第9张图片

创建一个自己的Instance  复制整个

修改开始标签和结束标签

利用PhotonServer 搭设自己的服务器(上)_第10张图片


修改一下这个文件 Defult 是默认启动哪一个Application 我们可以修改为自己想要的

利用PhotonServer 搭设自己的服务器(上)_第11张图片

把WebSocketListeners 删除掉


在回到我们log4net的配置文件里面找到  value改成DEBUG

利用PhotonServer 搭设自己的服务器(上)_第12张图片

在重新生成一下工程就OK


接着呢 我们右键解决方案 新建一个项 叫TaidouCommon

是为了放置一些共享的类的 比如说操作码类 OperationCode

利用PhotonServer 搭设自己的服务器(上)_第13张图片

然后把Common中的Class类修改一下 改为枚举类型

利用PhotonServer 搭设自己的服务器(上)_第14张图片

接下来我们TaidouServer中要用使用TaidouCommon

我们在TaidouServer中添加引用

利用PhotonServer 搭设自己的服务器(上)_第15张图片


然后我们创建一个Handlers 处理器文件夹

处理器是用来处理服务器 客户端之间请求的

在Handlers文件夹下我们用来创建所有Handler 比如登陆的Handler

比如我们右键新建一个项  首先创建一个public的 HandlerBase类

每一个HandlerBase是用来处理一个OperationCode请求的 

那么我们在TaidouApplication中来管理HandlerBase

利用PhotonServer 搭设自己的服务器(上)_第16张图片

假设我们有了一个登陆的请求 我们在Handlers文件夹下新建一个项 public 叫LoginHandler 继承自HandlerBase

回到TaidouApplication这边 

我们需要添加一个注册的方法用来把所有的Handler注册给我们的TaidouApplication 让我们的TaidouApplication知道当前有哪些Handler 

然后根据请求的OperationCode来识别是使用什么样的Handler来进行处理

所以我们添加一个方法ResgisteHandlers()

利用PhotonServer 搭设自己的服务器(上)_第17张图片

接下来我们在ClientPeer类中有一个OnPerationRequest方法中是用来处理客户端发起的请求的

我们要拿到TaidouApplication中的Hnadlers字典  所以我们把TaidouApplication类做成单例类

利用PhotonServer 搭设自己的服务器(上)_第18张图片


然后回到ClientPeer类的OnPerationRequest方法 我们根据Operation,Code查找Handler 如果找到了 我们就调用Handler里面的方法

首先给HanderBase做成abstract抽象类 添加一个abstract抽象方法 OnHanderMessage

利用PhotonServer 搭设自己的服务器(上)_第19张图片


下面进行客户端的架构

回到Unity 我们首先需要导入两个Dll文件, 注意在导入TadidouCommon的时候需要 再VS中右键属性 有个目标框架改成.Net 2.0(现在最新Unity版本支持.net多少不知道)


在Unity Hierarchy视图里面新建个空物体 改名为PhotonEngine 添加个脚本叫PhotonEngine 利用这个脚本跟服务器进行连接

建立连接首先需要一个PhotonPeer

利用PhotonServer 搭设自己的服务器(上)_第20张图片


接下来我们再创建Crontroller  这个呢是用来处理具体每一个请求的 用来返回每一个请求的

在Unity Asset文件下的Photon文件下在创建一个Controller文件夹 建一个ControllerBase类

回到我们PhotonEngine 因为整个只存在一个PhotoEngine 所以做一个单例

我们把Controller 统一用PhotonEngine 进行管理

在PhotonEngine 创建一个字典管理ControllerBase

提供一个注册ControllerBase的方法  让Controller自己进行注册

利用PhotonServer 搭设自己的服务器(上)_第21张图片

ControllerBase类

利用PhotonServer 搭设自己的服务器(上)_第22张图片

接着呢 我们在PhotonEngine中

利用PhotonServer 搭设自己的服务器(上)_第23张图片


我们还需要再PhotonEngine定义一个委托delegate  当我们PhotonEngine连接到服务器上的时候就要调用


利用PhotonServer 搭设自己的服务器(上)_第24张图片


到此为止客户端的架构基本也这样了


下面进行举例

当我们登陆游戏时候要进行服务器选择

首先创建一Controller 这个Controller是用来加载服务器列表的Controller 叫做ServerController 这个需要继承ControllerBase

先给PhotonEngine添加一个发送请求的方法


然后回到ServerController 发起获取服务器的请求利用PhotonServer 搭设自己的服务器(上)_第25张图片

然后回到服务器 服务器要到MySQL中查询服务器列表 然后返还给客户端

首先我们先创建服务器

用MySQL-Front打开数据库

我们要和数据库进行操作还是首先要导入引用

利用PhotonServer 搭设自己的服务器(上)_第26张图片


在TaidouServer工程里添加一个文件夹DB 创建新项NHibernateHelper

利用PhotonServer 搭设自己的服务器(上)_第27张图片

然后我们在TaidouCommon下创建一个文件下Model 因为我们服务器也用客户端也用

首先添加一个新建项叫做ServerProperty

利用PhotonServer 搭设自己的服务器(上)_第28张图片

接下来创建映射类 我们在TaidouServer的DB下创建一个Maping文件夹 再新建一个ServerPropertyMap

利用PhotonServer 搭设自己的服务器(上)_第29张图片

然后我们回到MySQL创建一个表

利用PhotonServer 搭设自己的服务器(上)_第30张图片


接着呢我们在DB下创建一个Manager文件夹 这里面用来操作这个表的 ↑ 使用Magager类来去管理数据库 这个Manager相当于对数据库进行增删改查

创建ServerPropertyManager  一张表对应一个Model类对应一个Mapping类然后对应一个Manager类

利用PhotonServer 搭设自己的服务器(上)_第31张图片

然后我们要添加一个ServerHandler 我们需要使用到Json 所以添加引用LitJson.dll

然后我们在ServerCommon里面需要新建一个枚举类型

传递参数的时候为了区分参数 就是地点的Key 我们使用枚举类型去区分到底是什么参数

利用PhotonServer 搭设自己的服务器(上)_第32张图片

我们还需要一个枚举用来表示服务器连接的状态

利用PhotonServer 搭设自己的服务器(上)_第33张图片



你可能感兴趣的:(PhotonServer)