快速摘要:
我们有一个类似于俄罗斯方块的完整Flash游戏,可以为多人游戏“联系”。在做了一些研究并在这里询问:Flash Sockets, Peer-to-Peer Capabilities之后,我们得出的结论是,如果没有昂贵/可疑的adobe软件/服务(FMS / Cirrus),以xbox / ps3游戏处理在线游戏的方式完成P2P网络是不可能的。此时此刻在闪存平台上。基本上,如果没有RTMFP协议,不允许Flash客户端成为监听套接字的“主机”。
需要建议的问题:
有了这个总结,问题是......为像俄罗斯方块这样的游戏实施网络基础设施的最佳方式是什么,这种方式从用户到用户都有相当多的小I / O(比如,最大的一次4名球员)。鉴于我们无法将单个播放器指定为主机p2p样式,我们的选项是:
1。)具有游戏逻辑的胖服务器,轻客户端根据服务器更新更新显示/插值(Ala Quake)
2。)Light Server处理胖客户端之间的通信(Ala并发模拟,如RTS游戏)
问题是,我们在网络游戏方面缺乏经验,因此非常喜欢这些解决方案(甚至其他解决方案)的优缺点。我们的俄罗斯方块游戏并不像发送“攻击线”那样微不足道,当客户清除线路以添加到当前正在战斗的其他玩家时。我们需要更多的实时同步。例如,下一个tetriminos列表是一个单独的共享源,每个人都在为所需的部分“战斗”。
最后,根据所选择的实现,我想知道是否有人在游戏服务器上有任何Node.js的经验。我假设如果服务器是一个轻量级服务器,只处理客户端之间的数据传输,那么Node将是一个非常完美的选择。但是,如果将游戏逻辑放在node.js服务器上,我会假设计算的阻塞性质会使Node.js的单线程无阻塞I / O方法变得多余?无论如何,对此问题的任何建议都非常感谢。
答案 0 :(得分:3)
完全披露:我是工会平台的联合创始人。
如果您想快速启动并运行,我建议使用现有的多用户服务器和客户端框架,例如已建议的那些或联合平台(www.unionplatform.com,可用于1000个同时连接)。
人们倾向于低估使用可靠的大厅系统和匹配制作全功能多人游戏所需的基础设施工作量。如果你是从头开始构建,你可能会像在核心游戏物理上那样花费很长时间,比如连接故障转移和重新连接代码。
在像多人游戏俄罗斯方块这样的游戏中,我会在服务器上实现权威的游戏/世界逻辑(联合,你使用房间模块),并在客户端镜像服务器端模拟。客户端显示输出,插入服务器端世界,并提供播放器输入。这是一个使用这种方法的多人乒乓球游戏示例:http://www.unionplatform.com/?page_id=1229
除了传统的http通信之外,联盟的一个潜在有用的功能是它支持javascript websocket。
http://www.unionplatform.com/?page_id=1587
javascript支持为您提供了在html5中创建成熟游戏客户端的选项,或添加本机Web浏览器客户端以显示统计数据或观看正在Flash中播放的游戏。 union的协议也是公开记录的(http://www.unionplatform.com/?page_id=86),因此您可以使用任何语言构建自定义客户端功能。
出于好奇,你有游戏的公共链接吗?玩得开心!
科林
答案 1 :(得分:1)
我在SmartFoxServer取得了一些成功。它可以免费用于100个以下的并发用户,但如果您有更多用户需要购买许可证。
编写服务器端逻辑很容易,而且易于管理和部署。
答案 2 :(得分:0)
我使用 Flash Media Server 开发了许多多用户应用(包括游戏)。就我个人而言,我觉得它对你的作用太贵了。
我从未使用 Red5 或 Node.js ,但 Node.js 的套接字连接看起来很有希望。
我还使用 PHP 构建了一个简单的永无止境的套接字,它也可以运行(但不是很好,它有点跳跃)我打赌你可以找到更多关于这方面的信息,也许你可以开发一些你不必在用户之间传输过多数据的东西。在网上有一些使用 PHP 套接字和* SWF * s的例子,如chat room example on kirupa.com
祝你好运。