游戏解密之常见网络游戏同步方式分析

一、为什么需要有同步呢?

同步机制是用来维护游戏的一致性,通俗的说就是虚拟世界中的事实;比如在CF中,大家的PING都很高,A和B两个玩家同时发现了对方,并向对方开火,如果没有很好的同步机制,那么A玩家的显示B还没有开枪就被击中,而B的屏幕上显示玩家A还没有开枪就被杀死,这就出现了不一致的问题,那么这个游戏就没法正常玩了。

延迟是造成不一致问题的主要原因。如果延迟都为0,那么也就不存在不一致的问题了,就像在真实世界中一样。而同步机制除了基本的通信作用外,最重要的任务就是解决不一致问题。为了保证游戏的一致性,根据游戏类型、技术条件的不同,选择的同步方式也会不同。

二、同步方式的基本思路

其实最容易实现同步的游戏应该就是回合制游戏了;同步机制还是采用了回合的思想,像目前的即时游戏,其实也是由许多时间跨度非常短的回合(turn)组成的,由于人眼的记忆时间是0.1秒,在回合跨度小于这个时间的游戏里,玩家是感受不到有回合的感觉的。
在这里插入图片描述
图中是A、B、C三个玩家的时间轴,虚线划分出来的是每一个turn的时间片(一个回合),假如说A、B、C这三个玩家是敌对的,在某一个turn,A发出了攻击B的指令、B发出了攻击C的指令,C发出了攻击B的指令;那么在这个turn结束后开始计算(由于turn的时间跨度很小,玩家难以觉察出延迟),游戏里的表现就是:在同一时间角色A攻击了B,角色B和角色C相互发生了攻击。
常见游戏网络同步方式
C/S同步方式:
在这里插入图片描述
(C是客户端,GSS是服务端)

优点:服务器实现整套游戏逻辑,安全性高。计算都是在服务器上,客户端的逻辑运算压力低;客户端可以进行预处理一些内容,客户端本地的即时性相对较高。

缺点:服务器和客户端需要进行所有的数据交互和同步,导致网络流量大;服务器的计算压力大,承载的能力受到限制;由于需要通过服务器中转,导致不同客户端之间的即时性较差;由于C/S 架构数据是以服务器为准,那么本地可能会和服务器的不同,导致玩家看到的和最终结算的结果不同。

适用的游戏:大型的MMORPG网游等不需要对操作响应要求极高的游戏,同屏内没有大量的需要快速响应的单位的游戏;需要服务器强校验的游戏。

帧 同步方式:
在这里插入图片描述
(FrameServer 用来同步的服务器,ArenaServer是在客户端的表现以及计算逻辑)

优点:服务器仅作转发逻辑,承载压力低;客户端与服务器仅需要传递同步的数据,网络流量少;所有的计算逻辑都在客户端,服务端和客户端的开发关联度低,便于开发。

缺点:相对与C/S结构来说,帧同步的逻辑都在客户端,安全性理论上会较弱,但是可以通过对比各个客户端每帧的checksum检查某个客户端是否存在不同,然后做出是否作弊的判定。针对多人帧同步游戏,通过对每帧数据的检测可以很好的保证游戏安全性,所以多人帧同步游戏一般安全性会很好。

适用的游戏:需要对操作响应要求较高的游戏,且同屏之内有大量需要快速响应的单位类似dota2,星际等。同时玩一局游戏的人不多。

P2P同步方式:
在这里插入图片描述
(C是客户端,GSS是服务端)

优点:服务器仅作转发逻辑,承载压力低;客户端与服务器仅需要传递同步的数据,网络流量少;所有的计算逻辑都在客户端,服务端和客户端的开发关联度低,便于开发,客户端之间的延迟低。

缺点:逻辑都在客户端,导致容易被攻击;不容易做安全性校验;且只能适合少量的类似局域网的用户。

适用的游戏:需要对操作响应要求极高的游戏,类似QQ飞车,FPS类游戏等;同时玩一把游戏的人不多,理论上来说不适合用来做网络游戏的方案,因为容易被外挂攻击。

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

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

相关文章

【学习笔记】滑动窗口

acwing.滑动窗口https://www.acwing.com/problem/content/156/ 给定一个大小为 n≤106≤106 的数组。 有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子: …

【博学谷学习记录】超强总结,用心分享 | 架构师 MySql扩容学习总结

文章目录1. 停机方案2.停写方案3.日志方案4.双写方案(中小型数据)5.平滑2N方案(大数据量)1. 停机方案 发布公告 为了进行数据的重新拆分,在停止服务之前,我们需要提前通知用户,比如&#xff1a…

他98年的,我真的玩不过他...

现在的小年轻真的卷得过分了。前段时间我们公司来了个98年的,工作没两年,跳槽到我们公司起薪18K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。 最近和他聊了一次天,原来这位小老弟家里条…

MySQL 分布式数据库实现:无需修改代码,轻松实现分布式能力

这个项目做什么 ShardingSphere-Proxy,可以让用户像使用原生数据库一样使用 Apache ShardingSphere。 了解一项技术的开始,一般从官网开始。先来看一看官网对 ShardingSphere-Proxy 的定义是什么样的: 定位为透明化的数据库代理端&#xff…

springboot学习2

一、spring boot自动装配原理 pom.xml spring-boot-dependencies 核心依赖在父工程中 在写或者引入一些spring boot依赖的时候&#xff0c;不需要指定版本&#xff0c;因为有这些版本仓库启动器 <dependency><groupId>org.springframework.boot</groupId>&…

