我目前正在开发一款实时多人游戏,并一直在评估各种基于云的托管解决方案。我不确定 App Engine 是否符合我的需求,如果有任何反馈,我将不胜感激。
本质上,我希望系统像这样工作:玩家 A 计算第 n 轮,并在该轮结束时根据游戏状态生成一个散列。然后,他将该轮的命令和哈希作为 http POST 发送到服务器。玩家 B 并行地做同样的事情。
服务器在处理来自玩家的 POST 时,首先将接收到的哈希码写入内存缓存。如果来自其他玩家的哈希还没有在内存缓存中,它会等待并定期检查内存缓存中其他玩家的哈希。一旦两个哈希都在内存缓存中,它就会比较它们是否相等。如果它们相等,则服务器将每个玩家的命令作为 http 响应分别发送给另一个玩家。
像这样的一轮应该持续大约半秒,这意味着每个玩家每秒有两个请求。
当然,这种方式只有在至少有两个应用程序实例运行时才有效,因为必须并行处理两个请求。此外,内存缓存必须在所有实例中保持一致、相当可靠并立即更新。
我不能使用 XMPP,因为我希望我的游戏能够在受限网络中运行,所以它必须限制为端口 80 上的 http。
有没有办法强制应用程序的两个实例始终运行?我的设计中是否存在明显的缺陷?您认为这样的架构可以在 App Engine 上运行吗?如果没有,您会建议什么基于云的解决方案?