网络同步—帧同步和状态同步解析

概述

同步就是要多个客户端表现效果是一致的,而且对于大多数的游戏,不仅仅要表现一致,还要客户端和服务器的数据也是一致的。所以同步是个网络游戏概念,只有网络游戏才需要同步,而单机游戏是不需要同步的。

帧同步和状态同步是在网络游戏和多人在线应用中常见的两种同步方法,它们用于确保所有参与者看到的游戏状态一致。

帧同步概念

帧同步是一种同步方式,其中每个客户端都在相同的逻辑帧上执行相同的操作。在这种方式下,游戏状态的更新在固定时间间隔(例如,每秒30帧)内进行。客户端只需发送用户输入,而无需发送整个游戏状态。服务器会将所有客户端的输入收集在一起,并在每个逻辑帧上广播给所有客户端。客户端在收到其他客户端的输入后,根据这些输入更新游戏状态。
在这里插入图片描述

适用场景:帧同步适合对实时性要求较高、用户交互较为频繁的游戏,如实时策略游戏、格斗游戏等。

状态同步概念

同步的是游戏中的各种状态,是指的将其他玩家的状态行为同步的方式,一般情况下AI逻辑,技能逻辑,战斗计算都由服务器运算,只是将运算的结果同步给客户端,客户端只需要接受服务器传过来的状态变化,然后更新自己本地的动作状态、Buff状态,位置等就可以了
在这里插入图片描述

(但是为了给玩家好的体验,减少同步的数据量,客户端也会做很多的本地运算,减少服务器同步的频率以及数据量。)

这里客户端相当于服务器的播放器一样,因为核心的判断都是在服务器的,一切的表现和属性都以服务器为准,就算客户端的血条是满的,服务器的血条是0,那依旧要死。

适用场景:状态同步适合对实时性要求较低、状态变化较少的游戏,如回合制策略游戏、棋类游戏等。

实例:一个角色要释放一个技能(非指向技能),
客户端告诉服务器我要释放一个技能
服务器通知所有客户端在某个地方以什么方向释放技能
客户端根据收到的信息创建一个特效放在这个地方,然后以某个方向飞行
服务器根据碰撞检测判断到某个时刻碰到了地方英雄,通知客户端
客户端根据服务器发来的信息删除特效,被打到的人减少血量播放收击特效

对比

选择帧同步还是状态同步取决于以下因素:

  • 实时性要求:帧同步更适合实时性要求高的游戏,状态同步适用于实时性要求较低的游戏。
  • 网络带宽和延迟:帧同步对延迟和网络的带宽要求较高,而状态同步对延迟和网络的带宽要求相对较低。
  • 游戏类型和交互复杂性:帧同步更适合用户交互频繁的游戏,状态同步适用于状态变化较少的游戏。
  • 容错性:帧同步对客户端和服务器之间的同步精度要求较高,容错性较低。状态同步在一定程度上可以容忍不同客户端之间的状态差异。

帧同步只需要接受输入和输出,在客户端上进行逻辑运算,因此传播流量小,速度快,实时性高。状态同步则需要将玩家的状态各种信息也要传输,因而流量大,速度慢。

状态同步帧同步
流量相对高相对低
回放记录文件大记录文件小
安全性服务器实现逻辑,安全性高逻辑再客户端计算,反外挂压力大,无法避免开图挂
服务器压力
战斗校验协议加密,内存混淆,误差校验,无法彻底解决服务器可以重启跑一遍战斗
网络卡顿的表现瞬移,回位,莫名掉血战斗卡顿
实现调优状态同步方式,客户端需要做插值处理客户端按照单机方式开发,保证逻辑层和表现层分离。逻辑层不要用到浮点数,不要用不确定顺序的逻辑结构
开发效率同一个功能至少需要一个客户端和服务器共同完成,开发困难,但仍然占据主流服务器开发难度低,只负责转发,开发效率高
断线重连状态同步很简单,重新把整个场景中的任务全部重新生成一边,各种数值根据服务端提供的信息加到任务身上即可。帧同步的断线重连时比较麻烦的,当你在10分钟的时候断线了,在15分钟回来,就需要把服务器这15分钟的消息一次性的发送给客户端,然后客户端加速整个游戏的核心逻辑运算,直到追上现有进度。

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

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

相关文章

在vscode中使用正则表达式删除python的注释

出于一些原因,需要删除所有的注释 vscode中用全文搜索替换的功能 点击红色按钮即可使用正则表达式。 1. 多行注释 [|"][|"][|"](.*\n)*?.*[|"][|"][|"] 里面主要需要注意的就是不要使用贪婪匹配,也就是 *? 的?这里…

并查集,真好用,一次AC不是梦!

文章目录 🚀前言🚀并查集🚀并查集的两个优化✈️路径压缩✈️按秩合并 🚀并查集代码模板 🚀前言 大家好啊!今天阿辉来给大家介绍一种简洁而优雅的数据结构——并查集,不知道各位是否了解它&…

Paper Digest | 突破个性化推荐数据稀疏性:长尾增强的图对比学习算法研究

00 导读 本文将介绍的论文 Long-tail Augmented Graph Contrastive Learning for Recommendation 已被 ECML/PKDD 2023 Research Track 接收。 论文链接:https://arxiv.org/abs/2309.11177 论文中提到的模型实现,已经完全复现到 OpenAGL 里了&#xff…

186205-33-4,Cyanine2活化酯,可标记各种纳米材料和生物样品

