2013-07-25 120 views
0

我想開發一個電腦遊戲。我想這個遊戲是多人遊戲。遊戲是街機空間射擊遊戲遊戲網絡編程同步圖形

我計劃在服務器級別運行遊戲,然後在客戶端發送更新。我面臨的問題是對象創建。假設一名球員出手,投籃本身就是新對象。這些將需要創建。

在我的遊戲中,我有一個層次結構,鏡頭本身就是這個結構的一部分。它會像樹一樣。我有的問題是識別客戶端和服務器上的對象。

我該如何確保當客戶端收到一些更新,然後它會更新正確的對象?

新對象的創建情況如何?在我的情況下,遍歷場景圖形,並且一旦從服務器獲取更新,每個對象都會更新。但是創建新對象的更新違反了這個原則。我應該如何處理它們?

此外,我無法真正獲得整個場景的更新。我只需要更新播放器可見的特定對象。我應該如何處理其他不可見的對象?當它們變得可見時會發生什麼?如何追蹤對象何時可以看到玩家?

回答

1

我怎樣才能確保當客戶端收到一些更新,然後它 將更新正確的對象?

您可以給每個對象服務器創建一個獨特的id。你可能想創建一個包含id的超類Object類,讓所有其他遊戲對象類繼承它。或者,您可以將地圖鏈接到idobject之間。或者,你可以混合它們。爲了得到一個唯一的id,服務器可以有一個全局的'nextID'作爲int,並簡單地分配給一個新的對象,併爲下一個增加它。

但是創建新對象的更新違反了這個原則。

我不是很瞭解你正在談論的原理,但如果你在遍歷它時編輯你的場景圖(或遊戲對象列表),你可以把新創建的對象放到另一個列表中,在遍歷完成後插入新的。他們將從下次更新開始更新。 (您應該考慮如何移除物體)

我應該如何處理其他不可見的物體? 當它們變得可見時會發生什麼?

那麼,你是一個應該弄明白的人,因爲它真的取決於你的遊戲系統。我的建議是嘗試跳過他們的更新並查看出現的問題並修復它們。

我該如何跟蹤對象何時對玩家可見?

另外,還有幾種方法來處理這個問題。服務器可以檢測客戶端的所有內容,並僅爲每個客戶端發送可見對象信息或者,每個客戶端都可以檢測到它們,並向服務器發送請求以開始更新可見的請求。或者,它可能是混合的方式。

嘗試服務器驅動的一個第一,看看服務器可以與clients.To的最大數量執行它使用客戶驅動的一個,記住每個客戶端仍然需要無論其知名度,以更新所有對象的位置,但對於AI發送請求只有可見的更新。

同樣,有很多方法可以處理這類問題,這取決於您的遊戲系統要求。這就是爲什麼在不瞭解你的遊戲系統的情況下很難回答你的問題。嘗試調查其他類似的多人遊戲是如何從某些書籍或谷歌設計的。祝你好運!