为什么FPS对射的时候要来回跑--valve的多人对战同步技术

如何解决FPS/RTS/赛车类游戏的同步问题 算法简述   动作类游戏如何在高延迟下实现同步?不同的客户端网络情况,如何实现延迟补偿?十年前开始关注该问题,转眼十年已过,看到大家还在问这类问题,旧文一篇,略作补充(关于游戏同步相关问题还可以见我写于2005年的另外两篇文章,帧锁定算法 和 网游同步法则): 影子跟随算法由普通DR(dead reckoning)算法发展而来,我将其称为“影子跟随”意再表示算法同步策略的主要思想 阅读详情


https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

较早的文章了,介绍了source引擎在多人对战网络同步(尤其是用于fps游戏)中的做法,在行业内影响了很多多人对战游戏的开发。

在了解了其中的技术和概念之后,对于玩家来说,就会知道为什么fps游戏对射的时候不要静止,要来回跑,除了让对方难以瞄准外,物理技术上也是如此哦


基本概念

这个图可以说很好地表达了,客户端和服务器之间的关系。

  1. 服务器一般以一定帧数(比如30帧,也可以更高)的速度tick,然后以一定频率(一般低于tick的频率)来发snapshot给客户端
    1. 服务器常常也buffer一些指令
  2. 客户端以一定频率发送input的指令(和tick帧数保持一致),然后本地buffer一定时间(比如100ms的服务器传过来的snapshot)
这两点放在一起,就可以建立起一个逻辑基本正确的客户端服务器多人对战系统了。


延时和体验
但是逻辑基本正确的系统是远远不够的,对人对战的体验和单机打怪(我们认为这个是好的标准)之间的差异就来自延时。
这里的延时包括:对于移动以及射击会有所不同,按照程序执行的顺序
  1. 按下鼠标到网络packet发出--客户端帧数越高越好
  2. 网络延时(ping)--延时最大头
  3. 服务器上面buffering的时间--可以根据重要性进行取舍
  4. 服务器上面执行时间(帧数越高越低)
  5. 服务器执行结果下行,又是一个网络延时(ping)--延时最大头
  6. 客户端buffering时间
  7. 客户端显示时间(敌人倒地飙血等等)
input prediction(预演)
所以,按照初始的客户端服务器逻辑,一枪开出去或者一个移动操作做出来,要经过这么久才能有所反应,70ms延时,要150ms左右才能走完循环,这个体验延迟感很强,就是有问题。
所以引入一个input prediction的概念:就是不等服务器返回确认,就立刻做出表现,移动,开枪射击的弹道火花等等,然后在服务器回包的时候做一个正确性验证,不对的话就纠正。

entity interpolation(平滑插值)
然后平滑可以作为一个原则,加入到整个同步过程的方方面:
  1. entity移动,服务器发过来的是一个新的位置,那么就通过一些插值(可以是线性,可以是曲线(走一个寻路))
  2. 本地纠正,如果服务器验证和本地预演不匹配,那么一个瞬移就太糙了,可以走一个平滑的插值过去

延时和逻辑正确
延时带来的更严重的一个问题是逻辑正确性,由于时差的问题,我们本地客户端看到的东西,和服务器上面的不完全一致,然后客户端的命令走到服务器上进一步有一个延时。
如图中,我们在客户端上看到的是蓝色线条的敌人,但是一枪开出去的逻辑到了服务器上,敌人已经向左走了一段距离,这就会造成该打到的没打到。
lag compensation(延迟补偿)
处理这个方法就是,开枪这种指令到服务器上都是有时间戳的,然后服务器会把敌人会退到开枪的这个瞬间,然后做计算命中,这样逻辑就正确了。
但是这个也不是绝对准确的,只能说是一个相对准确,因为这个回退位置不可能和你本地的时间完全一致,只能说是一个近似一致的。
但是如果敌人是静止的,那就完全一致了,所以一个静止的敌人总是更容易被打中,即便技术上也是如此。

优化
这里谈的是fps游戏,实际上这个系统可以用于大量的游戏系统,比如mmo,然后体验的优化就可以包括:
  1. 预演做的更好:比如加上搓招,前摇等过程,尽可能把能预演的都做好,把“拙”藏好
  2. 降低延时:
    1. 网络路线选择的更好
    2. 让服务器和客户端tick的速度更高
    3. 可以的话减少buffering
    4. 可以的话减少移动插值的delay
