Flash游戏服务器build议(Node.js,Red5等)

快速总结:

我们已经完成了类似于俄罗斯方块的Flash游戏,这个游戏已经准备就绪,可以和多人游戏进行“连接”了。 在做了一些研究之后,我们在这里问: Flash Socket,Peer-to-Peer Capabilities ,我们得出的结论是,用xbox / ps3游戏处理networking游戏的方式完成的P2Pnetworking是不可能的,没有昂贵/可疑的adobe软件/服务FMS / Cirrus)在这个时间点在闪存平台上。 基本上,Flash客户端不允许成为在没有RTMFP协议的套接字上监听的“主机”。

需要build议的问题:

有了这个总结,问题是…什么是最好的方式来实施networking基础设施的游戏,如俄罗斯方块,有很多的I / O从用户到用户(比如,最多4个玩家一次)。 鉴于我们不能将单个玩家分配为主机p2p风格,我们的选项是:

1.)具有游戏逻辑的胖服务器,轻客户端更新基于服务器更新的显示/内插(Ala Quake)

2.)Light服务器处理Fat客户端之间的通信(Ala并行仿真,如RTS游戏)

问题是,在networking游戏方面,我们缺乏经验,因此对于这些解决scheme(甚至是其他解决scheme)的优点/缺点,我们真的很感兴趣。 我们的“俄罗斯方块”游戏并不像发送“攻击线”时那样微不足道,因为当客户清除线路以添加到当前正在进行战斗的其他玩家时。 我们需要更多的实时同步。 例如,下一个tetriminos的列表是一个单一的共享来源,每个人都在争取理想的作品。

最后,根据所选的实现,我想知道是否有人在游戏服务器上使用Node.js。 我假设如果服务器是一个轻量级的服务器只处理客户端之间的数据传输,节点将是一个很好的完美契合。 然而,如果游戏逻辑放在node.js服务器上,我会假devise算的阻塞性质会使Node.js的单线程无阻塞I / O方法变得多余? 无论如何,在这个问题上的任何意见是非常感谢。

充分披露:我是联盟平台的共同创始人之一。

如果你想快速启动并运行,我会build议使用现有的多用户服务器和客户端框架,比如已经build议的或联合平台(www.unionplatform.com,免费提供1000个同时连接)。

人们倾向于低估使用可靠大堂系统和匹配制作全function多人游戏所需的基础设施工作量。 如果您正在从头开始构build,您可能会像在核心游戏物理学上一样花费很长时间,例如连接故障转移和重新连接代码。

在像多人俄罗斯方块这样的游戏中,我会在服务器上实现权威的游戏/世界逻辑(在联合中,你将使用一个房间模块),并在客户端镜像服务器端的模拟。 客户端显示输出,内插服务器端的世界,并提供玩家的input。 下面是一个使用这种方法的多人乒乓游戏示例:

http://www.unionplatform.com/?page_id=1229

联盟对你的情况的一个潜在的有用的function是除了传统的http通信之外,它支持javascript websocket。

http://www.unionplatform.com/?page_id=1587

javascript支持为您提供了在html5中创build完整的游戏客户端的选项,或者添加了原生的web浏览器客户端,用于显示统计数据或观看Flash游戏。 工会的协议也公开logging(http://www.unionplatform.com/?page_id=86),所以你可以build立任何语言的自定义客户端function。

出于好奇,你有你的游戏的公共链接?

玩的开心!

科林

我已经在SmartFoxServer上取得了一些成功。 对于不超过100个并发用户是免费的,但如果你有更多,你需要购买许可证。

编写服务器端逻辑还是很容易的,而且易于pipe理和部署。

我已经使用Flash Media Server开发了多种多用户应用程序(包括游戏)。 就个人而言,我觉得它对你来说太贵了。

我从来没有使用过Red5或者Node.js ,但是来自Node.js的socket连接听起来很有希望。

我也使用PHP构build了一个简单的永无止境的套接字 ,但是效果不错(但不是很好,有点跳动)我敢打赌,你可以find更多的信息,也许开发一些你自己看到的东西,必须在用户之间传输太多的数据。 在networking上有一些使用* SWF *的PHP套接字的例子,就像这个在kirupa.com上的聊天室例子

祝你好运