我目前正在开发一款实时多人游戏,并且一直在评估各种基于云的托管解决方案。我不确定App Engine是否符合我的需求,并会很感激任何反馈。使用Google App Engine的实时多人游戏是否可行?
从本质上说,我希望系统是这样工作的:玩家A计算n轮,并在该回合结束时生成一个散列出来的游戏状态。然后,他将他的命令发送到服务器,并将散列作为http POST发送到服务器。玩家B并行执行相同的操作。
的服务器,而从球员处理POST,首先将所接收的散列码的内存缓存。如果来自其他玩家的散列尚未存在于内存缓存中,它将等待并定期检查其他玩家散列的内存缓存。只要这两个哈希都在memcache中,它就会比较它们是否相等。如果它们相等,则服务器将每个播放器的命令作为http响应发送给另一个播放器。
像那样的一轮谈判应历时约半秒,这意味着每秒每名球员两个请求。
当然,这样做只会如果有应用程序运行的至少两个实例工作,因为两个要求必须用并行处理的这种方式。此外,内存缓存必须在所有实例中保持一致,相当可靠,并立即更新。
我不能使用XMPP,因为我希望我的比赛才能够限制网络中运行,所以它必须被限制在HTTP端口80上
有没有办法强制执行该应用程序的两个实例总是在跑?我的设计中是否有明显的缺陷?你认为像这样的架构可能适用于App Engine吗?如果不是,您会建议哪种基于云的解决方案?
非常感谢您指出Channel API!使用它,我甚至不需要同时运行两个实例。它完全解决了我的问题。 – 2011-02-18 19:31:16