photon 服务器操作系统,PhotonServer游戏服务器部署及日志输出之美
本系列教程介绍游戏服务器端框架----PhotonServer
开发工具:Unity3d2017、VS2017、PhotonServer SDK
首先到官网下载其SDK,下载地址
服务器部署
将下载下来的SDK解压
目录结构如下
deploy:部署程序
doc:文档
lib:存放类库,在接下来的客户端(Unity3d)和服务器端开发需要引用到
src-server:Demo源码
接下来开始部署自己的游戏服务器
打开VS,新建类库
在项目中引用lib目录下的如下图五个类库
在项目中新建入口类,这里命名为MyGameServer
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Photon.SocketServer;
using System.IO;
using ExitGames.Logging;
using ExitGames.Logging.Log4Net;
using log4net.Config;
namespace MyGameServer
{
//服务器框架主类 框架入口
class MyGameServer : Photon.SocketServer.ApplicationBase
{
//单例模式
public static ILogger LOG = LogManager.GetCurrentClassLogger();
//当有客户端接入时候调用
protected override PeerBase CreatePeer(InitRequest initRequest)
{
return new ClientPeer(initRequest);
}
//当框架启动时候调用
protected override void Setup()
{
}
//当框架停止时候调用
protected override void TearDown()
{
}
}
}
新建客户端类,这里命名为ClientPeer
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Photon.SocketServer;
using PhotonHostRuntimeInterfaces;
namespace MyGameServer
{
class ClientPeer : Photon.SocketServer.ClientPeer
{
public ClientPeer(InitRequest ir) : base(ir) { }
//该客户端断开连接
protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail)
{
}
//该客户端出操作请求
protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
{
}
}
}
这里一个简单的服务端程序写好了,在PhotonServer的depoly目录下新建一个文件夹,这里命名为MyGame,再创建一个子目录,命名为bin
在右键项目->属性,将项目生成路径配置到刚刚创建的bin目录下
右键项目->点击生成
在MyGame->bin目录下生成执行程序
配置文件:在bin_Win64打开PhontonServer.config文本文件(XML)
打开配置文件,发现里面有两个示列程序,复制粘贴一个做为自己的
MaxMessageSize="512000"
MaxQueuedDataPerPeer="512000"
PerPeerMaxReliableDataInTransit="51200"
PerPeerTransmitRateLimitKBSec="256"
PerPeerTransmitRatePeriodMilliseconds="200"
MinimumTimeout="5000"
MaximumTimeout="30000"
DisplayName="LoadBalancing (MyCloud)">
IPAddress="0.0.0.0"
Port="5055"
OverrideApplication="Master">
IPAddress="0.0.0.0"
Port="5056"
OverrideApplication="Game">
IPAddress="0.0.0.0"
Port="4530"
OverrideApplication="Master"
PolicyFile="Policy\assets\socket-policy.xml"
InactivityTimeout="10000"
>
IPAddress="0.0.0.0"
Port="4531"
OverrideApplication="Game"
PolicyFile="Policy\assets\socket-policy.xml"
InactivityTimeout="10000">
IPAddress="0.0.0.0"
Port="4520">
IPAddress="0.0.0.0"
Port="843"
PolicyFile="Policy\assets\socket-policy.xml">
IPAddress="0.0.0.0"
Port="943"
PolicyFile="Policy\assets\socket-policy-silverlight.xml">
IPAddress="0.0.0.0"
Port="9090"
DisableNagle="true"
InactivityTimeout="10000"
OverrideApplication="Master">
IPAddress="0.0.0.0"
Port="9091"
DisableNagle="true"
InactivityTimeout="10000"
OverrideApplication="Game">
Assembly="PhotonHostRuntime, Culture=neutral"
Type="PhotonHostRuntime.PhotonDomainManager"
UnhandledExceptionPolicy="Ignore">
Name="Master"
BaseDirectory="LoadBalancing\Master"
Assembly="Photon.LoadBalancing"
Type="Photon.LoadBalancing.MasterServer.MasterApplication"
ForceAutoRestart="true"
WatchFiles="dll;config"
ExcludeFiles="log4net.config"
>
Name="Game"
BaseDirectory="LoadBalancing\GameServer"
Assembly="Photon.LoadBalancing"
Type="Photon.LoadBalancing.GameServer.GameApplication"
ForceAutoRestart="true"
WatchFiles="dll;config"
ExcludeFiles="log4net.config">
Name="CounterPublisher"
BaseDirectory="CounterPublisher"
Assembly="CounterPublisher"
Type="Photon.CounterPublisher.Application"
ForceAutoRestart="true"
WatchFiles="dll;config"
ExcludeFiles="log4net.config">
MaxMessageSize="512000"
MaxQueuedDataPerPeer="512000"
PerPeerMaxReliableDataInTransit="51200"
PerPeerTransmitRateLimitKBSec="256"
PerPeerTransmitRatePeriodMilliseconds="200"
MinimumTimeout="5000"
MaximumTimeout="30000"
DisplayName="MMO Demo"
>
IPAddress="0.0.0.0"
Port="5055"
OverrideApplication="MMoDemo">
IPAddress="0.0.0.0"
Port="4530"
PolicyFile="Policy\assets\socket-policy.xml"
InactivityTimeout="10000"
OverrideApplication="MMoDemo"
>
IPAddress="0.0.0.0"
Port="843"
PolicyFile="Policy\assets\socket-policy.xml"
InactivityTimeout="10000">
IPAddress="0.0.0.0"
Port="943"
PolicyFile="Policy\assets\socket-policy-silverlight.xml"
InactivityTimeout="10000">
IPAddress="0.0.0.0"
Port="9090"
DisableNagle="true"
InactivityTimeout="10000"
OverrideApplication="MMoDemo">
Assembly="PhotonHostRuntime, Culture=neutral"
Type="PhotonHostRuntime.PhotonDomainManager"
UnhandledExceptionPolicy="Ignore">
Name="MMoDemo"
BaseDirectory="MmoDemo"
Assembly="Photon.MmoDemo.Server"
Type="Photon.MmoDemo.Server.PhotonApplication"
ForceAutoRestart="true"
WatchFiles="dll;config"
ExcludeFiles="log4net.config">
Name="CounterPublisher"
BaseDirectory="CounterPublisher"
Assembly="CounterPublisher"
Type="Photon.CounterPublisher.Application"
ForceAutoRestart="true"
WatchFiles="dll;config"
ExcludeFiles="log4net.config">
MaxMessageSize="512000"
MaxQueuedDataPerPeer="512000"
PerPeerMaxReliableDataInTransit="51200"
PerPeerTransmitRateLimitKBSec="256"
PerPeerTransmitRatePeriodMilliseconds="200"
MinimumTimeout="5000"
MaximumTimeout="30000"
DisplayName="MyGameServer (LJL)">
IPAddress="0.0.0.0"
Port="5055"
OverrideApplication="MYGameServer">
IPAddress="0.0.0.0"
Port="4530"
OverrideApplication="MYGameServer"
PolicyFile="Policy\assets\socket-policy.xml"
InactivityTimeout="10000"
>
IPAddress="0.0.0.0"
Port="4520">
IPAddress="0.0.0.0"
Port="843"
PolicyFile="Policy\assets\socket-policy.xml">
IPAddress="0.0.0.0"
Port="943"
PolicyFile="Policy\assets\socket-policy-silverlight.xml">
IPAddress="0.0.0.0"
Port="9090"
DisableNagle="true"
InactivityTimeout="10000"
OverrideApplication="MYGameServer">
Assembly="PhotonHostRuntime, Culture=neutral"
Type="PhotonHostRuntime.PhotonDomainManager"
UnhandledExceptionPolicy="Ignore">
Name="MYGameServer"
BaseDirectory="MyGame"
Name="CounterPublisher"
BaseDirectory="CounterPublisher"
Assembly="CounterPublisher"
Type="Photon.CounterPublisher.Application"
ForceAutoRestart="true"
WatchFiles="dll;config"
ExcludeFiles="log4net.config">
日志输出
在MyGameServer的Setup函数里添如下代码
//当框架启动时候调用
protected override void Setup()
{
//设置配置文件属性
log4net.GlobalContext.Properties["Photon:ApplicationLogPath"] = Path.Combine(Path.Combine(this.ApplicationRootPath, "bin_Win64"), "log");//设置日志文件存储目录
//日志配置文件
FileInfo logConfigFileInfo = new FileInfo(Path.Combine(this.BinaryPath, "log4net.config"));
if (logConfigFileInfo.Exists)//配置文件存在
{
//设置Photon日志插件为Log4Next
LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance);
//Log4Next这个插件读取配置文件
XmlConfigurator.ConfigureAndWatch(logConfigFileInfo);
}
LOG.Info("服务器初始化完成");
}
测试
运行PhotonServer,运行MyGameServer
发现在bin_Win64->log文件夹下成功生成了MyGameServer.log文件
打开日志文件,有打印,表明配置成功
photon 服务器操作系统,PhotonServer游戏服务器部署及日志输出之美相关推荐
- photon 服务器操作系统,PhotonServer游戏服务器端教程
老师我是看了泰斗破坏神的服务器,但是在利用Phtonserver从数据库中获取服务器的列表,它无法获取,哪个说ssl主机本地主机不支持 //实现父类的抽象方法 处理收到客户端的请求的方法 ... 追评 ...
- 服务器操作系统linux,关于服务器的操作系统
1.服务器操作系统都有哪些? 服务器操作系统一般分两类,一类是linux占据了大量的服务器市场份额,一类是windows server占有少量的市场份额.服务器操作系统的市场和PC操作系统的市场恰巧是 ...
- 攻击游戏服务器 修改数据库,游戏服务器数据库修改器
游戏服务器数据库修改器 内容精选 换一换 应用容器化改造有三种方式,您可单击这里查看.本教程以某游戏为例,将该游戏进行微服务的架构改造,再进行容器化.本教程不对改造细节做深度讲解,仅讲解大致的建议.如 ...
- 战地4稳定的服务器,战地4 游戏服务器
战地4 游戏服务器 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 您可以修改云 ...
- 游戏服务器排队系统,游戏服务器排队功能
游戏服务器排队功能 内容精选 换一换 座席已签入座席登录后,获取当前座席已签入技能队列上的排队人数.设置成"GET".该接口仅支持GET方法,不支持PUT.POST和DELETE等 ...
- 如何修改游戏服务器,怎样修改游戏服务器
怎样修改游戏服务器 内容精选 换一换 华为云帮助中心,为用户提供产品简介.价格说明.购买指南.用户指南.API参考.最佳实践.常见问题.视频帮助等技术文档,帮助您快速上手使用华为云服务. 远程登录裸金 ...
- 游戏页面显示服务器未开,网关游戏服务器未开启
网关游戏服务器未开启 内容精选 换一换 通过以下方法确保API网关调用后端服务器的安全:为API绑定签名密钥.在绑定签名密钥后,API网关到后端服务的请求增加签名信息,后端服务收到请求后计算签名信息, ...
- 华为全网通怎么显示无服务器,全网通游戏服务器
全网通游戏服务器 内容精选 换一换 如果网站直接无法访问,可能是由于安全组没有放行网站或者远程连接工具使用的端口.本节操作以80端口为例介绍排查云服务器端口不通问题的操作步骤.如果实例无法对外提供HT ...
- 游戏服务器异常修复,游戏服务器异常修复
游戏服务器异常修复 内容精选 换一换 您可以通过"应用管理"页面的应用列表,快速查看应用状态,及相关异常信息,如图1所示.包括:应用状态:即图1中的①应用异常信息:即图1中的②云服 ...
最新文章
- ajax html成功 asp,AJAX ASP
- POJ 3469 Dual Core CPU (最小割建模)
- [CentOS7] systemd
- linux 无线网卡休眠,无线网卡在Linux下活起来
- 每天Leetcode 刷题 初级算法篇-杨辉三角
- java static final泛型类对象
- 数学建模常用算法汇总及python,MATLAB实现(七) —— sklearn和SPSS实现主成分分析
- ELEMENTARY: Is Even
- shell脚本使用两个横杠接收外部参数
- 分享下nas使用技巧,以及最简单的远程开机(用HS-200S做演示)
- java隐藏字符_Java原生隐藏字符-工具类
- 移动端网页唤醒app
- 日本市场智能电视的主要功能
- 快速打造一款新款爆品可以这么做
- 如何经营一家水果店,怎么做好水果店的经营
- 树莓派3B+配置WiFi(基于raspbian系统)
- 爬虫小案例之爬取京东商品链接
- 永磁同步电机滞环电流控制
- 水文监测场景的数据通信规约解析和落地实践
- Office 365系列之十五:配置Outlook MAPI方式连接Exchange Online
热门文章
- java安装32位环境遇到的问题
- ubuntu 16.04 出现failed to start session解决方法
- python 调用cplex-学术版
- 谷歌中国算法比赛解题报告 APAC2015C
- 分享Silverlight/WPF/Windows Phone一周学习导读(11月21日-11月27日)
- 萤火虫算法_每日论文38:基于改进萤火虫算法的分布式电源优化配置
- 使用 js 把当前面下载成为图片
- 本科计算机专业考研跨考传媒,这8大专业考研最容易扎堆,你扎堆了么?
- VM14+CentOS7安装
- ensp静态综合实验报告