2010-03-04 35 views
11

我有一年的编写客户端代码的经验,但没有与服务器的东西。我想限制这个问题,所以我会简化我想要达到的目标。服务器编程 - 简单的多人游戏 - 哪种协议和技术?

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

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

我有一些Java的经验,尽管Erlang听起来像是最好的选择,但这只是我想玩的东西,并且快速推出,所以Java会更容易。我只需要知道连接播放器等

感谢的最好方式,

GAV株系

回答

7

我建议我们认为桌面和移动系统作为平等的客户。那么什么选择?

  • 你写一个socket服务器,它将接受来自客户端的连接。但是,您还需要为桌面和移动操作系统编写一些套接字客户端,甚至是2个。用户将不得不安装这个客户端。

  • 您启动了一个Web服务器(无论您喜欢哪种技术)。它将公开一些Web服务,这些服务可以同时访问桌面和客户端操作系统。但仍然需要编写一个客户端应用程序(再次2x)。

  • 您运行一个Web服务器,并通过标准的HTTP协议使所有功能都可访问。这样你甚至不需要客户端 - 几乎每个桌面或移动操作系统都至少安装了一些网络浏览器。 JavaScript将提供您的股票行情的动态更新。

+0

谢谢很好地回答了一个含糊不清的问题 - Socket编程是最适用的是我想达到它的出现,你的回答给我的关键字做更多的研究。 – gav 2010-03-05 13:54:21

+0

在这种情况下,Javascript可以并应该被视为其他客户端的客户端。 – 2013-10-10 01:23:42

1

我绝不是在网络通信方面的专家,但如果你不介意失去了几包(或软件错误检查),你想快,瘦肉通信可以使用UDP。我认为大多数时间敏感的数据程序和流媒体都使用这种协议来避免延迟并保持数据包的大小。

1

几年前,我用java和ServerSocket(http://java.sun.com/j2se/1.4.2/docs/api/java/net/ServerSocket.html)实现了一个客户端/服务器应用程序。你也有一个SSL版本。

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

http://www.developer.com/java/ent/article.php/1356891/A-PatternFramework-for-ClientServer-Programming-in-Java.htm

如果发现这个微架构:

http://www.bablokb.de/jcs/jcs.html

其中一个最难的事情是创建协议,以了解如何创建一个将了解如何工作的好方法FTP(或HTTP ...)。

1

你是正确的J2EE模式打破了近实时或者多玩家的需求。 migth希望考虑RedDwarf游戏服务器项目。它适用于游戏Servlets为商业逻辑做什么,并且是开源的。

http://www.reddwarfserver.org

我建议我们认为桌面和移动 系统,等于客户。 然后呢?

RedDwarf有一个可插拔的trabsport层,可以支持任何你想要的客户端。

Web服务器非常适合网络型应用程序。如果你的游戏就像一个网络page--并不多用户,是基于转,演变非常slowly--然后Web服务器是一个很好的chocie。

但如果不是这样,你需要的东西在技术上有点比较强大。

哦,什么它的价值,whetevr你做什么,如果你想从头开始写一个服务器,则不要使用“的ServerSocket。”每个连接需要一个线程,永远不会缩放。使用NIO或使用像Netty这样的NIO framewoprk。

+0

链接是死的,这里是GitHub的链接:https://github.com/reddwarf-nextgen/reddwarf – 2013-08-03 10:42:20