了解游戲中的數據同步

目錄

數據同步

通過比較來看狀態同步和幀同步

狀態同步

幀同步?

幀同步實現需要的條件

兩者相比較


數據同步

在聯機游戲中,我的操作和數據要同步給同一局游戲中其他所有玩家,其他玩家的操作和數據也會同步給我。這叫做數據同步,目前數據同步的方式則有幀同步狀態同步

狀態同步:將操作發送給服務端,服務端對操作進行運算并下發狀態,客戶端接收并播放狀態

  • 發操作
  • 收狀態

幀同步:將操作發送給服務端,服務器不進行任何運算把操作傳給客戶端,客戶端在本地進行運算

  • 發操作
  • 收操作

適合幀同步的游戲:

  • 網絡波動比較大
  • 追求即時反饋:FPS、MOBA、SPT
  • 控制大量游戲單位:RTS??

通過比較來看狀態同步和幀同步

拿小編熟悉的紅色警戒舉例:假如我和你在聯機對戰,你要控制100個小兵移動到我的基地。

狀態同步

  1. 客戶端要將被選中的100個小兵信息和目標點發送給服務器
  2. 服務器通過計算100個小兵的移動速度和100個小兵當前位置信息定時返回給我倆的客戶端
  3. 直到100個小兵到達我的基地。

由此可見(控制大量游戲單位)的這種游戲如果采用狀態同步會給服務器造成多大壓力

幀同步?

同樣場景如果采用幀同步:

  1. 客戶端將幀號(幀號表明當前游戲進行到第幾副畫面了)、100個小兵的信息、目標點發送給服務器。
  2. 服務器一次性返回給我倆的客戶端幀號、100個小兵的信息、目標點。
  3. 我倆各自的客戶端通過同步幀號進行本地運算處理小兵當前的位置信息,直到他們達到目標點。

幀同步實現需要的條件

一套完整的幀同步游戲框架要實現什么?

  1. 可靠的UDP:實現 時序性 、 重傳機制 、 應答機制 、 消除最小延遲
  2. 確定性的數學和物理運算庫:浮點數在電腦運算存在不精確性? ——? 如何解決:取整計算、容許小概率誤差、邏輯表現分離
  3. 斷線重連:大家玩王者如果卡了或者斷線,恢復之后大家會看到像用倍速看電影那樣的畫面,這是通過追幀的方式重連游戲
  4. 比賽回放:服務器記錄關鍵幀;下發客戶端進行重放
  5. 反作弊:重演、仲裁;一局游戲有五個人,那他們提交到服務器的操作記錄是相同的,如果有人記錄不相同說明存在作弊現象
  6. 避免等待

兩者相比較

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718231.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718231.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718231.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

國產數據庫概述

這是ren_dong的第33篇原創 1、什么是數據庫? 1.1、基本概念 定義:數據庫是 按照一定的數據結構組織、存儲和管理數據的倉庫。可視為電子化的文件柜,用戶可以對文件中的數據進行新增、查詢、更新、刪除等操作。 作用:業務數據 存儲…

kettle下載及安裝

JDK下載 安裝kettle之前需要安裝JDK JDK下載鏈接:JDK下載 配置環境變量: 新建系統變量:變量值為JDK安裝路徑 Path新增: kettle下載 鏈接地址:PDI(kettle) 點擊下載 同意 Click here to a…

【XIAO ESP32S3 sense 通過 ESPHome 與 Home Assistant 連接】

XIAO ESP32S3 sense 通過 ESPHome 與 Home Assistant 連接 1. 什么是 ESPHome 和 Home Assistant?2. 軟件準備3. 開始4. 將 Grove 模塊與 ESPHome 和 Home Assistant 連接5. Grove 連接和數據傳輸6. Grove -智能空氣質量傳感器 (SGP41)7. OV2…

Filter(過濾器)

文章目錄 過濾器的編寫&#xff1a;過濾器 APIFilterFilterConfigFilterChain 生命周期過濾器核心方法的細節多個過濾器執行順序<br /> 過濾器——Filter&#xff0c;它是JavaWeb三大組件之一。另外兩個是Servlet和Listener。 它是在2000年發布的Servlet2.3規范中加入的一…

Go語言基礎基礎

簡介 Go語言&#xff08;也稱為Golang&#xff09;是一種靜態類型、編譯型語言&#xff0c;由Google的Robert Griesemer、Rob Pike和Ken Thompson于2007年設計&#xff0c;首次公開發布于2009年。Go的設計初衷是解決當時谷歌內部面臨的軟件開發問題&#xff0c;特別是在處理大…

百度文庫旋轉驗證碼識別

最近研究了一下圖像識別&#xff0c;一直找到很好的應用場景&#xff0c;今天我就發現可以用百度的旋轉驗證碼來做一個實驗。沒想到效果還挺好&#xff0c;下面就是實際的識別效果。 1、效果演示 2、如何識別 2.1準備數據集 首先需要使用爬蟲&#xff0c;對驗證碼圖片進行采…

區塊鏈媒體發布推廣10個熱門案例解析-華媒舍

區塊鏈技術的發展已經引起了媒體的廣泛關注&#xff0c;越來越多的區塊鏈媒體紛紛發布推廣相關的熱門案例。本文將介紹10個成功的區塊鏈媒體推廣案例&#xff0c;并分享它們的成功秘訣&#xff0c;幫助讀者更好地了解區塊鏈媒體推廣的方法與技巧。 隨著區塊鏈技術的成熟和應用場…