死穴与逻辑冲突
在理解了工作原理之后,我们就知道有一些事情是不可避免的,比如:
  1. 你看见敌人的瞬间就躲到掩体里,但是敌人还是爆了你的头--这是有可能的,你的即时反应还没有同步到服务器上,而服务器上计算命中是一个延迟补偿的,所以本地虽然没看到,但是还是被击中了
  2. 移动的shooter比静止的shooter有优势,这里是两个原因
    1. 上面延迟补偿部分提到了,移动的人对于另外一台的机器上的人来说,和服务器上不会在像素级完全一致
    2. 另外就是有移动插值的存在,我们看动的物体总是有一定的延时,
所以fps游戏的时候,两边对射,千万别静止站着,要左右跑,物理技术上就会比站着有优势哦

Unity-Mirror网络框架-从入门到精通之LagCompensation示例 Lag Compensation又称 滞后补偿, 为什么要进行滞后补偿? 让我们来看看游戏需要延迟补偿的最常见原因。 考虑一下像《反恐精英》这样的第一人称射击游戏。 服务器上有两个玩家:您和您的朋友。 服务器将您朋友的位置同步给您。大约需要50 毫秒。 您使用镜子向您的朋友射击[Command] CmdFire(Vector3 direction)。 [Command]还需要50毫秒才能到达服务器。 然后服务器会检查您是否击中了您的朋友,并造成伤害。 阅读详情

相关推荐

游戏大厂 FPS 射击游戏高精度物理同步方案详解(大白话、生动版)

做 FPS 联机,最容易把人逼疯的,不是枪后坐力,也不是伤害公式,而是玩家一句话:“我明明躲到墙后了,怎么还死了?你以为玩家在阴阳怪气,实际上他可能说的是真话——。但服务器那边判定:你还露着半个肩膀。于是你就“被打死在墙后”。。。。这篇文章就从“大厂 FPS”的视角,用大白话把整套“高精度游戏物理同步方案”掰开揉碎讲清楚。全文偏工程落地,但尽量用比喻讲清楚“为什么这么做”,不是堆名词。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 109

[UE笔记]延迟与延迟补偿

处理延迟的常见方法(没有具体实现)

qq_39377889的博客 4454

Proxmox VE(PVE)与UPS联动配置:实现智能断电保护方案

本文详细介绍了为Proxmox VE (PVE)服务器配置UPS智能断电保护的完整方案。通过安装和配置apcupsd软件,实现PVE与UPS的联动,可在市电中断、电池电量不足时自动触发安全关机流程,有效保护虚拟机数据与服务连续性。文章涵盖了硬件选择、软件配置、策略设定及实战测试指南,并扩展了网络共享UPS的高级应用。

python9snake的博客 509

独立游戏开发全流程 01|出发之前:认清时代、算清跑道、定义你的成功

成功的形态衡量方式完成并上线游戏在商店里,有人能买、能玩回本收入覆盖了开发成本可持续收入足以支撑团队做下一款游戏积累获得了一批真正喜欢你作品的玩家、一个社区、一份可以展示的作品成长掌握了完整的开发与发行流程,能力显著提升表达做出了一款自己真正想做、并为之骄傲的游戏爆款远超预期的销量与影响力越往上越难,但下面的台阶同样是真实的成功。在没有新增收入的情况下,你的钱能支撑多少个月。跑道(月)= 可用资金 ÷ 每月总开销可用资金算多了。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 2175

C# : 计算并输出这一天是这一年的第几天

C#之输入某年,然后输入某月,再输入某日,计算并输出这一天是这一年的第几天的功能算法

saitoDeng的博客 970

数字孪生变电站如何制作?虚拟现实项目强荐广州华锐互动

变电站数字孪生系统可以为提高变电站设备与环境的实时感知能力、在线诊断设备健康状态、促进设备隐藏故障定位和维修效率的提高、实现设备全生命周期提供有力支撑。通过对设备状态的准确评估,可以延长设备的生命周期,实现资产增值。1、3D可视化:建立可视化平台,集中展示所有3D模型信息、数据信息、环境信息和人员信息,包括设备数字模型、建筑外形及内部、周边地形、人员动态、天气、时间等。4、智能监控:采用先进的AI摄像头,通过设备的图像识别,自动智能分析图像,准确分析设备状态、运行动态、外围控制情况。...

gzvrnew的博客 776

滞后超前校正

滞后超前校正是一种常见的反馈控制器设计方法,能够同时改善系统的动态和稳态性能。它通过超前校正提升响应速度、增加相位裕度,通过滞后校正减少稳态误差。

bjcyck的博客 2712

AI for Science:GNN预测分子性质全流程详解与工业实践

从分子表示到工业落地,一文掌握图神经网络在药物研发与材料设计中的核心实战近年来,的浪潮正深刻变革着传统科研范式。在药物研发与材料设计领域,作为核心环节,已从传统的实验试错转向基于图神经网络(GNN)的智能计算。本文将深入解析GNN预测分子性质的,涵盖数据准备、模型设计、训练优化到工业部署,并揭秘前沿技术与实战案例。

