Google app engine 服务器编程-简单多人游戏-哪些协议和技术?

Google app engine 服务器编程-简单多人游戏-哪些协议和技术?,google-app-engine,Google App Engine,我有一年的编写客户机代码的经验,但没有服务器方面的经验。我想稍微限制一下这个问题,所以我将简化我试图实现的目标 我想编写服务器代码,这样两个客户端(浏览器或iPhone/Android)可以连接,当两个玩家连接时,他们会看到计时器倒计时到零。时钟将在服务器上同步,客户端将是唯一可识别的 这里的问题是“连接”这个词,人们在多人游戏中使用什么?是否为双向通信打开TCP套接字?你可以看出我不是很确定我在说什么。我希望使用AppEngine,但我不确定它是否适合,因为它是基于请求的 我有一些Java方面

我有一年的编写客户机代码的经验,但没有服务器方面的经验。我想稍微限制一下这个问题,所以我将简化我试图实现的目标

我想编写服务器代码,这样两个客户端(浏览器或iPhone/Android)可以连接,当两个玩家连接时,他们会看到计时器倒计时到零。时钟将在服务器上同步,客户端将是唯一可识别的

这里的问题是“连接”这个词,人们在多人游戏中使用什么?是否为双向通信打开TCP套接字?你可以看出我不是很确定我在说什么。我希望使用AppEngine,但我不确定它是否适合,因为它是基于请求的

我有一些Java方面的经验,尽管Erlang听起来是最好的选择,但我只想使用它并快速推出,这样Java会更容易。我只需要知道联系球员的最佳方式

谢谢


Gav

我建议我们将桌面和移动系统视为平等的客户端。那么有什么选择呢

  • 您编写了一个套接字服务器,它将接受来自客户端的连接。但是,您还需要编写一些套接字客户端,甚至是台式机和移动操作系统的2倍。用户必须安装此客户端

  • 您可以启动一个web服务器(您喜欢的任何技术)。它将公开一些web服务,桌面和客户端操作系统都可以访问这些服务。但仍然需要编写一个客户端应用程序(同样是2x)

  • 您可以运行web服务器,并通过标准HTTP协议访问所有功能。这样你甚至不需要客户端——几乎每台台式机或移动操作系统都至少安装了一些web浏览器。JavaScript将为您的股票代码提供动态更新


我绝对不是网络通信专家,但如果您不介意丢失一些数据包(或在软件中检查错误),并且您想要快速、精简的通信,您可以使用。我认为大多数对时间敏感的数据程序和流媒体都使用此协议来避免延迟并减小数据包大小。

几年前,我用java和ServerSocket()实现了一个客户机/服务器应用程序。您还有一个SSL版本

因此,创建一个ServerSocket并等待连接。连接客户端后,您将创建一个线程,该线程将使用您制定的协议与该客户端进行讨论

如果找到这个小框架:


最难的事情之一是创建您的协议,学习如何创建协议的一个好方法是了解FTP(或HTTP…)的工作原理。

有一系列关于从事这项工作的人的文章。

您是对的,J2EE模型因近实时或多玩家需求而崩溃。你想考虑Real侏儒游戏服务器项目。它为游戏做了Servlet为业务逻辑做的事情,并且是开源的


我建议我们考虑台式机和移动设备 作为平等客户的系统。什么选择 那你呢

RedDwarf有一个可插拔层,可以支持任何类型的客户端

Web服务器非常适合Web类型的应用程序。如果你的游戏表现得像一个网页——不是多用户的,是基于回合的,发展非常缓慢——那么网络服务器就是一个很好的工具

然而,如果没有,你需要一些更强大的技术


哦,不管你做什么,如果你想从头开始编写服务器,那么就不要使用“ServerSocket”。这要求每个连接有一个线程,而且永远不会扩展。使用NIO或使用像Netty这样的NIO framewoprk。

感谢您对一个模糊问题的好答案-套接字编程最适用于我想要实现的目标。事实证明,您的答案为我提供了进行更多研究的关键字。在这种情况下,Javascript可以也应该被视为与其他客户端一样的客户端。链接已失效,以下是github链接: