当前位置:首页 > CN2资讯 > 正文内容

unity 服务器架构 unity photon服务器

2天前CN2资讯



Photon是一款非常不错的游戏服务端引擎,但是网上的入门教程太少了,特别是中文版的。小弟就自己琢磨吧,下面一系列是对Photon的研究过程,如有哪个地方写的有误,望请前辈指教。

首先去https://www.photonengine.com/en/OnPremise/Download下载服务器端SDK,需要登录的,就先注册一个账号吧.

解压出来是四个文件

deploy:主要存放photon的服务器控制程序和服务端Demo

doc:顾名思义,文档

lib:Photon类库,开发服务端需要引用的

src-server:服务端Demo源代码

今天搞一个客户端连接服务器最简单的程序,也算是hello world吧

客户端以Unity3d 为基础,hello world包括配置服务器,客户端,客户端连接服务器,客户端状态改变。

第一步:配置服务器端

不同平台编译出的Photon目录,以“bin_”为前缀命名目录,选择你的电脑对应的文件夹打开,看到PhotonControl.exe,运行后,可以在windows右下角看到一个图标,点击图标可以看到photon服务器控制菜单,这个以后再做详细介绍.


打开visual stadio,新建项目,选择c# 类库,应用程序名字叫做MyServer.

完成后,把我们的Class1.cs,改名为MyApplication.cs,作为服务器端主类.然后在当前项目添加引用,链接到刚才提到的lib文件夹目录下,添加以下引用:

ExitGamesLibs.dll,Photon.SocketServer.dll,PhotonHostRuntimeInterfaces.dll

