unity进阶学习笔记:photonServer测试

photonServer是由photon发布的一个网络框架,其封装了UDP和TCP通信机制让用户可以直接调用API实现网络游戏通信

1 photonServer下载安装
unity进阶学习笔记:photonServer测试_第1张图片

进入Photon官网的SDK选项,选择下载Server。目前Server版本已经更新到v5,这里我为了和教程保持一致下载的是老版本v4.下载完后按照安装指引安装即可

PhotonServer免费版初始只支持20人联机,创建photon账号后可以免费获取将服务器扩容到100人的key。如果要更大容量就需要使用付费版

2 Visual Studio安装
我之前一直使用VS Code,和Visual Studio还有一定区别。这里我们下载Visual Studio Community版本
unity进阶学习笔记:photonServer测试_第2张图片
下载时,如从官网下载过慢,可以将下载链接换为国内源(网上教程很多)

安装Visual Studio时,由于我们做的是unity游戏开发,在安装选项中添加.NET桌面开发和Unity游戏开发。

2 photonserver工作空间

所有可执行的服务器程序都位于Photon-OnPremise-Server-SDK_v4-0-29-11263\deploy文件夹下。如果我们要创建一个新的服务器程序,在该文件夹下面创建新文件夹,并在新建文件夹下面创建文件夹bin。所有的服务器dll文件要放在bin下面

这里我们新建文件夹PSTest,并在下面新建文件夹bin

在编写服务器程序之前,我们要导入photonserver的框架。在解决方法资源管理器中,我们右键依赖性添加项目引用,选择Photon-OnPremise-Server-SDK_v4-0-29-11263\lib 文件夹下面的以下dll文件
unity进阶学习笔记:photonServer测试_第3张图片

我们进入Visual Studio,新建项目类型类库。创建类PSTest

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Photon.SocketServer;

namespace PSTest
{
    public class PSTest : ApplicationBase
    {

        // when client connects
        protected override PeerBase CreatePeer(InitRequest initRequest)
        {
            PSPeer peer = new PSPeer(initRequest);
            return peer;
        }

        protected override void Setup()
        {
            
        }

        protected override void TearDown()
        {
            
        }
    }
}

PSTest为服务器入口类,用于启动服务器,继承自ApplicationBase。该类必须实现方法CreatePeer,Setup,TearDown,分别在客户端连接上服务器,服务器启动,服务器关闭时自动进行调用。其中CreatePeer方法要返回一个PeerBase对象,我们后面要单独创建。

在photonServer中的Peer即为对socket的封装。

PSPeer类

using Photon.SocketServer;
using PhotonHostRuntimeInterfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace PSTest
{
    public class PSPeer : ClientPeer
    {
        public PSPeer(InitRequest initRequest) : base(initRequest)
        {
        }

        protected override void OnDisconnect(DisconnectReason reasonCode, string reasonDetail)
        {
        }

        protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters)
        {
        }
    }
}

PSPeer继承自ClientPeer类,需要实现构造方法,OnDisconnect,OnOperationRequest。我们这里仅为测试,先不在方法类写任何内容。

程序编写完成后,我们右键项目->属性 进入输出选项,将输出的基路径设为Photon-OnPremise-Server-SDK_v4-0-29-11263\deploy\PSTest\bin,然后生成项目
unity进阶学习笔记:photonServer测试_第4张图片
生成后的bin文件
unity进阶学习笔记:photonServer测试_第5张图片

3 修改配置文件

生成项目后在photonServer中依然无法正常启动PSTest,我们还需要对配置文件进行修改。进入Photon-OnPremise-Server-SDK_v4-0-29-11263\deploy\bin_Win64文件夹下面,打开文件PhotonServer.config

这里我们直接复制示例的节点MMoDemo并在其基础上修改文件

	<PSTest
		MaxMessageSize="512000"
		MaxQueuedDataPerPeer="512000"
		PerPeerMaxReliableDataInTransit="51200"
		PerPeerTransmitRateLimitKBSec="256"
		PerPeerTransmitRatePeriodMilliseconds="200"
		MinimumTimeout="5000"
		MaximumTimeout="30000"
		DisplayName="PSTest"
		>

		
		
		<UDPListeners>
			<UDPListener
				IPAddress="0.0.0.0"
				Port="5055"
				OverrideApplication="PSTest">
			UDPListener>
		UDPListeners>

		
		
		
		<TCPListeners>
			<TCPListener
				IPAddress="0.0.0.0"
				Port="4530"
				PolicyFile="Policy\assets\socket-policy.xml"
				InactivityTimeout="10000"
				OverrideApplication="PSTest"
				>
			TCPListener>
		TCPListeners>

		
		<Runtime
			Assembly="PhotonHostRuntime, Culture=neutral"
			Type="PhotonHostRuntime.PhotonDomainManager"
			UnhandledExceptionPolicy="Ignore">
		Runtime>


		
		
		<Applications Default="PSTest">

			
			<Application
				Name="PSTest"
				BaseDirectory="PSTest"
				Assembly="PSTest"
				Type="PSTest.PSTest"
				ForceAutoRestart="true"
				WatchFiles="dll;config"
				ExcludeFiles="log4net.config">
			Application>

		Applications>
	PSTest>
	

修改方式如下:

1 对于所有命名为MMoDemo的地方,全部改名PSTest。注意在Application节点下Type属性为 命名空间+文件名 因此要输入PSTest.PSTest (这里命名空间名字也为PSTest)

2

		
		<PolicyFileListeners>
		  
		  <PolicyFileListener
			IPAddress="0.0.0.0"
			Port="843"
			PolicyFile="Policy\assets\socket-policy.xml"
			InactivityTimeout="10000">
		  PolicyFileListener>
		  <PolicyFileListener
			IPAddress="0.0.0.0"
			Port="943"
			PolicyFile="Policy\assets\socket-policy-silverlight.xml"
			InactivityTimeout="10000">
		  PolicyFileListener>
		PolicyFileListeners>

		
		<WebSocketListeners>
			<WebSocketListener
				IPAddress="0.0.0.0"
				Port="9090"
				DisableNagle="true"
				InactivityTimeout="10000"
				OverrideApplication="MMoDemo">
			WebSocketListener>
		WebSocketListeners>

这一段暂时用不上,可以直接删掉

最后,启动photonserver服务器即可运行PSTest。如果服务器启动后很快自动关闭,多半是程序哪里有问题,可以根据日志信息排查。这里我一开始一直启动后几秒钟就关闭,最后发现是配置文件有拼写错误

你可能感兴趣的:(unity学习笔记,unity,c#,服务器,photonserver,游戏服务器)