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

news2024/11/16 15:39:30

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

同步机制是用来维护游戏的一致性,通俗的说就是虚拟世界中的事实;比如在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.coloradmin.cn/o/420020.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

50 Projects 50 Days - Rotating Navigation Animation 学习记录

项目地址 Rotating Navigation Animation 展示效果 Rotating Navigation Animation 实现思路 结构主要分为两部分,绕左上角旋转的部分:包括按钮圆盘和内容区,以及左下角移出的导航栏部分。 整个界面只在左上角圆盘的按钮点击时发生改变…

Sarsa VS Q-Learning

前言 1.如何计算价值函数? 为了使模型训练的最好,学习到更多有用的知识即完成任务的最好策略。对策略好坏的评价标准自然是得到最多最好的奖励,那么如何找到最好的最好的奖励,即如何得到最好的价值函数? 首先对于在状…

Leetcode.2280 表示一个折线图的最少线段数

题目链接 Leetcode.2280 表示一个折线图的最少线段数 Rating : 1681 题目描述 给你一个二维整数数组 stockPrices,其中 stockPrices[i] [dayi, pricei]表示股票在 dayi的价格为 pricei 。折线图 是一个二维平面上的若干个点组成的图,横坐标…

ROS学习——艰辛的环境安装之路一Ubuntu

文章目录Ubuntu安装和下载页面设置安装Vmware Tools安装VSCODE用几个常用命令简单熟悉下UbuntuUbuntu 安装和下载 Ubuntu的安装和下载 看这个链接 Ubuntu安装和下载1 或者这个链接 Ubuntu安装和下载2 页面设置 安装Vmware Tools 看这个链接 VMware Tools的介绍和安装 安装…

算法训练第五十五天 | 392.判断子序列、115.不同的子序列

动态规划part15392.判断子序列题目描述思路总结115.不同的子序列题目描述思路392.判断子序列 题目链接:392.判断子序列 参考:https://programmercarl.com/0392.%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97.html 题目描述 给定字符串 s 和 t &…

RabbitMQ 基础篇 | 黑马

目录 一、RabbitMQ简介 1、AMQP 2、基本概念 3、工作模式 4、JMS 5、小结 二、快速入门 简单模式 生产者 消费者 三、工作模式 1、Work queues 工作队列模式 2、Pub/Sub 订阅模式 3、Routing 路由模式 4、Topics 通配符模式 四、SpringBoot整合RabbitMQ 1、生产…

ESP32设备驱动-BME680环境传感器驱动

BME680环境传感器驱动 文章目录 BME680环境传感器驱动1、BME680介绍2、硬件准备3、软件准备4、驱动实现1、BME680介绍 BME680 是一款集成环境传感器,专为尺寸和低功耗是关键要求的移动应用和可穿戴设备而开发。 BME680 扩展了 Bosch Sensortec 现有的环境传感器系列,首次集成…

电影《龙马精神》观后感

上周看了龙叔的电影《龙马精神》,整体故事围绕着一匹马而展开的,因为这匹马,饰演罗师傅的龙叔,被小混混催债,因为这匹马,罗师傅才有机会和女儿接触,因为这匹马,才有机会看见女婿。 看…

数据结构-排序

本节目标: 1.排序的概念及其运用 2.常见排序算法的实现 3.排序算法复杂度及稳定性分析 1.排序的概念及其应用 1.1排序的概念 排序就是按照某个我们设定的关键字,或者关键词,递增或者递减,完成这样的操作就是排序。 1.2排…

打开组策略提示:无法为文件xxx找到适当的资源文件,错误=2的解决方法

最近把自己的电脑升级成win11了,出现了一些bug,不见得是win11系统的问题,也可能是某个过程出现了问题,出现了问题咱就解决,参考了几个文档和视频,最终解决了,记录一下。 打开本地策略出现问题如…

7.Java中的String类、常用类及包装类

Java中的String类、常用类及包装类 一、String类 1、String类定义 String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为…

2023爱分析·中国城市轨交智能运维市场厂商评估报告:逸迅科技

报告编委 张扬 爱分析联合创始人&首席分析师 王鹏 爱分析分析师 目录 1. 研究背景 2. 市场综述 3. 市场分析 4. 厂商评估:逸迅科技 5. 最佳实践案例 1. 研究背景 轨道交通是我国国民经济的命脉和交通运输的骨干网络,不仅承担了绝大…

RocketMQ 消息发送源码解读

可靠同步发送、可靠异步发送、单向发送、批量消息发送。 RocketMQ 消息发送需要考虑以下3个问题。 1)消息队列如何进行负载? 2)消息发送如何实现高可用? 3)批量消息发送如何实现一致性? org.apache.rocketm…

基于SpringBoot+微信小程序的失物招领小程序

基于SpringBoot微信小程序的失物招领小程序 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目…

通达信欧奈尔RPS指标公式编写和设置方法(完全版)

通达信欧奈尔RPS指标公式的编写和设置较为复杂,对于初学者来说可能具有一定挑战性。在编写口袋支点公式时,需要使用RPS指标公式作为基础条件,因此有必要先了解其编写和设置方法。 一、上市一年以上选股 首先选出上市一年以上的股票&#xff…

python实现折线图和条形图

画图的部分函数 pandas 读取数据 相关包:import pandas as pd 函数:dfpd.read_excel(“文件名”) #读取excel文件 df.head(n)#查看前n行 df.tail(n)#查看后n行 df.shape #查看行数和列数 df.columns # 查看列索引 df.index #查看行索引 df.info() #查看…

怎样恢复删除的视频?视频恢复,4个方法!

案例:怎样恢复删除的视频 【谁懂啊!电脑里视频太多了太占内存,本想删除一些不太重要的,但却删错了!有朋友知道怎样恢复删除的视频吗?】 在数字化时代,我们经常使用电脑来存储和管理各种视频文…

股票量比实时筛选报警

一.什么是股票的量比 量比是短线投资一个参考指标,是衡量相对成交量的一个数值和指标,用于反映股票交易相对于以往的活跃程度;是指在股市开盘以后,平均每一分钟的成交量与过去五个交易日平均每分钟交易量的比。反映股票相对最近5…

自动驾驶定位模块的作用是什么?为什么会有多种坐标系?

无人车,要实现自动驾驶,首先要知道自己的的位置。更准确的说法是:相对某个坐标系,确定车辆的位置和姿态。 这个坐标系可以是局部的: 也可以是全局坐标系: 这是更大维度上的坐标系。 坐标系确定之后,相对坐标原点和坐标轴,车上坐标系(本地坐标系),平移得到位置(x…

SQL语句要点一文速览

以下内容参考《SQL必知必会(第4版)》 了解 SQL 数据库(database):保存有组织的数据的容器(通常是一个文件或一组文件)。最简单的办法是将数据库想象为一个文件柜。这个文件柜是一个存放数据的…