[程式] 想請問即時遊戲的設計問題

看板GameDesign (遊戲設計)作者 (LaPass)時間10年前 (2015/07/27 11:41), 編輯推噓4(407)
留言11則, 5人參與, 最新討論串1/2 (看更多)
例如 暗黑、RO、LOL、WOW、世紀帝國等等 像這種,即使,有單位,有位置,有技能的狀況 要怎麼設計多人連線的同步? 我自己的想法是 將地圖分格子,用座標去處理位置問題。 然後時間的話,則固定以0.1~0.5秒為一個單位(frame),去計算各單位的動作 client端下達命令或是使用技能時,都會用frame為單位下去做計算跟同步 傳遞訊息時用tcp傳遞每個frame的重要訊息 EX frame 1{ a使用技能重擊攻擊b造成130傷害,變動後b還剩500hp a消耗5單位魔力,變動後還剩95。 ...... } 其他像是持續性傷害,自然生命力恢復 理論上只要一開始有給定速率跟起始值,client端應該能自己算出現在的hp值 然後,傳輸的時候,再過濾掉那個client端不該看到的資料,像是敵人的位置等等 不過我沒寫過這種程式,不確定這種作法可不可行 或是,想請問業界中確切的作法是怎麼樣呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.87.115 ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1437968498.A.E03.html

07/27 12:46, , 1F
這類技術蠻多樣的 比較常看到的是多少ms一個tick
07/27 12:46, 1F

07/27 12:47, , 2F
然後這一個tick針對玩家陣列做資料廣播
07/27 12:47, 2F

07/27 12:47, , 3F
再來就是廣播時資料的sync
07/27 12:47, 3F

07/27 12:50, , 4F
接收資料(tick中)->伺服端處理->sync後廣播(tick結束)
07/27 12:50, 4F

07/27 12:52, , 5F
因為時間很短 通常是40ms以內 所以感覺不出差異
07/27 12:52, 5F

07/27 12:52, , 6F
即時性遊戲比較要注意的就是PING較高者的移動補償
07/27 12:52, 6F

07/27 13:05, , 7F
其實一般人的反應極限是 200ms ,拉到100ms人就感覺不出
07/27 13:05, 7F

07/27 13:05, , 8F
來有不同部的問題了
07/27 13:05, 8F

07/27 14:04, , 9F
實際上以前打遊戲100ms是感覺得出來的,會有一點鈍鈍的感覺
07/27 14:04, 9F

07/27 21:31, , 10F
100ms 還算是 high latency 吧,都過 5 frames 了
07/27 21:31, 10F

07/28 01:15, , 11F
然後就是看client如何把那一點延遲修的看不出來
07/28 01:15, 11F
文章代碼(AID): #1LjQXou3 (GameDesign)
文章代碼(AID): #1LjQXou3 (GameDesign)