2012-05-20 39 views
0

有沒有關於如何在XNA遊戲(Windows)中創建本地多人遊戲的教程或示例?XNA中的本地多人遊戲

我經常看到網絡遊戲的教程,但從來沒有在如何進入第二個球員。如何讓第二個玩家登錄,使用相同的對象,但使用不同的控制器...

謝謝。

回答

2

我還沒有遇到任何教程,但我可以概述一些基本的想法。

如果你的球員將是相同的:

修改你的「玩家」的對象的構造函數有一些playerIndex的參數。在播放器類中檢查輸入時,使用此索引。這樣,您可以創建一堆「玩家」,而無需爲每個人編寫單獨的課程。然後,您可以編寫通用代碼,如:

if (inputManager.IsMoveRight(playerIndex)) 
    { 
     // do some stuff etc. 
    } 

這將需要對輸入管理結構進行一些修改。您應該旨在推廣您已有的代碼。

如果每一個玩家都會有完全不同的實現方式:

你需要充分利用多態性在這種情況下。如果每個玩家都應該在菜單屏幕中選擇他們的角色,那麼在玩家類中需要有一些屬性來保存他們選擇的角色(注意:如果每個玩家都應該是預設的默認值,即玩家1總是馬里奧,玩家2始終是音速的,所以最好爲每個玩家劃分你的玩家類別)。如果需要,該屬性可以向上移動一層並存儲在「控制器」類中。

菜單邏輯:

處理玩家登錄插件加載任何之前的水平真的是最好的做法。我假設在比賽中你不需要球員進/出。基本概述:

  • 當遊戲處於字符選擇屏幕(或者僅僅是主菜單)時,檢查所有控制器的輸入。如果一個控制器按下「開始」,就登錄它。這可能涉及到簡單地將一個playerIndex添加到數組中。然後,當遊戲加載時,檢查陣列中的活動玩家併產生任何找到的東西。

  • 儘管您可能需要特定的菜單登錄屏幕,但字符選擇可以以非常相似的方式實現。在登錄屏幕中檢查活動玩家的輸入,並允許他們滾動並選擇一個角色。將結果存儲在某處(例如播放器或控制器類)。

其他需要考慮的事情:

  • 從鍵盤和遊戲手柄讓輸入?如果是這種情況,那麼將鍵盤默認爲玩家可能會更容易,並且只允許從遊戲手柄登錄/註銷。

  • 我之前提到過這個,但是你需要概括一下你的輸入管理,以防止大意大利麪代碼。爲了使這一切發揮作用,你不應該直接在你的播放器類中檢查先前/當前的控制器狀態。 The MSDN Game State Management樣本值得研究,因爲它使用了類似的系統。

這不是一個非常全面的指南,但希望我提出了一些要點供您考慮。