Re: [問題] 請益 MMOG 系統架構設計概念

看板GameDesign作者時間16年前 (2007/12/17 17:59), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《jerohands (這就是人生啊)》之銘言: : 各位好,我想請教 MMO 開發在伺服器和客戶端的系統設計概念, : 目前我自己也有寫一套,但跟目前線上遊戲作比較, : 在人物狀態更新上相形之下遜色很多,會頓... : 我來說說我的作法: : =============================== : 客戶端:使用 RTP 傳送資料 : 1.設定 TIMER 在 MsgProc 中固定每 33毫秒(frame rate 30/sec) : 發送自己的狀態到伺服器。 : 2.在「程式主體」中接收使用者輸入改變自己狀態,和上一個迴圈的狀態比較, : 有改變且時間相隔 33毫秒以上,則發送自己的狀態到伺服器。隨後再更新其他 : 玩家的狀態,更新的方法是依據上一次接收到的狀態預測這次的位置和狀態 : (我不曉得這一步更新其他玩家是不是有畫蛇添足...)。 : =============================== : 伺服器端:使用 TCP 傳送資料 : 1.接收到玩家送來的 RTP 封包,更新這位玩家在伺服器中的狀態, : 然後廣播給其他玩家。 : 2.程式主體中每個迴圈每 100毫秒發送每個玩家狀態給其他在線的玩家。 : =============================== : 伺服器端我有嘗試改用 RTP 傳送資料封包,但對於動態浮動 IP 的客戶端, : 會接收不到... : 我的問題是,一般 MMOG 伺服器端和客戶端在更新人物資料時 : 有什麼機制?UDP?Multi-Thread? : 請指教。 我所知道的做法是 Non-Blocking + Multi-Thread 的形式,如果不排斥英 文的話,建議你到 Gamedev.net 去看關於伺服器架構的程式觀念,裡面有 很詳細的介紹。 基本上伺服器端如果不用 MultiThread 就會一直處於忙碌的狀態,觀念上 必須要修正成,我要如何做到讓伺服器不會因為某些事情就停下來,要有 一個全體都能兼顧的型態,這樣的程式寫法,這個是大概的 Non-Blocking 概念,因為礙於規約,我不能講太多,上面提到的 Gamedev.net 就有很詳 細的介紹與程式範例,建議你花點時間研究囉 ^^ http://www.gamedev.net/reference/list.asp?categoryid=30 直接貼上連結,希望對你有幫助,裡面大概應該知道的都有說了。 ※ 編輯: Taniwha 來自: 122.146.195.131 (12/17 18:06)

12/17 18:37, , 1F
感謝a大和T大提供意見,不過關於 NAT 打洞這點我還是
12/17 18:37, 1F

12/17 18:38, , 2F
是沒什麼概念..
12/17 18:38, 2F

12/19 11:29, , 3F
TURN/STUN/ICE...
12/19 11:29, 3F
文章代碼(AID): #17PaXvHI (GameDesign)
文章代碼(AID): #17PaXvHI (GameDesign)