2012-12-11 65 views
1

我試圖在this tutorial的幫助下將Kryonet集成到Slick2D遊戲中。我正在嘗試創建一個服務器/客戶端基礎結構,用戶可以創建服務器或加入服務器來玩雙人遊戲。Kryonet和Slick2D

本教程建議將整個遊戲對象添加爲「網絡偵聽器」,但是在我的Slick2D遊戲中,GameContainer和StateBasedGame只能在整個應用程序中使用。

GameContainer包裝我的遊戲對象,並且此遊戲對象擴展了StateBasedGame。我不知道如何整合KryoNet。

我真的很努力地找到可以幫助我的信息,所以任何指導都會很棒。

回答

3

您應該創建一個GameServer類和一個GameClient類。遊戲邏輯進入GameServer,渲染進入GameClient。如果你的遊戲邏輯與你的渲染代碼混合在一起,看看一些模型視圖控制器的解釋(這裏是一個體面的文章:http://www.badlogicgames.com/wordpress/?p=2668)。

讓我告訴你,通常是服務器和客戶端是完全不同的應用,有時它不是feasable讓用戶主機的服務器,因爲它可能涉及配置防火牆和諸如此類的東西。

所以GameServer應該擴展Listener,創建一個kryonet的Server實例,並將自己添加爲服務器的偵聽器。 GameClient應該類似地擴展Client,創建kryonet的Client的一個實例,並且將它自己作爲一個監聽器添加到客戶端。

如果您將當前遊戲狀態類的引用傳遞給GameClient,則GameClient可以與它通信並告訴它要呈現的內容,然後遊戲狀態可以告訴客戶端發送什麼作爲輸入。同樣,如果您傳遞當前的遊戲狀態類的遊戲服務器的一個參考,服務器可以向遊戲邏輯提供輸入,然後遊戲邏輯可以告訴發送到客戶端的服務器。

我建議在IP環回上創建一個簡單的消息傳遞程序來熟悉kryonet。