Re: 格鬥類的遊戲(小朋友齊打交)

看板GameDesign (遊戲設計)作者 (Bird)時間18年前 (2007/02/12 22:17), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/2 (看更多)
說實話我不內行 沒有動手implement過 不過沒人回這篇 我就來拋磚引玉一下 ※ 引述《kangta198109 (Ryan)》之銘言: : 想作個JAVA線上格鬥遊戲,類似好多年前的小朋友齊打交 : (簡易版)下面是所想的架構,現在略嫌粗造,不知道可不 : 可以大家給我點意見,我很弱需要大家的意見,多謝囉^^ : Client Server : ________ _________ : | | Real Time Socket | | : | |--------------------> | | : | |--------------------> | | : |________| Nonreal time Socket |________| : //Real Time Socket:即時資料 : //Nonreal time Socket:非即時資料 不知道你的real-time和non-realtime是指什麼意思 我想應該是reliable(ex. TCP)和unreliable(ex. UDP)吧.. : ========================================================= : 物件: : (Server) : CommandCatcher CommandPool RealTimeSocket NonrealTime Socket : __________________ ___________ 儲存指令_____________ __________________ : | 一次取出1~n個指令|<->|指令Queue |<---------| | | | : |每5ms存取一次 | |__________| ---->|___________ | |________________| : |__________________|--------------------| /|\ /|\ : /|\ 指令處理後資料回傳 | 處理資料回傳 |角色座標同步 : \|/ | 指令傳入 |(對話) : CommandProcess ===================================== : ___________________ | | : | 碰撞處理 | \|/ \|/ : |更動角色狀態與座標 (Client) (Client) : |_________________| RealTimeSocket NonRealSocket : ========================================================== 對話用TCP傳, 指令用UDP傳 這樣的idea是對的 網路動作遊戲很重要的一點 就是動作部份的傳輸要low latency 用UDP來傳輸一定是比較好的 但還是要面對packet loss和lag的問題 當你該收到一個封包而慢了三秒 或這個封包整個掉了 就需要一些prediction, recovery, synchronous的機制 我認為這些才是連線動作遊戲最重要的地方 (玩連線遊戲的時候, 我都會去揣摩一下他的同步機制是怎麼做的 像CS有時候lag會瞬間移動回朔 星海遊戲中可以調network latency參數, 但網路越lag你的兵會越慢收到命令 War3感覺在這部份有點改進 不知道是不是幻覺) 印像中小朋友齊打交II (幾年前的那個 非網路版) 的同步就實作的很差 區網連線還會lag 不知道最後的版本有沒有改進 我覺得連線動作遊戲和一般遊戲主要的差別就是要注意這個吧.. : 以上是簡略所想,不知道這種架構可不可以去實作? : 好不好? : 如果不好,非常不好意思,希望大家多體諒可能我想的並不周到 : 多謝囉^^ 拋磚引玉一下 請大家補充指正 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.88.16

02/12 22:23, , 1F
個人覺得遊戲網路最麻煩的地方就在同步的問題...
02/12 22:23, 1F

02/13 01:32, , 2F
說到這個,就一定要說blizzard的作法
02/13 01:32, 2F

02/13 01:32, , 3F
一律只送出鍵盤指令XD
02/13 01:32, 3F
文章代碼(AID): #15q7Rx2q (GameDesign)
討論串 (同標題文章)
文章代碼(AID): #15q7Rx2q (GameDesign)