一日一点RakNet(48)--ReadyEvent

ReadyEvent 概览

 

一个事件准备好可以作处理的信号

       在端到端环境下,确定什么时候所有的Peer准备好了,可以发生一些共享的事件是非常繁琐的一件事,例如从大厅开始游戏,或者进行下一轮游戏等。最大的问题是,尽管你的系统已经准备好开始,所有的连接的系统或许在你知道时已经准备好,但是这些系统可能不知道他们相对于其他的用户是否已经准备好。这主要是由于延迟或者数据报丢失可能会破坏掉两个系统之间的连接从而导致玩家是否准备好未知,那么这两个用户担心并不是所有的用户都准备好开始游戏了。

       ReadyEvent插件可以自动处理这种情况。给定一个用户定义的数字事件标示符,每一个系统可以调用ReadyEvent::SetEvent(eventide, isReady);方法。当系统相对于你和其他的系统都准备好了,ReadyEvent::IsEventCompleted(eventide);方法会返回true,你可以处理这些共享事件。这个值一直存储到事件被DeleteEvent(eventID);方法删除。

 

常用的情况

       在端到端大厅中,这个可以用于存储用户什么时候准备好以及没有准备好的状态。当用户准备好时,游戏可以开始。

       在端到端的轮转游戏(也即游戏是一局一局进行的,如斗地主)中,这个插件可以用于通知每一个用户已经准备好开始下一轮游戏。

       在任何端到端游戏中,这个插件可以用于处理每一个人都等待的事件,例如所有玩家完成加载游戏level

 

By 北洋小郭

转载请注明出处,请勿用于商业用途,谢谢!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Raknet是一个基于UDP网络传输协议的C++网络库,允许程序员在他们自己的程序中实现高效的网络传输服务。通常情况下用于游戏,但也可以用于其它项目。   Radnet有以下特点:   l 高性能 在同一台计算机上,Raknet可以实现在两个程序之间每秒传输25,000条信息;   l 容易使用 Radnet有在线用户手册,视频教程。每一个函数和类都有详细的讲解,每一个功能都有自己的例程;   l 跨平台,当前Radnet支持Windows, Linux, Macs,可以建立在Visual Studio, GCC, Code: Blocks, DevCPP 和其它平台上;   l 在线技术支持 RakNet有一个活跃的论坛,邮件列表,你只要给他们发信,他们可以在几小时之内回复你。   l 安全的传输 RakNet在你的代码中自动使用SHA1, AES128, SYN,用RSA避免传输受到攻击   l 音频传输 用Speex编码解码,8位的音频只需要每秒500字节传输。   l 远程终端 用RakNet,你能远程管理你的程序,包括程序的设置,密码的管理和日志的管理。   l 目录服务器 目录服务器允许服务器列举他们自己需要的客户端,并与他们连接。   l Autopatcher Autopatcher系统将限制客户端传输到服务端的文件,这样是为了避免一些不合法的用户将一些不合法的文件传输到服务端。   l 对象重载系统   l 网络数据压缩 BitStream类允许压缩矢量,矩阵,四元数和在-1到1之间的实数。   l 远程功能调用   l 强健的通信层 可以保障信息按照不同的信道传输   RakNet支持两种版权,如果你是做免费游戏RakNet将是免费的。相反,你必须支付一定的费用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值