我正在尝试为用户创建一款游戏,使用他们的手机,通过应用程序在线玩游戏,类似于Words With Friends,或其他“与朋友一起”游戏。由于我没有实施此类游戏的经验,因此我不确定最佳做法。我是否希望最小化应该在服务器上运行的代码量,或者应该在客户端上运行的代码量?
我的直觉是在服务器端使用JSON文件,它存储当前游戏的游戏状态。然后,每次客户端打开时,让它从服务器获取最新的游戏状态,并相应地提示用户。这消除了在服务器上运行任何游戏相关代码的需要,并允许服务器仅仅充当所有参与客户之间的中间人。
但是,如果我希望服务器足够了解在客户端A完成转弯时通知客户B和C,B和C现在可以采取行动怎么办?我是否需要在服务器上运行代码来确定这一点,或者我是否可以让客户端告知服务器它是/可能是其他客户轮流的时间?
我意识到这个问题的答案是相对的,或者甚至是显而易见的,但我希望能找到一些关于这个问题的一般方向/指导,这样我才能知道从哪个方向开始,并开始考虑结构我的代码/游戏机制。
答案 0 :(得分:1)
您可能需要检查the code of existing open-source social games以了解他们是如何做到的。
答案 1 :(得分:0)
如果它真的很简单并且不需要实时(我在视频游戏中使用它,而不是硬/软实时系统)那么一个简单的服务器端REST后端是最佳的并且会让它您使用JSON作为客户端 - 服务器通信协议。
消息传播说,A之后的客户B和C已完成针对他们表面上关心的对象的操作,可以通过多对一关系轻松完成,无论他们一起参与什么。
这样:游戏板(假设这就像拼字游戏或WWF一样)有很多用户,他们会在对所述游戏板进行写入时收到通知。
有更复杂的方法,但我认为 KISS 。
答案 2 :(得分:0)
如果我希望服务器在客户端A完成转弯时能够足够通知客户端B和C,并且B和C现在可以采取措施,该怎么办?我是否需要在服务器上运行代码来确定这一点,或者我是否可以让客户端告知服务器它是/可能是其他客户轮流的时间?
我不认为AJAX设计可以(正式)支持服务器 - >客户端推送,并保证跨浏览器兼容性。因此客户端必须轮询服务器以检查更新。
但是有一种解决方法。查看this (old-ish) article for a design pattern that gets around that,名为Comet。
另外,请检查the wikipedia entry on Comet。
您必须实现(最少量)服务器端代码才能使其正常工作。