Luar's Flash Playground:Client作主持人還是Server作主持人好?
新聞(101)
觀點或評論(94)
Flash書(63)
教程(73)
Design Patterns(3)
FlashCom筆記(47)
Flash Remoting筆記(27)
Flex筆記(11)
Flash Lite筆記(14)
PHP資訊(23)
Ajax筆記(9)
習作(51)
組件(17)
酷站(32)
學習資源(28)
書籍推介(15)
本站與我(91)
RSS瀏覽器
聯絡
熱愛鑽研
Ajax
ActionScript
Flash
Flash Lite
Flex
Flash Remoting
FlashCom
Director
Lingo
PHP
Multiplayer Game

搜尋
VCASMO
Client作主持人還是Server作主持人好? (25-04-2005)

繼續上一篇回合制的多人連線遊戲開發的思考,上一篇提到由Client一方其中一個玩家作主持人,當知道所有玩家都完成該回合時,發出開始新回合訊息。另一種做法,所有玩家都完成該回合時,通知Server,再由Server發施號令。兩種做法,那種較好?

Client作主持人

假設遊戲房間有4人,其中一人為主持人,如果玩家完成該回合時,Private Call通知主持人。由於Flash Player沒有可能用IP直接通訊,其實只不過是經過Server再轉送到主持人。如圖,共(n-1)*2=6次連線:
client-host01.jpg

主持人收到並統計所有人都完成回合時,通知所有人開始,也是經過Server再轉送到所有人,共n+1=5次連線(不想因為Network Latency問題,主持人比其他人早開始,所以也送一份給自己,跟所有人一樣,收到訊息後才開始):
client-host02.jpg

總數是(n-1)*2+(n+1)=3n-1=11


Server作主持人

所有玩家完成該回合時,通知Server,共4次連線:
client-host03.jpg

Server知道所有人完成後,通知所有人開始,也是4次連線:
client-host04.jpg

總數是2n=8

這樣說,Server作主持人可以較節省Bandwidth和減少Network Latency機會。我同意Server作主持人是比較美滿的做法。作主持人當然不只是信差角色而已,也有一些遊戲邏輯要執行,例如找出下一位擲骰子玩家,如果這些工作,可以Client端進行,是否可以減輕Server工作負擔?當然Client端進行的遊戲邏輯,容易作弊,也要考慮萬一作主持人的玩家登出後,要找人接替,進行途中遊戲邏輯,如何善後?這可能比交給Server處理更複雜。所以我又嘗試遊戲邏輯是所有人都各自進行,主持人真是只剩下一個作用,當信差來發施號令。

Client作主持人,Server端的架構可以較簡單,基本上不同遊戲都可以用同一個架構,不用度身加入遊戲邏輯部分,但將遊戲邏輯放在Client端SWF裡,現在Decompiler橫行的世界,是要留意考慮的因素之一。

13-5-2005補充
千萬不要用Client作主持人,有太多後遺症要解決。

本文章由發表。
意見
  • 認同你的看法.
    主要是因為網路的問題
    所以flash client單純作為presentation layer是比較適當的做法
    另外在遊戲的通訊協定上也要注意 否則即使client不作太多運算依然可以作弊

    由trow於13-05-2005發表

  • 非常贊成兩位的意見!!

    由Beni Mang於24-06-2005發表

同組文章

Movable Type 4.32-en系統支持,Luar's Production版權所有。