我正在使用TCP套接字进行网络化Flash游戏(强制使用TCP b / c闪存)。游戏非常简单,因为它主要是基于文本的游戏。必须强制执行的唯一真正同步是每个客户端的倒数计时器。此计时器将从60秒开始倒计时到0,在0处将发生一些游戏状态更改,因此所有客户端在相似时间达到0非常重要。
我可以将“start countdown”命令从我的服务器发送到所有客户端并使用客户端系统时钟,但如果数据包被丢弃或延迟,则客户端可能与其他客户端不同步。我还可以强制执行一些客户端/服务器协议,其中客户端必须每秒(或更少)与服务器“签入”,并且服务器强制执行所有客户端的同步。我对此的关注是效率。我的游戏是一个节奏缓慢的文本游戏,所以很可能客户端可能没有任何数据一次发送到服务器最多30秒。
可能无法避免“不断检查”的情况,但我希望有人可以给我一些指示,以便在闪存应用程序中保持计时器在多个客户端之间保持同步。
提前致谢。
P.S。我不认为闪存可以实现NTP。
答案 0 :(得分:0)
想象一下当一些客户落后时的情况 - 你会做什么?
我的意思是,想象一下,有一个完美的同步,但其中一个客户在倒计时期间离线。整个活动是否被取消,或其余的客户是否仍然“参与”?
视频流服务器采用一种机制将视频流式传输到Flash。他们多次发送固定大小的数据包并测量来回传播所需的时间(Flash客户端也应该使用固定大小的数据包进行回复)。因此,这允许记录服务器时间和客户端之间存在的延迟。可能,你可以为每个客户建立一个查找表,并考虑延迟发送消息 - 如果这还不够......那似乎属于科学研究类别,而不是游戏:)所以,也许要求用户安装额外的软件/插件不会有问题吗?