[程式] MMO之server/client情境設計

看板GameDesign作者 (Xen)時間13年前 (2012/07/21 07:48), 編輯推噓3(3017)
留言20則, 7人參與, 最新討論串1/2 (看更多)
現在正在練習寫一個realtime的MMORPG server端帳號資料和遊戲物件使用MySQL來儲存 為了即時的需求使用UDP來傳送指令 由於完全沒有設計過這種MMORPG 又不好意思直接發問請教怎樣設計 所以我自己想了如下一個情境 請有設計過MMORPG的前輩指教使否可行 =========================================== 遊戲世界中的物件皆儲存在server記憶體中 1.client登入時送username/password給server 2.server收到帳密後到DB的user表中找有無使用者資訊 3.若找到則回傳一個token並在server記憶體登入這玩家 4.之後client都只傳這個token和指令(不用傳帳密) 5.server收到tokent和指令後去更新記憶體中玩家資訊(不動DB) 6.server定時檢查記憶體中的玩家 每隔一段時間回存到DB ============================================ 這樣設計的目的是不要每個封包都包含帳號資訊 而且可以減低資料庫存取頻率 我server用Java non-blocking udp socket寫 由於遊戲本身不複雜預計能負載千人在線 想請問這個設計會不會遇上什麼問題? 或是有沒有標準的一套MMORPG設計情境可參考? 謝謝各位前輩 -- 約翰高爾特是誰? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 98.156.103.209

07/21 11:08, , 1F
剛剛又想到 可是這樣只要有人偽造token就能破解了......
07/21 11:08, 1F

07/22 00:38, , 2F
token寫一個加密蓋上去用自己的格式讀?
07/22 00:38, 2F

07/22 00:43, , 3F
啊不對,當我沒說(炸
07/22 00:43, 3F

07/22 01:59, , 4F
樓上ID好眼熟XD
07/22 01:59, 4F

07/22 01:59, , 5F
想了想 如果指令不加密 只能在登入的時候給個session id
07/22 01:59, 5F

07/22 02:00, , 6F
來讓每次登入都能用不同id防止hacker偽造封包了
07/22 02:00, 6F

07/22 03:44, , 7F
帳密傳遞的時候不加密 hacker直接攔下來讀不就得了? @@
07/22 03:44, 7F

07/22 10:57, , 8F
session id更方便搶劫吧,你看看免費空間的cookie....
07/22 10:57, 8F

07/22 11:26, , 9F
那請問有不加密的辦法嗎 伺服器要解密的話挺耗資源的
07/22 11:26, 9F

07/22 11:32, , 10F
有人說session id+client address/port這樣OK嗎
07/22 11:32, 10F

07/22 12:47, , 11F
SSL
07/22 12:47, 11F

07/22 12:49, , 12F
現在電腦夠快 加解密也只是幾百奈秒的事情
07/22 12:49, 12F

07/22 12:52, , 13F
RSA AES也都可以 都有套件可以幫你處理資料加密的事情
07/22 12:52, 13F

07/22 13:00, , 14F
抱歉 SSL是HTTP通訊協定在用的 SHA也不錯
07/22 13:00, 14F

07/22 14:05, , 15F
RSA/AES是加密,SHA是雜湊驗算....
07/22 14:05, 15F

07/22 14:06, , 16F
SSL是協議,其下可以使用很多種算法...
07/22 14:06, 16F

07/22 23:23, , 17F
可以參考 http://blog.codingnow.com/ 云風的BLOG
07/22 23:23, 17F

07/22 23:38, , 18F
問你的pm = =
07/22 23:38, 18F

07/22 23:38, , 19F
等等... 練習? 是學生喔.....
07/22 23:38, 19F

09/16 15:49, , 20F
我是研究生 這是練習 跟我職業無關 有問題嗎?
09/16 15:49, 20F
文章代碼(AID): #1G2UveAM (GameDesign)
文章代碼(AID): #1G2UveAM (GameDesign)