看板 GameDesign 關於我們 聯絡資訊
各位好,我想請教 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