2012-08-22 87 views
0

我將嘗試在我的XNA遊戲中構建多人遊戲並同時爲其構建服務器,但我不知道服務器應採用何種格式。我應該使用什麼C#模板爲XNA遊戲構建服務器?

在大多數遊戲中,有一些播放器託管,服務器是不可見的,它沒有自己的窗口,只需在遊戲內部創建一個大廳,並在後臺爲您提供一個服務器線程。

類似這樣的描述是我想我想要的,但是開發這個的最好方法是什麼?我是否應該將服務器作爲控制檯應用程序啓動,然後以某種方式設法啓動控制檯,並在玩家創建大廳時使其不可見,或者找出將代碼移植到xna遊戲中的線程的方式?我應該使用Windows窗體應用程序模板嗎?什麼是最好的方式去做這件事?

+0

您是否檢查過XNA網絡功能? http://msdn.microsoft.com/en-us/library/bb975801.aspx –

+0

我打算使用套接字,因爲我不想僅限於真實帳戶 –

+0

您可以查看Lidgren C#網絡 – Cyral

回答

5

從概念上講,你的服務器包括:

  • 一組實現服務器端遊戲邏輯和網絡基礎設施類,
  • 主機應用程序,要麼是
    • 一遊戲客戶端,或
    • 專用服務器進程

通過精心設計的代碼,這兩部分大部分是相互正交的 - 除了日誌和服務器管理工​​具等一些小細節之外。套接字不關心它們是否在Windows窗體應用程序或控制檯應用程序中運行;這個問題與他們完全無關。

所以你真正想要做的是把你的服務器類放在類庫項目中,然後從任何需要託管服務器的應用程序中引用該項目。這個主機應用程序可以是任何東西。如果你希望玩家通過客戶端來託管服務器,或者Windows服務,如果你想要一個專門的服務器進程或者其他的東西,那麼它可以是XNA遊戲。

在這一點上,它只是從主機應用程序中的相應位置調用Server.Start()(或者適用於您的情況) - 例如,在後臺線程中。

1

Terraria是XNA,它有一個控制檯窗口服務器應用程序和主遊戲。主機類型是遊戲託管和專用服務器。兩種託管類型實際上都使用相同的服務器應用程序,但專用服務器只是像平常一樣運行該過程,遊戲客戶端以隱藏模式運行控制檯窗口應用程序,因此它不會顯示在任務欄中或顯示爲窗口。

思考的食物!

相關問題