2010-06-19 72 views
3

我正在用Java構建一個大富翁遊戲,我希望它能夠通過網絡支持遊戲(關鍵是我和我的朋友在美國的A可以玩)。我應該使用RMI進行Java多人遊戲嗎?

網絡是一個編程的整個領域,我還沒有進入,所以我一直覺得很難決定如何把它關掉。總的來說,我覺得正確的工作方式是讓所有的大富翁遊戲代碼都擁有一個服務器應用程序,然後只需要一個帶有遠程方法調用的GUI的應用程序客戶端。

RMI對於這個項目來說太複雜了還是繼續下去的最好方法?你有什麼建議或提示嗎?

更新:這場比賽將是100%的Java。所以不用擔心客戶端需要安裝Java。此外,獲得關於使用RMI的一些提示將會很好。

回答

13

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

0

這聽起來像你將有厚厚的客戶端。爲什麼?你可以有一個100%的Java服務器,它具有所有的業務邏輯,並通過瀏覽器使用jQuery/Ajax和呈現html5來訪問它。

要回答你的問題,我會說是的RMI對你正在做的事情太複雜。

相關問題