游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2110|回复: 0

ProudNet 使用方法#3:WiFi<=>蜂窝越区切换功能

[复制链接]

29

主题

38

帖子

384

积分

中级会员

Rank: 3Rank: 3

积分
384
QQ
发表于 2016-4-28 09:43:11 | 显示全部楼层 |阅读模式
ProudNet
ProudNet是研究游戏软件开发的游戏服务端 &网络引擎。


TCP端,有以下特征。
*实时多人游戏环境下如果超出WiFi区域,TCP端中断。再重新连接。
*重新进入WIFI区域依然会终端重新连接。
*部分手机已断开连接,部分手机还是连接中,对于这种情况只能对不同通信社的手机进行一一测试开发。
*在接收信息过程中突然中断则无法确认对方收到了最后一条信息,对此要进行收信处理程序。
ProudNet 1.7 版本彻底解决了以上问题,增加了保持连接以及WIFI蜂窝越区功能,使用此功能对于越区后的断开连接只需短暂的延迟后即可自动回复正常运转。


越区功能是关闭状态的,如果想开启只需调用NetClient.Connect()进行以下设置即可。enableAutoConnectionRecovery= true
1. [C++]  
2. param.m_autoConnectionRecovery = true;  
3. c->Connect(param);  
4.
5. [C#]  
6. param.autoConnectionRecovery = true;  
7. c.Connect(param);  


假如客户端发生进入或者离开WIFI区域的现象,则内部开启连接转换操作而客户端则发生OnServerOffline 事件。服务器发生OnClientOffline事件。在连接P2P的其他客户端则发生OnP2PMemberOffline事件。
ProudNet 内部切换过程开始的话收发reliable 信息全部保留。unreliable 信息全部消失。所以游戏过程中发生卡机现象,切换过程短则1秒长则10秒左右,
1. [C++]   
2. c->Set_OnServerOffline([...](CRemoteOfflineEventArgs &args) {  
3. // args中包含了离线的信息。
4. ...  
5. });  
6.
7. [C#]  
8. c.ServerOfflineHandler = (args)=>{  
9. ...  
10. }  


完成连接切换后,客户端调用OnServerOnline,服务器调用OnClientOnline,连接P2P的其他客户端调用OnP2PMemberOnline,然后通过reliable接收信息。
1. [C++]   
2. c->Set_OnServerOnline([...](CRemoteOnlineEventArgs &args) {  
3. // args切换连接结束后的信息。
4. ...  
5. });  
6.
7. [C#]  
8. c.ServerOnlineHandler = (args)=>{  
9. ...  
10. }


连接切换完成后客户端的HostID还是P2P以及与服务器连接状态都是和基准一致的。
简单来说,不管是否离开WIFI环境都不会对游戏开发有影响。

总结:
1. 在NetClient中调用Connect时enableAutoConnectionRecovery=true。
2. 切换开始时调用OnServerOffline,OnClientOffline, OnP2PMemberOffline。
3. 切换结束时调用OnServerOnline,OnClientOnline, OnP2PMemberOnline。

除以上功能以外,ProudNet考虑无线网络通信特征对于缩短延时加强了功能。相比TCP/UDP通信缩短了30%的延时。ProudNet对于无线网络环境下实时游戏具有显著的优势。




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-5-9 04:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表