目前用Unitiy開發一款FPS競技游戲,所有的移動和操作都是誰發送,誰告知最新狀態,并不是服務器計算狀態,(不考慮作弊問題),按照測驗出來的效果還算不錯,打擊感也挺強,比如A丟手雷,手雷被命名為M,這個訊息由服務器轉發給B,B也命名為M,A的主機中M身上系結腳本不斷發送M的最新狀態,B收到后更新M的狀態,形成軌跡,這樣的狀態同步,請問有什么問題嗎,這么做比幀同步主要差在哪里,我知道這類游戲最好是幀同步,可是,要制作確定性的系統,非常困難,特別是物理引擎,不能使用UNITY自己攜帶的,而且專案也做了一大半了,各位有什么好的建議改進嗎?
PS:
1.目前測驗出來的效果還能算不錯的,沒有不適感,當然,局限于網速尚可情況下
2.完全改幀同步很麻煩,很難
3.所有的狀態更新主要是由客戶端計算完成并非服務器,服務器只做轉發,針對Vector3等浮點數進行定點數操作后轉發
這款游戲只是本人興趣使然,并不是想商用類的,不過還是希望能按正確的路子去做一個能保證體驗的游戲,游戲完成版,需要參與校內比賽,如果體驗不好就GG了,麻煩大家給點建議,解答下小弟的困惑!
最近還嘗試試了下光子引擎,但是我發現光子引擎貌似也是,不斷地去傳輸狀態,來維持所謂的同步,而且也沒怎么涉及確定性的地方,特別是物理系統的確定性,所以我更加迷惑了,求各位指點一二
uj5u.com熱心網友回復:
t同問。。。。uj5u.com熱心網友回復:
起點的同步 在處理程序中 會出現 不同的結果 特別是 多連接的情況 幀同步 每幀在做同步 會避免這種情況 發生 純資料 互動uj5u.com熱心網友回復:
如果是狀態同步上 局域網并且客戶端不多的情況下 可能看起來 問題不大 但是實際上 區別 會很大 模擬的準確性 比資料的準確性會低很多 所以 不支持 你用狀態同步 還是 數值同步好 你這種情況 很好處理 把所有的數值 做互換就行了啊 物理 模擬 也會有 資料 啊 只不過 這樣改 網路 流的負擔會增大 所以做好 包頭包尾 就行了 啊 反正 是校園測驗 應該客戶端 不會很大啊uj5u.com熱心網友回復:
感覺 是 a 丟出手雷 n 把n發送服務器 服務器 做資料可行性檢查 與生成軌跡 ok后 m 把m發送 到所有 同局游戲者 這樣 同步性比較好 也可以 避免出現一些bug的情況uj5u.com熱心網友回復:
幀同步必須要確定性系統,然而unity的物理引擎又是不確定性的,這怎么弄啊uj5u.com熱心網友回復:
那如果考慮人物移動呢,也是服務器計算發送給各客戶端是么,那就是純的狀態同步了吧?uj5u.com熱心網友回復:
哦,不對,你的意思是服務器只是檢查對吧uj5u.com熱心網友回復:
幫頂,的確值得思考的問題uj5u.com熱心網友回復:
我這個不是只傳輸了起點,程序中的位置變化一直在傳,直到爆炸掉,這種操作可以嗎,如果從商用角度考慮呢,我希望我是按商用標準做事的uj5u.com熱心網友回復:
非商用,僅僅是校內參賽可以不考慮這些問題,只要體驗好即可.uj5u.com熱心網友回復:
我現在就是想以商用標準看這個問題,目前應該怎么優化呢或者這個的問題主要體現于哪里uj5u.com熱心網友回復:
我頂頂頂,沒人回復啊!!!uj5u.com熱心網友回復:
加分求回復5416561轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/32358.html
標籤:Unity3D
