1

在 Actionscript 中构建多人游戏的好框架是什么?

我想在 Blackberry Playbook 上创建像 Asteroids 这样的多人 2D 射击游戏;我主要担心的是延迟 - 如果子弹超级生涩并且意外击中人,那么射击游戏就不会有趣。

我猜基于 UDP 的框架会是最好的。谁能指出我正确的方向?

4

4 回答 4

2

假设您想使用 Flash/Flex 而不是 Java (Blackberry/Android) 或 Playbook 的原生 SDK -

  1. 有一本书作为灵感来源:http: //www.packtpub.com/flash-10-multiplayer-game-essentials/book它在服务器端使用 Pulse SDK。但是您可以在服务器端使用自己的套接字程序。我在一个小型纸牌游戏中使用 Perl 作为 TCP 套接字服务器(发送 gzip 压缩的 XML),但这不适用于您的射击游戏。

  2. Flash 不支持开箱即用的 UDP

  3. 但是在即将推出的Flash Media Server Enterprise 4中有点对点网络协议RTMFP(价格对于普通人来说是遥不可及的)

所以你最好的选择是为 RTMFP 购买亚马逊服务,然后你可以按使用付费并保持可扩展性......

于 2011-04-17T11:38:16.357 回答
2

您可以向服务器发出持续的 post/get 请求以获取游戏数据,但对于多人射击游戏,我会使用 SmartFoxServer:http ://www.smartfoxserver.com/

于 2011-04-17T12:10:48.613 回答
2

您可以使用很多现成的东西,但基本设置非常简单,但您有几个选择。

最常见的是服务器推送,例如 Flash Media Server、Adobe 的 LiveCycle Data Services 或 SmartFoxServer 等其他工具可以做到这一点。使用此设置,服务器将连接保存到连接到服务器的每个人,并在每次应用程序中的数据更改时将应用程序状态传递或“推送”给连接的人。

另一种选择称为长拉,这实际上可以使用任何 Web 服务器来完成。它的工作原理是数据存储应用程序的状态,当应用程序启动时它调用服务器,当它响应时客户端再次调用服务器。

还有其他一些方法可以做到这一点,但这些是最常见的。但这与 HTTP、UDP、AMF、XMPP 或其他任何协议无关。协议是发送数据的格式。有了这些开箱即用的服务器,它们通常会输出其中的一些,但最快的格式是像 AMF 这样的二进制格式,但并不总是最好的,每种格式都有优势,因为每种格式都为您提供了不同的功能来跟踪事物。

如果您正在谈论拥有拥有数百万用户的游戏,那么您需要考虑扩展以及当您需要两台或 100 台服务器时会发生什么以及它们如何相互通信。但是现在请记住,服务器执行得越多,它就会越慢,如果您发送少量数据,它将能够处理更多用户。坚持制作一台高效的服务器,如果你到了那里,以后再担心。

You also need to thing about what server side programming language you want to mess with if any. Some services don't let you do anything, these normally cost money and don't do as much. Adobe likes Java but there are servers that output all of these protocols in most every language. My favorit lately has been Node.js a super fast way to run JavaScript on the server. Node.js has a built in HTTP server but it is just as easy to create a simple server that sends basic text through a Socket or XMLSocket. A server like this will easily handle many thousands of users. There are many games that use Socket.IO and if you want to see a simple example of what I'm talking about you can check out this.

于 2011-04-22T16:54:01.000 回答
1

开箱即用,Adobe AIR 通过数据报包支持 UDP。 http://help.adobe.com/en_US/air/reference/html/flash/net/DatagramSocket.html

我找不到用于 Flash 的特定网络 API,但也许您可以构建一个。Libgren 是开源的,您可以将其用作参考。

您也可以查看 RTMFP,尽管它的重点是传输音频/视频和一些消息(我认为是通过 TCP)。

于 2011-04-18T15:41:45.830 回答