了解游戏中的数据同步

数据同步

在联机游戏中,我的操作和数据要同步给同一局游戏中其他所有玩家,其他玩家的操作和数据也会同步给我。这叫做数据同步,目前数据同步的方式则有帧同步状态同步

状态同步:将操作发送给服务端,服务端对操作进行运算并下发状态,客户端接收并播放状态

  • 发操作
  • 收状态

帧同步:将操作发送给服务端,服务器不进行任何运算把操作传给客户端,客户端在本地进行运算

  • 发操作
  • 收操作

适合帧同步的游戏:

  • 网络波动比较大
  • 追求即时反馈:FPS、MOBA、SPT
  • 控制大量游戏单位:RTS  

通过比较来看状态同步和帧同步

拿小编熟悉的红色警戒举例:假如我和你在联机对战,你要控制100个小兵移动到我的基地。

状态同步

  1. 客户端要将被选中的100个小兵信息和目标点发送给服务器
  2. 服务器通过计算100个小兵的移动速度和100个小兵当前位置信息定时返回给我俩的客户端
  3. 直到100个小兵到达我的基地。

由此可见(控制大量游戏单位)的这种游戏如果采用状态同步会给服务器造成多大压力

帧同步 

同样场景如果采用帧同步:

  1. 客户端将帧号(帧号表明当前游戏进行到第几副画面了)、100个小兵的信息、目标点发送给服务器。
  2. 服务器一次性返回给我俩的客户端帧号、100个小兵的信息、目标点。
  3. 我俩各自的客户端通过同步帧号进行本地运算处理小兵当前的位置信息,直到他们达到目标点。

帧同步实现需要的条件

一套完整的帧同步游戏框架要实现什么?

  1. 可靠的UDP:实现 时序性 、 重传机制 、 应答机制 、 消除最小延迟
  2. 确定性的数学和物理运算库:浮点数在电脑运算存在不精确性  ——  如何解决:取整计算、容许小概率误差、逻辑表现分离
  3. 断线重连:大家玩王者如果卡了或者断线,恢复之后大家会看到像用倍速看电影那样的画面,这是通过追帧的方式重连游戏
  4. 比赛回放:服务器记录关键帧;下发客户端进行重放
  5. 反作弊:重演、仲裁;一局游戏有五个人,那他们提交到服务器的操作记录是相同的,如果有人记录不相同说明存在作弊现象
  6. 避免等待

两者相比较

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/425831.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot-基础-eclipse打包jar包和war包的方法与排错

目录 打jar包打war包排错获取包外位置eclipse找不到*.jar 打jar包 修改 application-dev.yml spring.thymeleaf.prefixfile:./templates/ (非必须!如果遇到找不到模板的情况这样做)把templates文件夹复制到jar文件同级的目录。 但是无法解…

Linux 基础IO(1)内存文件

文章目录 铺垫文件的系统调用接口文件描述符缓冲区 铺垫 文件文件内容 文件属性访问文件之前,都要先打开文件,而要访问,修改,编辑文件,文件就必须加载到内存中程序运行起来变成进程,被CPU调度,…

基于YOLOv的目标追踪与无人机前端查看系统开发

一、背景与简介 随着无人机技术的快速发展,目标追踪成为无人机应用中的重要功能之一。YOLOv作为一种高效的目标检测算法,同样适用于目标追踪任务。通过集成YOLOv模型,我们可以构建一个无人机前端查看系统,实现实时目标追踪和可视化…

构建高效的接口自动化测试框架思路

在选择接口测试自动化框架时,需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说,使用Python相关的测试框架更为便捷。无论选择哪种框架,重要的是确保 框架功能完备,易于维护和扩展,提高测试效率和准确性。今…

循序渐进,搞懂什么是回溯算法

循序渐进,搞懂什么是回溯算法 回溯算法简介 回溯算法(backtracking algorithm)实际上是一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回&#…

【高数】常数项级数概念与性质

下面为个人数学笔记,有需要借鉴即可。 一、常数项级数概念 二、常数项级数性质 三、调和级数 完。

文件底层的深入理解之文件输入输出重定向

目录 一、文件fd的分配规则 二、对输出重定向现象的理解 三、输出输入重定向的简单实现 1、输出重定向 2、输入重定向 一、文件fd的分配规则 最小的没有被使用的数组下标,会被分配给最新打开的文件。 二、对输出重定向现象的理解 正如上面这段代码所示&#xff0…

IO多路复用:提高网络应用性能的利器

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

WEB APIs (5)

