多人游戏中是否可以延迟服务器响应? (编辑:可以使用 php 和 flash 完成长轮询)

发布于 2024-11-02 11:54:29 字数 467 浏览 1 评论 0原文

我正在制作一款多人 Flash 游戏,在一张“桌子”上将有两个以上的玩家玩。它是回合制的。使用 zendAMF 是否可以使服务器响应等待轮到的玩家采取行动,以便看起来是实时的?

我不想使用轮询,因为我读到这不是一个很好的做法。相反这个方法能行得通吗?假设轮到玩家 A,其他玩家 B、C、D 正在等待。他们的闪存客户端向服务器发送请求以获取任何更新。服务器是否可以等到玩家 A 采取行动,然后将包含玩家 A 的行动详细信息的响应发送给其他玩家 B、C、D,而不是立即响应?

编辑:添加图像。

找到该方法的名称。它称为长轮询。那么,可以使用运行 apache 的 PHP 网络服务器并使用发送请求的 Flash 客户端来完成长轮询吗?

这就是等待玩家 B、C、D 的其他玩家的处理方式。

在此处输入图像描述

I'm making a multiplayer flash game where at a 'table' more than two players will be playing. Its turn based. Using zendAMF can the server response be made to wait till the player whose turn it is has made his move, so that it will appear to be real time?

I don't want to use polling since I read that it is not a very good practice. Instead can this method work? Lets say its player A's turn and the other players B,C,D are waiting. Their flash clients send a request to the server to get any updates. Instead of responding immediately can the server wait till player A has made his move and then send its response containing player A's move details to other players B,C,D?

Edit: Added image.

Found the name of this method. Its called Long polling. So can Long polling be done with PHP webserver running apache and using a flash client which sends the requests?

This is how the other players waiting players B,C,D are expected to be treated.

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

数理化全能战士 2024-11-09 11:54:29

通常在这样的情况下,您会等待玩家 A 轮到他们,然后再向每个人发送结果。不过,设置一个计时器,这样你就不会永远等待。

例如:轮到玩家 A 时,玩家 A 执行某些操作(验证,然后通知玩家 B、玩家 C 和玩家 D)。轮到玩家 B 时,玩家 B 执行某些操作(验证,然后通知玩家 A、玩家 C 和玩家 D)。轮到玩家C,玩家C超时(5/10秒),执行默认操作然后通知所有玩家。轮到玩家D了...

Normally in something like this, you'd wait on PlayerA do make their turn before sending everybody the results. Put a timer on it though so that you're not waiting forever.

Something like: PlayerA's turn, PlayerA does something (validate, then notify PlayerB, PlayerC and PlayerD). PlayerB's turn, PlayerB does something (validate, then notify PlayerA, PlayerC and PlayerD). PlayerC's turn, PlayerC times out (5/10 seconds), do default action then notify all players. PlayerD's turn...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文