Re: [問題] 請益 MMOG 系統架構設計概念
※ 引述《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
12/17 18:37, 1F
→
12/17 18:38, , 2F
12/17 18:38, 2F
→
12/19 11:29, , 3F
12/19 11:29, 3F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):