Photon服务器引擎入门

简介: Photon是个好东西,但是网上的入门教程太少了,特别是中文版的。小弟就自己琢磨吧,下面一系列是对Photon的研究过程,如有哪个地方写的有误,望请前辈指教。

Photon是个好东西,但是网上的入门教程太少了,特别是中文版的。小弟就自己琢磨吧,下面一系列是对Photon的研究过程,如有哪个地方写的有误,望请前辈指教。

首先去PhotonServer SDK下载服务器端SDK,需要登录的,就先注册一个账号吧.

解压出来是四个文件

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

doc:顾名思义,文档

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

src-server:服务端Demo源代码


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

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

第一步:配置服务器端

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


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

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

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

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

[csharp]  view plain copy print ?
  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类这样写:

[csharp]  view plain copy print ?
  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位机器,就选择这个),添加以下配置:


[html]  view plain copy print ?
  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,

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



下面开始编写客户端代码,首先从官网下载Unity SDK

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

[csharp]  view plain copy print ?
  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.         peer = 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.             peer.Connect("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.             Debug.Log("Connect Success!");  
  40.             break;  
  41.         case StatusCode.Disconnect:  
  42.             Debug.Log("Disconnect!");  
  43.             break;  
  44.         }  
  45.     }  
  46.   
  47.     public void OnEvent (EventData eventData)  
  48.     {  
  49.           
  50.     }  
  51.     #endregion  
  52. }  

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

Unity客户端例子到这里下载

相关文章
|
6月前
|
存储 固态存储 Linux
VMware ESXi 9.0 正式版发布下载 - 领先的裸机 Hypervisor
VMware ESXi 9.0 正式版发布下载 - 领先的裸机 Hypervisor
1803 1
VMware ESXi 9.0 正式版发布下载 - 领先的裸机 Hypervisor
|
大数据
大数据中缺失值处理删除法
【10月更文挑战第21天】
605 4
|
7月前
|
SQL 关系型数据库 MySQL
Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持
Apache Flink CDC 3.4.0 版本正式发布!经过4个月的开发,此版本强化了对高频表结构变更的支持,新增 batch 执行模式和 Apache Iceberg Sink 连接器,可将数据库数据全增量实时写入 Iceberg 数据湖。51位贡献者完成了259次代码提交,优化了 MySQL、MongoDB 等连接器,并修复多个缺陷。未来 3.5 版本将聚焦脏数据处理、数据限流等能力及 AI 生态对接。欢迎下载体验并提出反馈!
1317 1
Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持
|
11月前
|
人工智能 Java 测试技术
《鸿蒙Next集成第三方AI图形渲染库:开启图形技术新征程》
在鸿蒙Next中集成第三方AI图形渲染库可提升应用的图形处理能力和视觉效果。开发者需熟悉开发环境,明确需求并选择合适的渲染库(如OpenGL、Vulkan等),获取相关文件与文档。集成步骤包括导入库文件、配置权限与资源、初始化及调用库功能。随后进行系统适配、性能优化和兼容性处理,确保不同设备上的正常运行。最后通过功能、性能和兼容性测试,确保应用稳定性和用户体验。这一过程要求开发者全面掌握鸿蒙开发技术和第三方库的使用方法,推动图形技术领域的创新。
239 7
|
存储 分布式计算 API
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
572 0
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
近期,阿里云重磅发布了首款面向 Java 开发者的开源 AI 应用开发框架:Spring AI Alibaba(项目 Github 仓库地址:alibaba/spring-ai-alibaba),Spring AI Alibaba 项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。本文将详细介绍 Spring AI Alibaba 的核心特性,并通过「智能机票助手」的示例直观的展示 Spring AI Alibaba 开发 AI 应用的便利性。示例源
9539 120
|
10月前
|
存储 人工智能 搜索推荐
Memobase:开源AI长期记忆系统,让AI真正记住每个用户的秘密武器
Memobase 是一个开源的长期记忆系统,专为生成式 AI 应用设计,通过用户画像和时间感知记忆功能,帮助 AI 记住、理解并适应用户需求。
1949 0
|
机器学习/深度学习 人工智能 vr&ar
【深度学习】python之人工智能应用篇——图像生成技术(一)
图像生成是计算机视觉和计算机图形学领域的一个重要研究方向,它指的是通过计算机算法和技术生成或合成图像的过程。随着深度学习、生成模型等技术的发展,图像生成领域取得了显著的进步,并在多个应用场景中发挥着重要作用。
429 6
|
机器学习/深度学习 安全 数据安全/隐私保护
Jupyter Notebook本地部署并实现公网远程访问内网Jupyter服务器【内网穿透】
Jupyter Notebook本地部署并实现公网远程访问内网Jupyter服务器【内网穿透】
1913 0
|
SQL 关系型数据库 MySQL
使用pymysql工具包连接Python与数据库
使用pymysql工具包连接Python与数据库
326 0