看板 GameDesign 關於我們 聯絡資訊
※ 引述《fasthall (Xen)》之銘言: : 現在正在練習寫一個realtime的MMORPG : server端帳號資料和遊戲物件使用MySQL來儲存 : 為了即時的需求使用UDP來傳送指令 : 由於完全沒有設計過這種MMORPG : 又不好意思直接發問請教怎樣設計 : 所以我自己想了如下一個情境 : 請有設計過MMORPG的前輩指教使否可行 : =========================================== : 遊戲世界中的物件皆儲存在server記憶體中 : 1.client登入時送username/password給server : 2.server收到帳密後到DB的user表中找有無使用者資訊 : 3.若找到則回傳一個token並在server記憶體登入這玩家 建議通過驗證後把玩家的基本資料存放進server的記憶體 而token可考慮用user DB Index : 4.之後client都只傳這個token和指令(不用傳帳密) : 5.server收到tokent和指令後去更新記憶體中玩家資訊(不動DB) 原則上不能相信client傳送的資料 client只負責發出某項請求 server用記憶體中的資料檢查請求的合法性 進行計算後回傳結果 : 6.server定時檢查記憶體中的玩家 每隔一段時間回存到DB 有必要才進出db 譬如取得裝備或完成任務 其他的部分可在玩家登出時進行 : ============================================ : 這樣設計的目的是不要每個封包都包含帳號資訊 : 而且可以減低資料庫存取頻率 : 我server用Java non-blocking udp socket寫 : 由於遊戲本身不複雜預計能負載千人在線 : 想請問這個設計會不會遇上什麼問題? : 或是有沒有標準的一套MMORPG設計情境可參考? : 謝謝各位前輩 基本上要注意資料的互斥性 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.141.141
LayerZ:推第5點 同樣判斷最好client/server各做一次 09/04 10:05
LayerZ:client避免送出不合法請求 server驗證合法性 09/04 10:05