然后新建一个类:MyPeer.cs,写法如下:




  • 1. using System; 2. using System.Collections.Generic; 3. using Photon.SocketServer; 4. using PhotonHostRuntimeInterfaces; 5. 6. namespace MyServer 7. { 8. public class MyPeer : PeerBase 9. { 10. 11. public MyPeer(IRpcProtocol protocol,IPhotonPeer photonPeer) 12. base(protocol, photonPeer) 13. { 14. 15. } 16. 17. protected override void OnDisconnect(PhotonHostRuntimeInterfaces.DisconnectReason reasonCode, string reasonDetail) 18. { 19. 20. } 21. 22. protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) 23. { 24. 25. } 26. } 27. }


    接上,MyApplication.cs类这样写:



  • 1. using System; 2. using System.Collections.Generic; 3. using System.Linq; 4. using System.Text; 5. using Photon.SocketServer; 6. 7. namespace MyServer 8. { 9. public class MyApplication : ApplicationBase 10. { 11. 12. protected override PeerBase CreatePeer(InitRequest initRequest) 13. { 14. return new MyPeer(initRequest.Protocol, initRequest.PhotonPeer); 15. } 16. 17. protected override void Setup() 18. { 19. 20. } 21. 22. protected override void TearDown() 23. { 24. 25. } 26. } 27. }




    完成后,在解决方案资源管理器中选中当前项目,打开属性,选择生成选项卡,把输出路径改成bin\,然后就生成类库吧

    复制当前项目下MyServer文件夹到deploy文件夹下,删除除了bin文件夹以外其他所有文件和文件夹,然后文本编辑器打开deploy\bin_Win64\PhotonServer.config配置文件(我的是win7 64位机器,就选择这个),添加以下配置:



  • 1. <Application 2. Name="MyServer" 3. BaseDirectory="MyServer" 4. Assembly="MyServer" 5. Type="MyServer.MyApplication" 6. EnableAutoRestart="true" 7. WatchFiles="dll;config" 8. ExcludeFiles="log4net.config">


    Name:项目名字

    BaseDirectory:根目录,deploy文件夹下为基础目录

    Assembly :是在生成的类库中的bin目录下与我们项目名称相同的.dll文件的名字

    Type:是主类的全称,在这里是:MyServer.MyApplication,一定要包括命名空间

    EnableAutoRestart:是否是自动启动,表示当我们替换服务器文件时候,不用停止服务器,替换后photon会自动加载文件

    WatchFiles和ExcludeFiles

    这段代码放在<Default><Applications>放这里</Applications></Default>节点下面

    完成后保存,运行托盘程序deploy\bin_Win64\PhotonControl.exe,

    运行它,如果托盘图标没有变灰,说明服务器运行成功。


    下面开始编写客户端代码,首先从官网下载https://www.photonengine.com/Download/Photon-Unity3D-Sdk_v4-0-0-10.zip

    打开Unity3d编辑器,首先把Photon-Unity3D_v3-0-1-14_SDK\libs\Release\Photon3Unity3D.dll导入到Unity中,新建脚本TestConnection.cs,脚本代码如下:




  • 1. using UnityEngine; 2. using System.Collections; 3. 4. using ExitGames.Client.Photon; 5. 6. public class TestConnection : MonoBehaviour,IPhotonPeerListener { 7. public PhotonPeer peer; 8. // Use this for initialization 9. void Start () { 10. new PhotonPeer(this,ConnectionProtocol.Udp); 11. } 12. 13. // Update is called once per frame 14. void Update () { 15. peer.Service(); 16. } 17. 18. void OnGUI(){ 19. if(GUI.Button(new Rect(Screen.width/2,Screen.height/2,200,100),"Connect")){ 20. "localhost:5055","MyServer"); 21. } 22. } 23. 24. #region IPhotonPeerListener implementation 25. public void DebugReturn (DebugLevel level, string message) 26. { 27. 28. } 29. 30. public void OnOperationResponse (OperationResponse operationResponse) 31. { 32. 33. } 34. 35. public void OnStatusChanged (StatusCode statusCode) 36. { 37. switch(statusCode){ 38. case StatusCode.Connect: 39. "Connect Success!"); 40. break; 41. case StatusCode.Disconnect: 42. "Disconnect!"); 43. break; 44. } 45. } 46. 47. public void OnEvent (EventData eventData) 48. { 49. 50. } 51. #endregion 52. }



    把脚本绑定到场景中物体上,运行后可以看到一个按钮,点击连接,如果连接成功会打印"Connect Success!".

    Unity客户端例子到这里下载



      你可能想看:
    • 扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/20763.html

      分享给朋友:

      “unity 服务器架构 unity photon服务器” 的相关文章

      服务器租赁指南:如何选择适合的云服务和价格

      对于很多企业和个人用户来说,服务器租赁是一个非常实用的选择。简单来说,服务器租赁就是用户向服务器提供商支付费用,然后获得在一定时间内使用服务器的权利。这样一来,用户就无需花费时间和金钱去购买和维护物理服务器,可以迅速开始在线业务。 当我第一次接触服务器租赁时,发现这一服务的便利性令我十分惊讶。传统的...

      原生IP的重要性及其在外贸中的应用价值

      原生IP的定义与特点 谈到原生IP,这个概念在网络世界中显得极为重要。简单来说,原生IP是指那些与虚拟专用服务器(VPS)所在国家一致的IP地址。这意味着,它们的注册信息和其实际位置是相符的,根本没有经过修改或伪造。这一点在外贸业务中尤为重要,很多情况下,企业需要保证他们的服务器IP地址真的是注册所...

      BBR对国内网站的实际作用与应用效果分析

      BBR(Bottleneck Bandwidth and Round-trip propagation time)算法是由Google推出的一种TCP拥塞控制算法。它的设计初衷是为了优化网络连接的传输速率和稳定性,尤其是在面临高延迟和波动网络条件时表现优异。可能的很多朋友会问,BBR到底是个什么东西...

      波测评分析及其在医疗与教育领域的重要性

      波测评的定义与重要性 波测评是一种重要的技术手段,专注于评估波动的特性和行为。我发现,这种测评方法在多个行业中都扮演了至关重要的角色,比如医疗、工业和电力等领域。以脑波测评为例,它不仅可以帮助医生了解病人的大脑状态,还能在教育领域评估学习能力。这些应用展示了波测评技术在科学与技术进步中的不可或缺性。...

      云服务器购买指南:选择适合你的云服务方案

      在我开始谈论云服务器购买指南时,首先让我给你解释一下“云服务器”是什么。简单来说,云服务器是基于云计算技术构建的虚拟服务器。它通过网络将计算、存储和其他资源结合在一起,提供灵活的计算能力。相比传统的物理服务器,云服务器的优势在于其高度的可扩展性、经济性和便捷性。你可以根据具体需求随时增减资源,而且没...

      反向代理的工作原理与网络架构中的重要性

      在探讨反向代理之前,首先了解它的基本定义非常重要。反向代理是一种网络服务,它充当客户端和服务器之间的中介。当用户通过反向代理发送请求时,这些请求并不会直接到达目标服务器。相反,反向代理会收集请求,然后转发给适当的服务器处理。处理完毕后,服务器将响应返回给反向代理,最后再由反向代理将结果传递给客户端。...