2009-09-15 122 views
1

我建設使用Flash/Flex的客戶端和FluorineFX多人遊戲(就像FCS/FMS,除了它是寫在.NET)的服務器端。我的問題是關於RTMP協議上共享對象的使用和性能。基本上,我計劃在屏幕上同時顯示不少對象,每個對象都有自己的座標,行爲,視覺效果等。連接到同一個房間的所有用戶都能夠看到並與這些對象交互對象。遠程共享對象:哪個更好,一個數組SO還是多個對象SO?

使用一個包含遊戲世界中所有對象的單個數組共享對象可以非常容易地快速同步所有客戶端上的所有對象,但它看起來可能是性能沉重,而且我會在涉及每個單獨對象的安全性時失去靈活性。

或者,在遊戲世界中,每個對象使用不同的共享對象會給我很大的靈活性,以便誰可以根據位置獲取對象(以儘量減少網絡性能),但是我擔心大量的共享對象與我最終會以獨特的名稱,不必讓客戶端不停的連接/斷開連接到不同的共享對象,因爲他們走動。

我在RTMP方面並不是專家,但是我對每個處理這個問題的方法的優缺點有了一個想法,並且我意識到我可以在技術上使用基於的情況,但我真的在尋找有經驗的人使用遠程共享對象,從中我可以收集一些知識。

人照顧,分享該主題的經驗?

回答

0

我們正在使用Flex-的WebORB,MSMQ和RTMP實現悲觀併發,所以這個問題是不是因爲我們沒有不斷地連接/斷開完全相同。這是關係我的問題,使用不同的共享對象時是否需要連接/斷開連接?如何爲不同的對象使用消息傳遞和不同的渠道?直覺上我會選擇爲每個對象都有一個共享對象的第二種方式,但如果你真的需要連接/斷開各一次,然後我怕事情會無法順利工作了(我想你將不得不測試) 。在另一方面,如果對象是不是太複雜,使用一個遠程對象似乎並沒有太大的問題......。當然,如果用戶還沒有得到有權查看該對象之一,然後將它們存儲在一個共享的對象是一種危險關閉的用戶可以攔截網絡流量...

0

我只有有限的遠程的共享對象的經歷,我還沒有實現什麼「大」使用遠程對象,到目前爲止,但重新思考以上Cardor先生的評論,想象在每個房間裏有1000個房間和100個遊戲對象的遊戲。作爲一名球員,你只能同時進入一個房間。如果遊戲的設計是爲了讓所有的遊戲對象都在一個大的SO中,很明顯這不是一個好的解決方案。

如果遊戲真的是設計成「玩家只能看到他所在的房間裏的東西」,那麼每個房間可以有一個SO。但我想它歸結爲遊戲設計。

0

我們爲我們的遊戲使用Flash和FluorineFx,但我們的目的共享對象似乎有點「嘮叨」,所以我們選擇將消息推送到連接的客戶端。這使我們能夠完全控制要發送的消息,消息優先級和頻率。

共享對象是快速啓動和運行的好方法,但您可能會發現稍後會遇到性能問題。

無可否認,我們的遊戲是一款兒童MMO遊戲,所以我們不打算完全同步所有客戶端,我們的多玩家迷你遊戲也都基於這個原因。

很多這些類型的決定取決於你正在建設什麼類型的遊戲:

  • 難道是回合制或實時?
  • 遊戲的最大玩家人數 是什麼?
  • 在 客戶端與服務器上處理多少邏輯?

有一本好書ActionScript for Multiplayer Games and Virtual Worlds談論這些問題。

相關問題