window对象 BOM(浏览器对象模型) 其为js操作浏览器提供了方法 window对象是一个全局变量,是BOM树根节点 BOM的属性和方法都是window的,如document、console.log()等 var定义在全局全局作用域中的变量、函数都会变成window对象…

138.乐理基础-等音、等音程的意义

上一个内容:137.乐理基础-协和音程、不协和音程 上一个内容里练习的答案: 等音、等音程的意义,首先在 19.音阶 里写了,一个调使用的音阶应当是从主音快开始,以阶梯状的形式进行到主音结束,这样才能明显从乐…

VMware Workstation Pro 17 虚拟机软件安装教程

VMware软件介绍 VMware Workstation是一款功能强大的桌面虚拟计算机软件,提供用户可在宿主机操作系统上同时运行不同的操作系统(虚拟化技术),所运行的操作系统可方便的进行复制和移动,突破传统架构的限制。本文将以VMware Workstation Pro 1…

tomcat 反向代理 自建博客 修改状态页 等

一 自建博客 随后&#xff0c;拷贝到webapps下面 并且做软连接 随后重定向 并且下载 cat >/etc/yum.repos.d/mysql.repo <<EOF [mysql57-community] nameMySQL 5.7 Community Server baseurlhttp://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/ enabled1 g…

excel中如何使用VLOOKUP和EXACT函数实现区分大小写匹配数据

在 Excel 中&#xff0c;VLOOKUP 函数默认情况下是不区分大小写的&#xff1a; 比如下面的案例&#xff0c;直接使用VLOOKUP函数搜索&#xff0c;只会搜索匹配到不区分大小写的第一个 如果我们想要实现区分大小写的精确匹配&#xff0c;可以使用 EXACT 函数结合 VLOOKUP 函数 …

openGauss学习笔记-234 openGauss性能调优-系统调优-资源负载管理-资源管理准备-设置控制组

文章目录 openGauss学习笔记-234 openGauss性能调优-系统调优-资源负载管理-资源管理准备-设置控制组234.1 背景信息234.2 前提条件234.3 操作步骤234.3.1 创建子Class控制组和Workload控制组234.3.2 更新控制组的资源配额234.3.3 删除控制组 234.4 查看控制组的信息 openGauss…

QT Mingw32/64编译ffmpeg源码生成32/64bit库以及测试

文章目录 前言下载msys2ysamFFmpeg 搭建编译环境安装msys2安装QT Mingw编译器到msys环境中安装ysam测试 编译FFmpeg测试 前言 FFmpeg不像VLC有支持QT的库文件&#xff0c;它仅提供源码&#xff0c;需要使用者自行编译成对应的库&#xff0c;当使用QTFFmpeg实现播放视频以及视频…

知识图谱1——neo4j

2024年要搞知识图谱&#xff0c;因此没有办法&#xff0c;只能将我之前固守的JDK1.8&#xff0c;升级到JDK21&#xff0c;因为JDK21也是LTS版本&#xff0c;neo4j高版本就不支持JDK8&#xff0c;因此没有办法&#xff0c;只有升级了。写这篇只是一个搭建笔记&#xff0c;我的初…

随机生成验证码

随机生成验证码 需求&#xff1a;随机生成一个任意位的验证码包含数字、大写字母和小写字母 1.代码实现 package com.ham;import java.util.Random;public class case2 {public static void main(String[] args) {System.out.println(code(4));}public static String code(i…

深入了解Java虚拟机(JVM)

Java虚拟机&#xff08;JVM&#xff09;是Java程序运行的核心组件&#xff0c;它负责解释执行Java字节码&#xff0c;并在各种平台上执行。JVM的设计使得Java具有跨平台性&#xff0c;开发人员只需编写一次代码&#xff0c;就可以在任何支持Java的系统上运行。我们刚开始学习Ja…

考研数学——高数:微分方程

一、一阶线性微分方程 两种形式&#xff1a; 非齐次&#xff1a; 齐次&#xff1a; 推导过程 推导公式的过程一般由特殊到一般&#xff1a;所以先求解齐次方程的解 &#xff08;然后对等式两边同时积分&#xff09; 再来求非齐次方程的解&#xff0c;由…

小程序图形:echarts-weixin 入门使用

去官网下载整个项目&#xff1a; https://github.com/ecomfe/echarts-for-weixin 拷贝ec-canvs文件夹到小程序里面 index.js里面的写法 import * as echarts from "../../components/ec-canvas/echarts" const app getApp(); function initChart(canvas, width, h…