datacanvas2426的博客 1674

2d网络游戏的延迟补偿(Lag compensation with networked 2D games)

http://gamedev.stackexchange.com/questions/6645/lag-compensation-with-networked-2d-games ———————————————————————————————————————————————————————————————————— 我要做一个物理驱动的2d网络游戏,有些问题我不大懂,通过研究发现,服...

dianchaozong3657的博客 295

1 FFmpeg从入门到精通-FFmpeg简介

1.FFmpeg简介 1.1 FFmpeg的定义 1.2 FFmpeg的历史 1.3 FFmpeg的基本组成 1.4 FFmpeg的编解码工具ffmpeg 1.5 FFmpeg的播放器ffplay 1.6 FFmpeg的多媒体分析器ffprobe 1.7 FFmpeg编译(1)FFmpeg之Windows平台编译(2)FFmpeg之Linux平台编译(3)FFmpeg之OS X平台编译 1.8 FFmpeg编码支持与定制(1)FFmpeg的编码器支持(2)FFmpe

migu123的专栏 3695

【AAAI2025】【小目标检测】FBRT-YOLO:更快速、更优的实时航拍图像检测方法

FBRT-YOLO是一种新型实时航拍图像检测方法,针对小目标检测的精度与效率平衡问题提出创新解决方案。该方法通过两个轻量级模块显著提升性能:特征互补映射模块(FCM)将浅层空间位置信息深度整合至网络深层,缓解信息失衡;多核感知单元(MKP)采用多尺度卷积增强多目标感知能力。实验表明,在VisDrone、UAVDT和AI-TOD数据集上,FBRT-YOLO在检测精度和速度方面均优于现有实时检测器,特别适用于资源受限的飞行设备。该模型通过精简网络结构,在保持高性能的同时降低了计算负担,为航拍实时检测提供了高效解

weixin_44184852的博客 2906

FPS游戏中,在玩家的延时都不一样的情况下是如何做到游戏的同步性的?

在 FPS 游戏中,通常是通过服务器来维护游戏的同步性。每当玩家的客户端发生操作时,都会向服务器发送请求并把操作的数据发送给服务器。服务器接收到请求后,会根据游戏的规则来处理这些数据,并根据处理的结果来更新所有玩家的游戏状态。最后,服务器再把更新后的游戏状态发送回给所有的客户端,使得所有玩家的游戏状态保持同步。这样就可以在玩家的延时不一样的情况下,让游戏保持同步。 ...

weixin_35756130的博客 322

【本地部署实战】LM Studio深度使用指南:从环境搭建到模型调优

