2009-10-15 85 views
3

我一直在開發一款名爲「Tarneeb」的小型紙牌遊戲。遊戲本身看起來像橋牌遊戲,但有不同的規則。無論如何,我使用Java 6將整個遊戲作爲獨立桌面應用程序完成。這是遊戲的picture。無論如何,我現在需要將它變成一個具有多人遊戲功能的網絡應用程序,因此用戶可以創建一個新房間並加入現有遊戲房間。 不幸的是,我不知道在Java中的網絡,但我搜索了很多,我發現了一些其他的Java產品可以幫助我(JavaFX,JSP,GlassFish),但我仍然無法弄清楚我完全需要什麼來完成我的任務。我現在需要的是前往的方向,我會做我的研究並希望學習所需的新技能。多人遊戲瀏覽器[Java]

回答

4

其他答案已經指出你一些資源。

但是,您可能會遇到的最大問題是,如果您沒有相應地規劃體系結構,通常不可能(或完全重寫非常耗時)以後「添加」多人遊戲功能。

1

由於你可能有很多互動和很多更新,我應該 - 糾正我,如果我錯了 - 儘可能快地在客戶端,我建議看看Cometd,它保持http連接對每個客戶端開放,並將更新從服務器推送到客戶端。如果你使用jetty作爲web服務器(因此它的「延續」),它甚至是highly scalable

1

事情是,沒有一個標準的做法,你需要閱讀。

你想如何實現這個Web應用程序?作爲一個小程序?使用標準網頁?作爲人們必須下載的網絡啓動應用程序?

最後一個選項將允許您重新使用大部分現有代碼。如果您選擇該選項,則可能需要查看RMI,因爲這可能適合您現有的架構。

但是,正如S.Lott指出的那樣,您需要去學習如何在做任何其他事情之前創建Web應用程序。這些教程將是一個好的開始,你也一定要學習(X)HTML,JavaScript和Java Web技術,例如JSP,JSF或Struts。確切地說,你需要什麼取決於你的要求,沒有更多的細節,推薦一個很困難。

+0

我和最終用戶使用這些不同的方式會有什麼不同? –

0

網絡應用程序非常不適合您在紙牌遊戲中進行的實時交互。是的,它可以完成,但它會涉及骯髒的黑客攻擊,並且總會遇到高延遲和斷開連接的問題。當然,你必須完全重寫你的大部分應用程序。

如果有可能將遊戲作爲Java applet運行?這會讓你的工作變得更容易(使得更多的重用),最終結果更加可用。

+0

我看不出爲什麼它不能作爲applet使用,我對applet沒有經驗,但是使用它們會產生什麼樣的問題?! –

+0

幾乎唯一的問題是它需要用戶在他們的計算機上安裝Java。但是,自Java 6u10引入Java內核和部署工具包以來,這已成爲一個問題:http://java.sun.com/developer/technicalArticles/javase/java6u10/ –

0

無法快速將基於客戶端的應用程序移植到Web應用程序中。根據您的想法,這聽起來像是您需要追求JSP/Javascript解決方案或JavaFX解決方案。 JavaFX實際上允許更平滑(比JSP/Javascript更平滑,但仍然需要花費不止一個下午= D)移植基於客戶端的應用程序,但它的學習曲線比一般的JSP/Javascript技術更陡峭。這裏有趣的一點是JavaFX不僅僅是一種網絡應用程序語言。如果您使用JavaFX編寫了基於初始客戶端的應用程序,那麼您將完成大約50%的工作。

JavaFX

0

使用的Java NIO,這是很簡單,如果你掌握的基礎知識,就在所有這些無數的圖書館沒有真正的需要......,還是要你就會知道他們的內部。然而,這裏已經提到的一件重要的事情是,遊戲結構必須從一開始就適應網絡。在最壞的情況下可能會完全重寫。基本上,您將不得不創建客戶端數據庫,套接字連接,並且從服務器端,應將每個連接(由SelectorKey對象表示)封裝到代表「加入的客戶端」的對象中。然後讀/寫操作將被執行到密鑰的套接字。但還有更多。服務器必須是應用程序鏈接的中心,因此您必須爲您的遊戲開發整個網絡消息協議(通過TCP,這種遊戲中不需要UDP)。另外 - 閱讀更多有關協議(TCP/UDP /套接字,以太網),你讀得越多 - 越好。

另外!注意HTML5 websockets的東西。這是一件了不起的事!