第二證券:富時羅素擴容 A股引入國際增量資金

日前&#xff0c;英國富時羅素指數公司&#xff08;FTSE Russell&#xff0c;簡稱“富時羅素”&#xff09;公布的全球股票指數&#xff08;FTSE Global Equity Index Series&#xff09;半年度指數檢查陳述顯現&#xff0c;將新調入A股76只、調出1只。此前&#xff0c;富時羅素…

Leetcode 3049. Earliest Second to Mark Indices II

Leetcode 3049. Earliest Second to Mark Indices II 1. 解題思路2. 代碼實現3. 算法優化 題目鏈接&#xff1a;3049. Earliest Second to Mark Indices II 1. 解題思路 這道題我看貌似難度報表&#xff0c;比賽的時候貌似只有36個人搞定了這道題目&#xff0c;然后最快的人…

【LeetCode】升級打怪之路 Day 12:單調隊列

今日題目&#xff1a; 239. 滑動窗口最大值 | LeetCode 今天學習了單調隊列這種特殊的數據結構&#xff0c;思路很新穎&#xff0c;值得學習。 Problem&#xff1a;單調隊列 【必會】 與單調棧類似&#xff0c;單調隊列也是一種特殊的數據結構&#xff0c;它相比與普通的 que…

Get Your Back Covered! Coverage, CodeCov和Tox

1. Coverage - 衡量測試的覆蓋率 我們已經掌握了如何進行單元測試。接下來,一個很自然的問題浮現出來,我們如何知道單元測試的質量呢?這就提出了測試覆蓋率的概念。覆蓋率測量通常用于衡量測試的有效性。它可以顯示您的代碼的哪些部分已被測試過,哪些沒有。 coverage.py …

Arm平臺下各種memcpy優化對比<二>

因memcpy導致tda4vm上的h264解碼占CPU較高而改棄&#xff0c;從網上找到各種memcpy的優化代碼&#xff0c;在一起做了個運行速度對比&#xff0c;請查收&#xff1b; #include <stdio.h> #include <stdlib.h> /* rand, srand */ #include <string.h> #i…

智慧公廁:打造智慧城市的環衛明珠

在城市建設中&#xff0c;公共衛生設施的完善和智能化一直是重要環節。而智慧公廁作為智慧城市建設的重要組成部分&#xff0c;發揮著不可替代的作用。本文以智慧公廁源頭實力廠家廣州中期科技有限公司&#xff0c;大量精品案例現場實景實圖&#xff0c;解讀智慧公廁如何助力打…

【數據結構】B樹

1 B樹介紹 B樹&#xff08;英語&#xff1a;B-tree&#xff09;&#xff0c;是一種在計算機科學自平衡的樹&#xff0c;能夠保持數據有序。這種數據結構能夠讓查找數據、順序訪問、插入數據及刪除的動作&#xff0c;都在對數時間內完成。B樹&#xff0c;概括來說是一個一般化的…

MySQL高可用性攻略:快速搭建MySQL主從復制集群 !

MySQL高可用性攻略&#xff1a;快速搭建MySQL主從復制集群 &#xff01; MySQL基礎知識&#xff1a;介紹MySQL數據庫的基本概念和常用命令&#xff0c;如何創建數據庫、表、用戶和權限管理等。 MySQL安裝教程&#xff1a;Centos7 安裝MySQL5.7.29詳細安裝手冊 MySQL數據類型&…

【大廠AI課學習筆記NO.63】模型的維護

說是模型的維護&#xff0c;其實這堂課都是在講“在工業環境中開發和部署機器學習模型的流程”。 上圖來自于我的筆記思維腦圖&#xff0c;已經上傳&#xff0c;要鏈接的訪問的主頁查看資源。 一路走來&#xff0c;我們學習了數據管理、模型學習、模型驗證、模型部署等重要的步…

arm板運行程序時尋找動態庫的路徑設置

問題&#xff1a;error while loading shared libraries: libQt5Widgets.so.5: cannot open shared object file&#xff1f; 第一種方法---- 解決&#xff1a; ①復制需要用到的arm庫到板子上。 ②pwd指令獲取該庫的絕對路徑&#xff0c;把路徑復制到/etc/ld.so.conf文件 ③輸…

Leetcoder Day37| 動態規劃part04 背包問題

01背包理論基礎 面試掌握01背包&#xff0c;完全背包和重背包就夠用了。 背包問題的理論基礎重中之重是01背包&#xff0c;一定要理解透&#xff01; 01 背包 有n件物品和一個最多能背重量為w 的背包。第i件物品的重量是weight[i]&#xff0c;得到的價值是value[i] 。每件物品…

隱式馬爾科夫算法

隱式馬爾科夫算法 隱式馬爾科夫算法概述算法使用HMM 模型參數設置HMM 模型分類1. Gaussian HMM2. Multinomial HMM3. GMM HMM 其他機器學習算法&#xff1a;機器學習實戰工具安裝和使用 隱式馬爾科夫算法概述 隱式馬爾科夫算法是一種用于處理時序數據的強大工具&#xff0c;其…

css通過calc動態計算寬度

max-width: calc(100% - 40px) .m-mj-status-drawing-info-data{ display: inline-block; margin: 10px; min-width: 200px; padding: 10px;border-radius: 10px; background: #ddd;max-width: calc(100% - 40px);word-wrap: break-word;white-space: pre-line;}我開發的chatg…