unity进阶学习笔记:photonServer测试

news2024/10/2 16:17:59

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

1 photonServer下载安装
在这里插入图片描述

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

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

2 Visual Studio安装
我之前一直使用VS Code,和Visual Studio还有一定区别。这里我们下载Visual Studio Community版本
在这里插入图片描述
下载时,如从官网下载过慢,可以将下载链接换为国内源(网上教程很多)

安装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文件
在这里插入图片描述

我们进入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,然后生成项目
在这里插入图片描述
生成后的bin文件
在这里插入图片描述

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"
		>

		<!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. -->
		<!-- Port 5055 is Photon's default for UDP connections. -->
		<UDPListeners>
			<UDPListener
				IPAddress="0.0.0.0"
				Port="5055"
				OverrideApplication="PSTest">
			</UDPListener>
		</UDPListeners>

		<!-- 0.0.0.0 opens listeners on all available IPs. Machines with multiple IPs should define the correct one here. -->
		<!-- Port 4530 is Photon's default for TCP connecttions. -->
		<!-- A Policy application is defined in case that policy requests are sent to this listener (known bug of some some flash clients) -->
		<TCPListeners>
			<TCPListener
				IPAddress="0.0.0.0"
				Port="4530"
				PolicyFile="Policy\assets\socket-policy.xml"
				InactivityTimeout="10000"
				OverrideApplication="PSTest"
				>
			</TCPListener>
		</TCPListeners>

		<!-- Defines the Photon Runtime Assembly to use. -->
		<Runtime
			Assembly="PhotonHostRuntime, Culture=neutral"
			Type="PhotonHostRuntime.PhotonDomainManager"
			UnhandledExceptionPolicy="Ignore">
		</Runtime>


		<!-- Defines which applications are loaded on start and which of them is used by default. Make sure the default application is defined. -->
		<!-- Application-folders must be located in the same folder as the bin_win32 folders. The BaseDirectory must include a "bin" folder. -->
		<Applications Default="PSTest">

			<!-- MMO Demo Application -->
			<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

		<!-- Policy request listener for Unity and Flash (port 843) and Silverlight (port 943)  -->
		<PolicyFileListeners>
		  <!-- multiple Listeners allowed for different ports -->
		  <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>

		<!-- WebSocket (and Flash-Fallback) compatible listener -->
		<WebSocketListeners>
			<WebSocketListener
				IPAddress="0.0.0.0"
				Port="9090"
				DisableNagle="true"
				InactivityTimeout="10000"
				OverrideApplication="MMoDemo">
			</WebSocketListener>
		</WebSocketListeners>

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/544568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unittest接口测试生成报告和日志方法

HTML报告 直接把HTMLTestRunner.py放入工程目录即可报告脚本封装 #HTNL格式报告now datetime.datetime.now().strftime(%Y-%m-%d_%H_%M_%S)htmlreport reportpath "/" now r"result.html"print("测试报告生成地址&#xff1a;%s"% htmlre…

Revit干货 | 系统族、内建族、可载入族一次性搞清楚!

对于使用人数较多的revit软件&#xff0c;其中的许多概念与我们常用的CAD完全不同&#xff0c;以至于让许多工程师觉得revit软件有点高深莫测&#xff0c;不可琢磨&#xff0c;从而有了抗拒心理。 Revit软件中的重要概念&#xff1a; “族”是revit软件中的很重要也很基本的概念…

程序的各种段以及堆栈相关问题

C中一般有三种变量&#xff1a; 局部变量全局变量静态变量 C中一般有五个内存段&#xff1a; 代码段 也叫文本段&#xff0c;包含frequently executed code通常是只读的&#xff08;未了避免程序被错误改写&#xff09;代码段是不包含程序变量&#xff08;如局部变量、全局变…

【数据结构】带头双向链表,真正的六边形战士

文章目录 概要整体架构流程小结 概要 *数据结构中的链表在实际开发中应用非常广泛&#xff0c;但写一个链表并不是一件简单的事情。链表有八种结构&#xff0c;对于刚入门的新手来说&#xff0c;往往会先经历单链表的折磨。 而今天我要讲的带头双向链表非常适合新手学习&#…

C++6.类和对象(下)

1.友元函数&#xff0c;一般现在类的最上面。 2.函数的参数中&#xff0c;如果不改变&#xff0c;尽量加上const修饰。 3.对于自定义类型&#xff0c;使用运算符进行操作基本上都要用运算符重载&#xff0c;但是有些运算符重载会默认自动生成。 4.初始化列表&#xff0c;是成…

【wpf】列表类,用相对源时,如何绑定到子项

前言 在之前的一篇文章 &#xff1a;《【wpf】深度解析&#xff0c;Binding是如何寻找数据源的》https://blog.csdn.net/songhuangong123/article/details/126195727#:~:text%E3%80%90wpf%E3%80%91%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90%EF%BC%8CBinding%E6%98%AF%E5%A6%82%E4…

读书|林曦:她把自己的生活,过成了无用但丰盈的美学

时代在以加速度的方式变化&#xff0c;让人难以从容。而当我们陷于横向的比较系统&#xff0c;权衡着卷、躺、润时&#xff0c;也有人在探寻另一条纵向的路——向古人学习&#xff0c;以传统美学关照和滋养当下生活。      立夏之际&#xff0c;水墨画家林曦的新作《无用之…

