我应该使用RMI进行Java多人游戏吗?

问题描述:

我正在用Java构建一个大富翁游戏,我希望它能够通过网络支持游戏(关键是我和我的朋友在美国的A可以玩)。我应该使用RMI进行Java多人游戏吗?

网络是一个编程的整个领域,我还没有进入,所以我一直觉得很难决定如何把它关掉。总的来说,我觉得正确的工作方式是让所有的大富翁游戏代码都拥有一个服务器应用程序,然后只需要一个带有远程方法调用的GUI的应用程序客户端。

RMI对于这个项目来说太复杂了还是继续下去的最好方法?你有什么建议或提示吗?

更新:这场比赛将是100%的Java。所以不用担心客户端需要安装Java。此外,获得关于使用RMI的一些提示将会很好。

RMI不是一个复杂的事情,而是相反的。

它允许您开发游戏协议,而不必关心在服务器和客户端之间是否有Message对象,如果链条检查它是哪种类型的消息并执行任何所需的操作。

你实际上可以用RMI做的事情是让一个集中对象(在服务器上),你可以直接调用iWantToMoveThere(position)iWantToBuyLand(where)等客户端的方法。这可以简化协议,同时避免一些开销,因为我不鼓励您实施二进制协议。一个XML或一个序列化的Java将是一个很好的折衷方案,因为你不需要像这样的游戏真正实时。

RMI的另一个优点是你可以很容易地管理一个主服务器,许多游戏服务器可以连接到这个主服务器,让玩家有机会玩这些服务器,还有很多其他的小事情,比如管理一个独立的大厅等等。

就像直接体验:我使用RMI管理服务器,允许开发者发布他们自己的游戏插件,允许玩家自动连接到服务器并下载内容以便玩游戏。除了我需要一个后向TCP连接以便能够在需要时处理异步事件外,所有事情都由RMI处理。整个源代码在7-8类中只有〜1k行

+0

看到这是我的印象。尽管我不想先在这里问,但是我不想直接潜入。谢谢:) – seadowg 2010-06-19 16:37:20

+0

你可能会给我一些简单的RMI应用程序的例子来源是不是太麻烦?看起来你真的知道你在做什么。 – seadowg 2010-06-20 15:06:18

这听起来像你将有厚厚的客户端。为什么?你可以有一个100%的Java服务器,它具有所有的业务逻辑,并通过浏览器使用jQuery/Ajax和呈现html5来访问它。

要回答你的问题,我会说是的RMI对你正在做的事情太复杂。