對於一個學校項目,我們應該創建一個Java遊戲(它應該是客戶端/服務器),可以通過互聯網進行多人遊戲(我們在學校編程,所以這不是作業)。遊戲是基於回合的,但應該有一個聊天,這是實時的。然而,我們都沒有網絡編程方面的經驗,而且我對它的瞭解越多,我似乎也有更多的問題。Java多人遊戲 - 網絡概念
我的第一個想法是使用套接字API來實現多人部分。服務器等待來自客戶端的新數據。但是,有多種類型的數據可供接收,如聊天消息,移動等。另外,一旦與服務器建立連接,應發送一些初始數據(如播放機的名稱)。服務器應該能夠看到它收到的是什麼類型的消息,但是如何?我正在考慮用字符串字段type
創建類Message
。但在我的服務器代碼,我會得到這樣的代碼:
在有很多不同類型的數據的發送(會有),這看起來並不像最有效的方式。此外,這意味着服務器和客戶端都應該有這個消息類/接口(重複代碼)。
其他遊戲的東西呢?例如,玩家1將他的角色移動到擊敗另一個角色的位置。玩家1的客戶計算這種失敗並應用正確的動作。但是應該發送給服務器的是什麼?只是新玩家的位置或失敗?有了第一個選項,這意味着所有其他客戶都應該進行計算。這不會造成什麼麻煩嗎?由於我之前沒有網絡編程經驗,所以我對如何完成所有這些事情感到困惑。
我也讀過另一個線程在這裏Stackoverflow RMI可能是一個更好的選擇。閱讀了一些有關這方面的信息後,我瞭解了RMI是什麼,但我仍然無法確定它是否適合此項目。任何提示爲此?
正如你所看到的,我對如何從這個項目的網絡部分開始有點困惑。我搜索了一些遊戲編程書籍(對於Java而言),但他們都不關注網絡部分。我還搜索了Java網絡書籍,但是這些似乎集中在技術上,而不是良好的代碼實踐。
如果有人知道一本好書或在正確的鍛鍊方面有一些建議,將不勝感激。
感謝
「...在學校編程,所以它不是功課」 。經典。 – CPerkins
至少他不想要代碼。 –
@ CPerkins:我們應該在學校爲這個項目工作,是的。我並沒有要求任何人做我的工作,只是詢問如何實施這一點。 – Bv202