LM Studio通过极简的操作流程和强大的生态兼容性,让本地部署大模型成为可能。随着M4芯片的发布和CUDA 12.0的优化,未来本地化AI开发将迎来新的爆发点。建议开发者关注官方Discord社区(https://discord.gg/lmstudio)获取最新模型支持信息。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 8753

延迟补偿在C/S架构游戏协议设计和优化中的应用

这篇文章介绍了cs这样的第一人称射击游戏中如何实现延迟补偿。非第一人称设计游戏设计也可以参考其中一些思想 原文地址: https://developer.valvesoftware.com/wiki/Latency_Compensating_Methods_in_Client/Server_In-game_Protocol_Design_and_Optimization

buck84的专栏 1万+

AI穿透式智慧粮仓

本报告基于 2025-2026 年全国多地智慧粮储实践案例,系统分析了 "AI + 穿透式" 智慧粮储体系的技术架构、AI 算法应用、提质增效成效、区域差异化特点及未来发展趋势。该体系通过多模态感知、智能算法与管控平台的深度融合,实现粮食存储全流程精准感知、智能预警与科学调控,显著降低储粮损耗与运营成本,大幅提升储粮安全水平与管理效率。报告梳理了各地差异化实践路径,提出针对性发展建议,为推动我国粮食仓储高质量发展、筑牢国家粮食安全防线提供参考。

reset2021的博客 230

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

子弹与数据的赛跑:FPS游戏网络同步全方位优化实战

FPS网络同步优化,是工程师和玩家一起“打怪升级”的旅程。每一个丢包,都有工程师夜晚查Bug,调试代码。每一次枪声准星背后,是网络算法、代码细节、作弊防范等多重黑科技的较量。只有深耕底层、不断创新,才能带来下一代FPS游戏的酣畅淋漓体验。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 2628

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

为什么照片一缩小,“细节就消失”?——因为高频装不下

当你把 10×10 像素压成 1 像素,你必须回答:这一块到底取什么值?不同算法就是不同“总结方式”。缩小一张图,本质上就是让图像做“自我概括”:它要用更少的像素讲述同一个故事。概括就注定要牺牲细节。低频是故事主线:人物是谁、风景是什么、构图如何高频是修辞与质感:纹理、毛发、细字、砖缝、噪点缩小后主线还在,修辞淡了——这就是你看到的“细节消失”。如果你把这件事看成“高频装不下”,你会更理解很多看似神秘的现象:为什么缩小后更干净?为什么会摩尔纹?为什么字体要 hinting?

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 792

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

端游与手游FPS同步技术大比拼

FPS游戏在端游和移动平台的实时同步技术存在显著差异。端游多采用高精度的客户端-服务器架构,支持高频同步和复杂延迟补偿,确保公平竞技体验。移动平台则侧重轻量级服务器架构和低频率同步,通过数据压缩和简化补偿机制优化性能与流量。此外,输入处理方面,端游适配高精度键鼠操作,而移动端依赖触屏预测和辅助瞄准。总体而言,端游追求同步精度与安全性,移动端更注重资源优化和网络容错,开发者需针对平台特性选择适配方案。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1570

《铸梦之路一》帧同步

帧同步卡牌手游 1.帧同步介绍 2.战斗 3.战斗加速 4.战斗回放

你只管努力,其他的,交给天意! 5509

lag compensation

http://www.gdcvault.com/play/1014345/I-Shot-You-First-Networking https://developer.valvesoftware.com/wiki/Latency_Compensating_Methods_in_Client/Server_In-game_Protocol_Design_and_Optimization ...

weixin_30348519的博客 206

多人网络游戏服务器开发基础学习笔记 II: 帧同步 | 游戏客户端预测原理分析 | FPS 游戏状态同步

这篇是对书本 网络多人游戏架构与编程 的学习第二篇,内容还是以基础为主。第一篇主要是讲解了网络多人游戏的一些最基础的知识。同时因为一些点书本内容太简略,所以参照学习了 GDC 2017 守望先锋对 ECS 架构涉及和网络同步的视频分享结合讲解加深理解。尝试提供所有必要基础知识理解游戏客户端预测(但是只是基础角度的分析,有需要深入学习的时候直接看视频)。对于守望先锋 ECS 架构部分这里不涉及,那部分内容属于 gameplay 部分,可以看云风大佬的分析。GDC 的视频连接下文会给出。 对于游戏中的各

锐龙处理器 1万+

FPS游戏原理漫谈:玩家延时与服务器同步

易竞技前言:在知乎上有玩家提问“在FPS游戏中玩家延时都不一样的情况下是怎样做到游戏的同步?”知乎网友“周恺华”对此给出较为充实的回答,有兴趣了解这方面知识的玩家可以通过下面的回答来一窥究竟。 知乎网友“周恺华”的回复: 声明:下面会大量使用CSGO作为例子,因为Valve在多人游戏的网络通信方面做得较好,可以当做一个典型来分析。 多人竞技游戏中客户端和服务器的互动 游戏中

小布丁的读书笔记 1万+

延迟补偿的总结

国内的网络游戏多是客户端/服务器方式,而对于游戏实时性要求比较高的网游,如 果采用客户端发送时间包给服务器,服务器校验后再下发给客户端表现的话,网络延时 和抖动都会恶化游戏体验。对于客户端和服务器的同步问题, 一般有两种算法解决: ① 、客户端和服务器之间进行对时后,客户端发送数据包给服务器,服务器根据收 到的客户端数据包先后进行排序,先到达的服务器端的事件包被判定为先发生,后到达 服务器的事件...

qq_14914623的博客 5207

以CSGO为例 分析不同网络延时下FPS游戏同步的实现

FPS游戏中,在玩家的延时都不一样的情况下是如何做到游戏的同步性的?下面会大量使用CSGO作为例子,这是因为Valve在多人游戏的网络通信方面做得较好,可以当做一个典型来分析。先讲多人竞技游戏中客户端和服务器是如何互动的吧。游戏中所有的逻辑判定都是由服务器完成的,客户端只负责发送请求和接收服务器的反馈,并把反馈具象化。拿CSGO做例子吧,比如你(玩家A)拿着AK瞄准了玩家B的头开了一枪,那么你的客户端会向服务器发送一个数据包,里面包含了谁(你)拿着什么武器(AK)从什么位置(你在地图上的坐标)...

wubaohu1314的博客 2944
上一篇: [gdc15]<暗黑破坏神3:夺魂之镰>的开发之路
下一篇: [game]《泰坦陨落2》
安柏霖
安柏霖 领域专家: 学术研究与理论基础技术领域 领域专家: 学术研究与理论基础技术领域
博客等级 码龄20年 1788粉丝 891原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值