Photon Server
来源:互联网 发布:重庆网站推广优化外包 编辑:程序博客网 时间:2024/06/06 03:24
- Photon的API已经不限于C#了。
- Photon可以支持HTTP,则意味着它或许还可以作为其他用途,比方说专用的Ajax服务器。
- Photon的socket server是用c++实现的,效率自然不是java可以比拟的。
- Photon已经通过私有协议完成对象的二进制序列化。大家也不必操心去笨手笨脚的自己去实现了。
- Photon支持UDP。对于某些需求来说,这就具备了技术上的可行性了。
事实上Photon和Unity3d之间的合作是有战略意义的。了解Unity3d的朋友一定知道island这个sample。这里有一段视频就是展示如何在Unity3d中使用Photon Client SDK。不得不说,Photon和Unity3d的风格很接近:支持广泛,效率良好,易于上手。
- 创建一个LitePeer类的实例对象,并准备在下面步骤中调用该对象的方法
- 调用Connect()方法来尝试连接服务器,并通过实现IPhotonPeerListener.PeerStatusCallback来得到连接状态的通知,成功的状态是StatusCode.Connect。
- 周期性的调用Service()方法来获取事件,同时发送"命令"(比如每秒十次)
- 调用OpJoin()来加入游戏,通过实现OperationResult()来得到连接状态的通知,成功的状态是LiteOpCode.Join
- 调用OpRaiseEvent()向服务器发送数据
- 通过实现IPhotonPeerListener.EventAction()来获取服务器的数据更新
- 调用LitePeer.OpLeave()离开游戏,若OperationResult()返回LiteOpCode.Leave则表示服务器端已经确认成功离开。
- 调用Disconnect()以断开连接,通过PeerStatusCallback()得到连接状态的通知,StatusCode.Disconnect为成功断开连接。
- 异步操作:比如Connect(),OpJoin(),OpRaiseEvent(),OpLeave()
- 异步回调:比如OperationResult(),用来返回异步主动操作的结果。值得注意的是,这种返回一般和异步操作是以一问一答的形式出现的。
- 事件:不确定合适会被触发,比如PeerStatusCallback()。
- 通讯层:Service, Connect, Disconnect 还有 StatusCallback这些都是直接对应 连接状态的。它们和UDP/TCP协议都一一对应。
- 逻辑层:内置的"操作","状态"和"事件"都算作是逻辑层的一部分,我们可以通过方法的名称把它们分辨出来,比如OpJoin,OperationResult,PeerStatusCallback。
- 应用层:我们自己游戏中的业务逻辑一般被列在这个层中。比如我们可以通过实现OpCustom(),来发送自定义的"操作"。
- PeerStatusCallback:用来得到通讯层的连接状态变化的通知,比如connect, disconnect, errors, compare,这些状态都被定义在StatusCode这个枚举里。
- OperationResult:用来得到逻辑层操作的回调,比如(join, leave)
- EventAction:用来得到应用层的事件回调
- DebugReturn:只在调试中使用
- TimePingInterval:设置客户端对服务器的Ping间隔
- RoundTripTime:用来指定"可靠信道"的往返间隔。可以简单理解为,在"可靠信道"里发送数据包的时候,依靠RoundTripTime和RoundTripTimeVariance来判断单位时间内响应是否超时。
- RoundTripTimeVariance:RoundTripTime允许的方差。
- ServerTimeInMilliSeconds:服务器端的计时器,以微秒为单位。
- String / string
- Boolean / bool
- Byte / byte (unsigned)
- Int16 / short (signed)
- Int32 / int (signed)
- Int64 / long
- Single / float
- Double / double
- Array (支持以上类型的强类型数组, 但长度限于 Short.MaxValue,而且二位数组是不被支持的。 )
- Hashtable (需注意的是Hashtable[] 是不被支持的。对一个Hashtable对象,虽然可以同时使用不同类型的数值作为它的键,但从传输性能上考虑,最好不要出现这种情况。因为一旦出现一个Hashtable的键有多个类型的情况,该对象的读取会被拆成多个子命令,每一个键都会需要一个子命令。)
- LitePeer.OpSetPropertiesOfActor
- LitePeer.OpSetPropertiesOfGame
- LitePeer.OpJoin(值得一提的是,玩家可以加入一个还没有被创建出来的游戏房价,也就是说,服务器端不会对加入的房间做检查,你需要自己来完成)
- OpGetPropertiesOfActor
- OpGetPropertiesOfGame
0 0
- Photon Server
- Photon Server
- 什麼是 Photon Server?
- Photon server 不能debug
- 配置photon server log
- Photon Server环境搭建
- Photon Server配置文件
- Photon Server的使用(一)
- Photon Server的使用(一)
- 快速了解和使用Photon Server
- Photon Server的使用(一)
- unity服务器Photon Server学习笔记
- Photon Server与unity客户端连接
- 快速了解和使用Photon Server
- Photon Server4.0版本入门(一)初识Photon Server 4.0
- Unity3D利用Photon实现实时联网对战(一)Photon Server介绍
- Photon Server笔记1:启动MMO Demo 2016/07/20
- Unity游戏开发Photon Server之服务端架构
- 第23题
- LeetCode - Interleaving String
- P51-17
- 如何在Linux上从命令行嗅探HTTP流量
- C++/CLI——使用嵌套 if 语句的 CLR 程序
- Photon Server
- $resource
- Matlab有用的小工具小技巧
- 妖哲开始搞前端3 变形!导航栏
- 10个最酷的namp技巧/技术
- 排序与过滤
- CodeForces 30E Tricky and Clever Password(hash+manacher)
- 第六周项目程序阅读(5)
- python安装与ide的配置