问题:是否可以通过套接字连接更新Flash Player中的100多个对象?更多细节和我自己的尝试在下面!
详情
对于我的实习,我有时间创建一个多人物理游戏。我坚持了三个月。我的实习即将结束,我无法完成比赛。
我的问题是很难每次向服务器发回多个数据包并返回。我发送的数据包是对象的位置更新和其他客户端的鼠标。
我将尝试解释网络/游戏流程。
我尝试了不同的时间步骤并注意到,直到1/15秒的时间步长,客户端(奴隶)才会注意到游戏中的任何滞后。我还尝试选择较低的时间步长并补间形状的移动,但这确实在客户端(从属)方面产生了一些奇怪的动作。
我将举一个单个对象更新包的例子。
<O|t=s:u|x=201|y=202|f=automaticoo</O
<O|t=m:p|x=100|y=345|f=automaticoo</O
我注意到Flash Player可以在发送之前在缓冲区中堆叠大量数据包。例如,如果我一次发送大量数据包,它会将它们堆叠起来并将它们一起发送到服务器。通过更快的时间步长,您无法在客户端(从属)端获得更多更新,但在同一数据包行中获得更多更新。
尝试
你们有没有想过在Flash Player中每次执行这么多的更新请求都是可能的。
发现
在ActionScript 3.0中有一个多人游戏棒竞技场游戏。他们使用了大量的欺骗手段,即使这样我也能获得大约300毫秒的ping,它只会不断更新玩家(大厅里有4名玩家)。
很抱歉这篇长篇文章。
答案 0 :(得分:7)
答案 1 :(得分:1)
问题:是否可以通过套接字连接更新Flash Player中的100多个对象?
答案 2 :(得分:1)
也许最好的选择是在服务器和每个客户端上执行物理,同步(服务器对象位置覆盖客户端)。这样所有客户都可以获得相同的滞后。在差异很小(应该是这样)之前,修正不会引起注意。如果您使用Box2D,则您已准备好AS3和C ++版本。但这是完全不同的架构,值得3个月自行实施。在空/简单的舞台上你会得到什么延迟?在有限的时间内,简化可能是您唯一的选择。