会画画的海龟,Python Turtle库详解(27)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 欢迎和猫妹一起&#xff0c;趣味学Python。 今日主题 介绍下Python的turtle库&#xff0c;这是一个可以画画的库&#xff0c;非常适合小孩子在屏幕上画画。 先学习基础知…

第08章_面向对象编程(高级)

第08章_面向对象编程(高级) 讲师&#xff1a;尚硅谷-宋红康&#xff08;江湖人称&#xff1a;康师傅&#xff09; 官网&#xff1a;http://www.atguigu.com 本章专题与脉络 1. 关键字&#xff1a;static 回顾类中的实例变量&#xff08;即非static的成员变量&#xff09; c…

虚拟化技术:实现资源高效利用和灵活管理的利器

虚拟化技术是一种通过软件或硬件手段&#xff0c;将物理资源抽象化&#xff0c;从而创建虚拟资源的技术。这种技术可以应用于计算、存储、网络等领域&#xff0c;通过将物理资源划分为多个虚拟资源&#xff0c;使得多个应用程序或用户可以共享同一组物理资源&#xff0c;从而提…

Linux 进程管理之四大名捕

一、四大名捕 四大名捕&#xff0c;最初出现于温瑞安创作的武侠小说&#xff0c;是朝廷中正义力量诸葛小花的四大徒弟&#xff0c;四人各怀绝技&#xff0c;分别是轻功暗器高手 “无情”、内功卓越的高手“铁手”、腿功惊人的“追命” 和剑法一流的“冷血”。 本文四大名捕由…

关于电商商品数据API接口列表,你想知道的(详情页、Sku信息、商品描述、评论问答列表)

目录 一、商品数据API接口列表 二、商品详情数据API调用代码item_get 三、获取sku详细信息item_sku 四、获得淘宝商品评论item_review 五、数据说明文档 进入 一、商品数据API接口列表 二、商品详情数据API调用代码item_get <?php// 请求示例 url 默认请求参数已经URL…

集合-LinkedList

LinkedList LinkedList的概述 LinkedList的底层使用双向链表实现。 链表是一种线性数据结构&#xff0c;其中每个元素都是一个单独的对象&#xff0c;包含一个指向列表中下一个节点的引用。 它可以用于实现各种抽象数据类型&#xff0c;例如列表、堆栈、队列等。 LinkedLis…

Carla仿真二:Carla多视图切换代码详解

文章目录前言一、Carla多视图切换效果二、Camera安装坐标系1、Carla.Location2、Carla.Rotation三、接口及代码详解1、接口介绍2、生成上帝视图代码3、生成Camera视图代码四、完整代码前言 1、Carla提供了大量的Python API接口&#xff0c;用户可以通过查找文档实现各类功能&a…

无限制翻译软件-中英互译字数无限

翻译软件是我们工作及学习中必不可少的工具&#xff0c;然而许多翻译软件在使用时常常会出现字数限制的问题,这使得用户在处理长文本和大量文本时变得十分麻烦。如果你也遇到了类似的问题&#xff0c;那么哪个翻译软件不限制字数将为您带来全新的翻译体验。 以下是我们的哪个翻…

Vite打包后直接使用浏览器打开,显示空白问题

vite打包后&#xff0c;直接用浏览器打开显示空白 1.需求&#xff1a; 安卓webview等浏览器直接打开文件显示 2.原因 &#xff08;1&#xff09;资源路径错误&#xff1a; vite.config.js 配置 base: “./” &#xff08;在webpack中则配置publicPath: "./"即可…

ATTCK v12版本战术实战研究——提权(一)

一、概述 前几期文章中&#xff0c;我们中介绍ATT&CK 14项战术中提权战术&#xff08;一&#xff09;&#xff0c;包括提权前6项子技术。那么从前文中介绍的相关提权技术来开展测试&#xff0c;进行更深一步的分析。本文主要内容是介绍攻击者在运用提权技术时&#xff0c;…

算法 贪心2 || 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

122.买卖股票的最佳时机II 如果想到其实最终利润是可以分解的&#xff0c;那么本题就很容易了&#xff01; 如何分解呢&#xff1f; 假如第0天买入&#xff0c;第3天卖出&#xff0c;那么利润为&#xff1a;prices[3] - prices[0]。 相当于(prices[3] - prices[2]) (prices[2…

【华为OD机试】1043 - 从单向链表中删除指定值的节点

文章目录一、题目&#x1f538;题目描述&#x1f538;输入输出&#x1f538;样例1&#x1f538;样例2二、代码参考作者&#xff1a;KJ.JK&#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &am…

8D和A3报告

8D和3A报告&#xff0c;他们都不仅仅是记录问题的一种文书&#xff0c;而是解决问题的工具。 A3发展于TPS &#xff08;Toyota Production system&#xff09;&#xff0c;可以用来解决问题&#xff0c;沟通&#xff0c;记录&#xff0c;是一种流程&#xff0c;当人们在使用A3…

自定义类型详解

目录 一 结构体 1.1 结构的基础知识 1.2 结构的声明 1.3 特殊的声明 1.4 结构的自引用 1.5 结构体变量的的定义和初始化 1.6 结构体内存对齐 1.7 修改默认对齐数 1.8 结构体传参 二 位段 2.1 什么是位段 2.2 位段的内存分配 2.3 位段的跨平台问题 三 枚举 3.1 枚…

JAVA本地监听与远程端口扫描的设计与开发

随着Internet的不断发展&#xff0c;信息技术已成为社会进步的巨大推动力。不管是存储于服务器里还是流通于Internet上的信息都已成为一个关系事业成败的关键&#xff0c;这就使保证信息的安全变得格外重要。本地监听与远程端口扫描程序就是在基于Internet的端口扫描的基础上&a…