33岁跳槽无路,濒临绝望之际受贵人指点,成功上岸阿里(测试岗)

写在前面 马上过34岁生日了&#xff0c;和大家聊聊最近的情况&#xff0c;半年前还在迷茫该学什么&#xff0c;怎样才能走出现在的困境&#xff0c;半年后已经成功上岸阿里&#xff0c;感谢在这期间帮助我的每一个人 开始 30多岁工作的时候总是有种力不从心的感觉&#xff0…

网络安全工程师需要考什么证吗?

目前网络安全行业&#xff0c;国内都有哪些证书可以考。 一、CISP-PTE &#xff08;国家注册渗透测试工程师&#xff09; CISP-PTE即注册信息安全渗透测试工程师&#xff0c;该证书由中国信息安全测评中心颁发&#xff0c;证书是国内唯一认可的渗透测试认证&#xff0c;专业性…

AIOps社区低代码项目火热报名中|中科院开源之夏2023,万元现金等你来拿!

活动介绍 开源之夏是由中科院软件所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动&#xff0c;旨在鼓励在校学生积极参与开源软件的开发维护&#xff0c;培养和发掘更多优秀的开发者&#xff0c;促进优秀开源软件社区的蓬勃发展&#xff0c;助力开源软件供应链…

告别Excel,免费大数据分析与可视化工具,让你的论文图表“高大上”

数据分析工具很多&#xff0c;可以分为表格、数据库、BI工具、编程等四大工具。每个大类又有很多的工具&#xff0c;例如表格包括Excel、WPS、Google Sheets、Airtable等。编程工具包括Python和R。 搞科研几年了&#xff0c;笔者一直都是在使用Excel做数据分析和可视化&#xf…

Go语言中sync.Map、sync.Pool和Context的用法

目录 【sync.Map】 实现线程安全的 map 类型 使用 sync.Map 实现并发读写的map 【sync.Pool】 使用 带缓冲channel 实现对象池 使用 sync.Pool 创建临时对象池 【Context 上下文】 Context应用&#xff1a;实现带超时功能的远程调用 Context应用&#xff1a;监控指令…

电脑找不到MSVCR120.dll怎么办/MSVCR120.dll是什么?

电脑提示找不到MSVCR120.dll怎么办&#xff1f;你是否也遇到这个问题&#xff0c;MSVCR120.dll是什么文件呢&#xff1f;小编今天就把MSVCR120.dll文件丢失的修复方法给大家。msvcr120.dll是Microsoft Visual C 的一部分&#xff0c;它是Windows操作系统中的一个动态链接库文件…

计算卸载-论文05-双层优化(无线充电与卸载)

标题&#xff1a;《A Divide-and-Conquer Bilevel Optimization Algorithm for Jointly Pricing Computing Resources and Energy in Wireless Powered MEC》 期刊&#xff1a;IEEE TRANSACTIONS ON CYBERNETICS&#xff0c;2022 一、理论梳理 问题&#xff1a;相比于移动云…

基于Python长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析等领域中的应用

植被是陆地生态系统中最重要的组分之一&#xff0c;也是对气候变化最敏感的组分&#xff0c;其在全球变化过程中起着重要作用&#xff0c;能够指示自然环境中的大气、水、土壤等成分的变化&#xff0c;其年际和季节性变化可以作为地球气候变化的重要指标。此外&#xff0c;由于…

基于MAX-10 FPGA 读取超声波模块HC_SR04距离数据到数码管上

目录 实验现象简单介绍超声波测距模块HC_SR04模块框图模块编写测距信号源距离计算数码管模块顶层模块 总结 实验现象 将MAX-10小脚丫FPGA和超声波模块HC_SR04插在面包板上&#xff0c;用杜邦线将对应的引脚连接好&#xff0c;烧录程序&#xff0c;小脚丫自带的数码管显示距离数…

全网火爆,性能测试面试常问+测试小技巧总结,要卷就卷成最强的...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 性能测试面试常问…

itop-3568开发板驱动学习笔记(26)设备树(五)中断实例分析

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记 文章目录 中断控制器配置中断其他属性 中断控制器 设备树中的中断控制器节点和 GPIO 控制器类似&#xff0c;都是由芯片厂家编写&#xff0c;如果是外部中断&#xff0c;中断控制器和 GPIO 控制器是共存的&#xff…

TDengine “亮相” ODSC East,开发者争相驻足交流

最近 TDengine 终于将时序数据技术创新这把火 烧到了美国波士顿 并获得了一众国外开发者的热捧 而这一次 TDengine 的成功落地 还得从两天前的一场数据大会说起... 波士顿当地时间 5 月 9 日&#xff0c;一场名为 ODSC East 的数据技术盛会在波士顿缓缓拉开序幕&#xff0…

YOLO V1-V3 简单介绍

目录 1. YOLO 2. YOLO V1 3. YOLO V2 4. YOLO V3 5. YOLO V3 SPP网络 5.1 Mosaic 图像增强 5.2 SPP 模块 5.3 CIou Loss 5.4 Focal loss 1. YOLO YOLO 是目标检测任务强大的算法&#xff0c;将目标检测的问题转换边界框和相关概率的回归问题&#xff0c;是目标检测…