作者jerohands (這就是人生啊)
看板GameDesign
標題[問題] 請益 MMOG 系統架構設計概念
時間Sun Dec 16 14:21:23 2007
各位好,我想請教 MMO 開發在伺服器和客戶端的系統設計概念,
目前我自己也有寫一套,但跟目前線上遊戲作比較,
在人物狀態更新上相形之下遜色很多,會頓...
我來說說我的作法:
===============================
客戶端:使用 RTP 傳送資料
1.設定 TIMER 在 MsgProc 中固定每 33毫秒(frame rate 30/sec)
發送自己的狀態到伺服器。
2.在「程式主體」中接收使用者輸入改變自己狀態,和上一個迴圈的狀態比較,
有改變且時間相隔 33毫秒以上,則發送自己的狀態到伺服器。隨後再更新其他
玩家的狀態,更新的方法是依據上一次接收到的狀態預測這次的位置和狀態
(我不曉得這一步更新其他玩家是不是有畫蛇添足...)。
===============================
伺服器端:使用 TCP 傳送資料
1.接收到玩家送來的 RTP 封包,更新這位玩家在伺服器中的狀態,
然後廣播給其他玩家。
2.程式主體中每個迴圈每 100毫秒發送每個玩家狀態給其他在線的玩家。
===============================
伺服器端我有嘗試改用 RTP 傳送資料封包,但對於動態浮動 IP 的客戶端,
會接收不到...
我的問題是,一般 MMOG 伺服器端和客戶端在更新人物資料時
有什麼機制?UDP?Multi-Thread?
請指教。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 134.208.3.138
推 asoedarren:甚麼平台? windows可以用iocp去做 12/16 16:14
→ asoedarren:如果你不停在更新資訊 可以使用udp 反正遺失一兩個封包 12/16 16:14
→ asoedarren:也無所謂 12/16 16:16
→ jerohands:嗯 那不知有沒有介紹系統開發的文章或是書呢? 12/16 17:28
→ jerohands:我比較想知道的是開發流程.. 12/16 17:29
→ jerohands:不過最近我測試UDP遇到一個問題,NAT內的PC收不到.. 12/17 16:03
推 asoedarren:NAT要打洞 12/17 18:23
推 sheauren:NAT收不到很正常 你要開port給client或client自己來要了 12/18 16:40