186205-33-4,Cyanine2 NHS Ester,Cy2 NHS,Cy2活化酯,Cyanine2活化酯,可标记各种纳米材料和生物样品 您好,欢迎来到新研之家 文章关键词:186205-33-4,Cyanine2 NHS Ester&#xff0…

基于 Reactive Mode 的 Flink 自动扩容

翻译自 Apache Flink: Scaling Flink automatically with Reactive Mode 简介 流式作业长时间运行过程中常常会经历不同流量负载的情况。流量负载会出现周期性的变化,如:白天与晚上、周末与工作日、节假日与非节假日,这些波动可能是突发事件…

消息队列(Message Queue)

目录 一、概念 二、消息队列使用场景 1.应用解耦:将应用进行解耦 具体场景:用户下单后,订单系统需要通知库存系统 2.异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理&…

当excel中表格打印预览右边超出限定页面时,调整列宽

解决办法:调整整体列或者部分列的列宽 操作流程如下: 第一步:选中需要调整的列 ①将鼠标放在表格的列上,等出现向下粗箭头后——>②单击(变成粗十字)该列——>③拖动选中列 第二步:调…

无人机技术,无人机动力系统知识,电机、电调、桨叶技术详解

无人机动力系统中的电机、电调和桨叶技术都是非常重要的部分,以下是对这些技术的详解: 无人机电机 在无人机动力系统中,电机是将电能转化为机械能的关键部件。其主要作用是产生旋转力矩,驱动螺旋桨的旋转,从而实现无…

【python全栈式开发】面向对象

这里写自定义目录标题 一、学习内容概述(一)函数式和面向对象的区别1、函数式2、面向对象 (二)网络编程(三)并发编程 二、面向对象(一)初识面向对象1、对象和self2、应用示例&#x…

【ARMv8M Cortex-M33 系列 8 -- RT-Thread 堆内存 检查命令 free 实现及介绍】

文章目录 RT-Thread 堆内存 检查命令 free 实现及介绍rt_memory_info 函数验证 RT-Thread 堆内存 检查命令 free 实现及介绍 在RT-Thread系统中,通常可以通过rt_memory_info函数获取当前的堆内存使用信息,然后你可以包装这个函数来显示剩余的堆空间。rt…

Python学习(16)|列表_遍历_排序_max_min_sum

列表的遍历: a [10,20,30,40] for obj in a: #obj 是临时变量名称,随意起名print(obj) 执行结果: 复制列表所有的元素到新列表对象: list1 [30,40,50] list2 list1 #只是将list2也指向了列表对象。也就是说list…

Android开机不显示bootloader界面

Turn it off in the following way LINUX\android\bootable\bootloader\edk2\QcomModulePkg\Library\BootLib\MenuKeysDetection.c 试了没有生效 --- a/QcomModulePkg/Library/BootLib/MenuKeysDetection.cb/QcomModulePkg/Library/BootLib/MenuKeysDetection.c-364,7 364,8…

安防监控平台EasyCVR升级之后添加通道进行播放,提示“请确认播放协议配置选项”是什么原因?

智慧安防平台EasyCVR能在复杂的网络环境中(专网、局域网、广域网、VPN、公网等)将前端海量的设备进行统一集中接入与视频汇聚管理,平台可支持的接入协议包括:国标GB28181、RTSP/Onvif、RTMP,以及厂家的私有协议与SDK&a…

远程桌面管理服务器软件是什么?

远程桌面管理服务器软件是一种可以实现远程访问、管理和控制服务器的工具。通过远程桌面管理服务器软件,用户可以在本地电脑上通过网络连接到远程服务器,实现对服务器的远程操作、文件传输、软件安装等功能。这种软件在信息技术领域有着广泛的应用&#…

⭐北邮复试刷题LCR 034. 验证外星语词典__哈希思想 (力扣119经典题变种挑战)

LCR 034. 验证外星语词典 某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。 给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外…

Linux CentOS系统安装SQL Server并结合内网穿透实现公网访问本地数据

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《C》 《Linux》 《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…

贪心算法练习day2

删除字符 1.题目及要求 2.解题思路 1)初始化最小字母为‘Z’,确保任何字母都能与之比较 2)遍历单词,找到当前未删除字母中的最小字母 3)获取当前位置的字母 current word.charAt(i); 4)删…

【动态规划】【组合数学】1866. 恰有 K 根木棍可以看到的排列数目

作者推荐 【深度优先搜索】【树】【有向图】【推荐】685. 冗余连接 II 本文涉及知识点 动态规划汇总 LeetCode1866. 恰有 K 根木棍可以看到的排列数目 有 n 根长度互不相同的木棍,长度为从 1 到 n 的整数。请你将这些木棍排成一排,并满足从左侧 可以…

并发编程-JUC-原子类

JUC 整体概览 原子类 基本类型-使用原子的方式更新基本类型 AtomicInteger:整形原子类AtomicLong:长整型原子类AtomicBoolean :布尔型原子类 引用类型 AtomicReference:引用类型原子类AtomicStampedReference:原子更新…

yolov5的Mosaic原理解析

众所周知,yolov5中使用了mosaic增强进行数据增强,效果就是将4张图片拼凑为1张图片。为了更好优化自定义任务,特对mosaic原理进行解析。 1、mosaic原理解析 mosaic增强的原理一张图就可以解释: 1.1 图的注释 首先高亮区域&am…