Luar's Flash Playground:Client作主持人還是Server作主持人好?
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作主持人,有太多後遺症要解決。

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

    由trow於13-05-2005發表

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

    由Beni Mang於24-06-2005發表

同組文章