1
kiracyan 14 小时 40 分钟前
热更新一般是更新脚本语言 然后 fps 一般都是本地运算 所以挂比较多。
|
2
xtreme1 14 小时 35 分钟前 1. 这种数据对于实时性要求不高, 和 web 系统业务数据应该区别不大
2. 对战游戏你可以理解为有大厅服池, 战斗服池, 更新时调整负载均衡的逻辑, 新开的对局都在新服池, 滚动更新即可 3. fps 基本都是本地算的, 近几年反外挂花活比较多, 视野消息这些有可能是服务端算的 4. 游戏本质还是实时渲染系统, 需要知道所有物体的坐标才能绘制, 如果能成功读到内存, 即使数据再不好分析, 跟一下游戏中的渲染调用也就行了 |
3
dongzhuo777 14 小时 24 分钟前
fps 游戏在怎么加密,起码人物坐标最终还是要加载到本地内存里面的。现阶段的物理技术不可能做到 fps 游戏实时服务端计算。比如就类似洲里面的不带枪管的狙。远了,完全就是开枪的时候对方可以歪头躲子弹
|
4
kevan 12 小时 32 分钟前
巧了,上周问的 GROK:
FPS 网络对战射击准确性实现:以《三角洲行动》和《 COD 》为例 FPS (第一人称射击)游戏如《使命召唤》( Call of Duty ,简称 COD )和《三角洲行动》( Delta Force: Hawk Ops )在网络对战中实现射击准确性(如爆头),依赖于客户端-服务器架构和一系列网络同步技术。这些技术旨在补偿网络延迟( lag ,通常 50-200ms ),确保射击“感觉”即时且公平,同时服务器最终决定命中结果。核心是客户端预测、滞后补偿和命中检测,防止作弊并维持流畅体验。下面详细解释原理和技术细节。 1. 整体网络架构:服务器权威 + 客户端预测 服务器权威( Server Authoritative ):所有关键事件(如射击命中、位置更新)由服务器验证和决定。客户端仅发送输入(如鼠标瞄准、开火),服务器模拟世界状态并广播结果。这防止客户端作弊(如无限射击)。在 COD 中,服务器每 20-60ms ( tick rate )更新一次游戏状态。 客户端预测( Client-Side Prediction ):为了减少延迟感,客户端本地模拟玩家动作(如移动、射击)。例如,当你开火时,客户端立即显示子弹轨迹和命中反馈(视觉/音效),但实际命中由服务器确认。如果服务器不同意(如因延迟未命中),客户端“回滚”并修正( reconciliation )。这让射击感觉“即时”,即使延迟 100ms 。 在《三角洲行动》和 COD 中的应用:两者均采用此模型。《三角洲行动》作为 2024 年新作,继承了经典 FPS netcode (如 Unreal Engine 变体),支持大地图多人模式,客户端预测确保射击流畅; COD (如 Modern Warfare 系列)优化了预测算法,减少“橡皮筋”效果( rubber-banding ,回滚抖动)。 2. 射击准确性核心:滞后补偿( Lag Compensation ) 原理:网络延迟导致服务器收到射击输入时,目标玩家位置已“未来化”(已移动)。滞后补偿通过时间回溯解决:服务器记录玩家历史位置( snapshot ),回退到射击发生时刻(射击时间戳),然后检查子弹是否命中。 步骤: 客户端发送射击包(位置、方向、时间戳)。 服务器回溯所有玩家到该时间戳的位置。 模拟射击:从射手位置投射射线( raycast )或子弹路径。 检查碰撞:如果射线击中目标的“头部”碰撞盒,返回命中确认。 数学基础:使用插值( interpolation )计算历史位置。假设延迟Δt ,位置 x(t) = x_server + v * (t - Δt),v 为速度。服务器用线性/样条插值回溯。 在 COD 中的实现:COD 的滞后补偿( lag comp )是行业标杆,使用“反向协调”( backwards reconciliation ):服务器为每个射击回溯~100ms 历史,补偿高延迟玩家(>150ms )。这解释了为什么有时“预瞄”能命中移动目标,但也易被滥用( e.g., 高 ping 玩家优势)。 《三角洲行动》:作为 Tencent 出品,采用类似 Unreal Engine netcode ,支持 120Hz tick rate 。玩家反馈显示射击准确,但早期 alpha 版有高延迟问题(~50ms ),通过服务器回溯实现爆头检测。(注:游戏新,技术细节较少公开,但继承 COD 式设计。) 3. 爆头( Headshot )具体检测 命中检测类型: Hitscan (即时命中):常见于 COD ,用于狙击/冲锋枪。开火瞬间从枪口投射射线( raycasting ),检查是否击中目标模型的“头部”部分( bounding box 或骨骼 mesh )。头部通常定义为头骨骼( head bone )的碰撞盒,命中后伤害×2-3 倍。 Projectile (弹道模拟):用于真实感强的武器(如《三角洲行动》中的狙击),子弹有速度/重力曲线,服务器模拟轨迹碰撞。爆头需射线精确击中头部动画帧。 骨骼与动画同步:玩家模型用骨骼动画( skeletal animation ),头部是特定骨骼( e.g., "head" joint )。服务器用快照插值同步动画,确保回溯时头部位置准确。COD 优化了“子弹渗透”和“头部优先检测”,减少误判。 反作弊:服务器验证射线源(枪口位置)是否合理,检测异常(如瞬移射击)。《三角洲行动》集成腾讯反作弊系统,监控爆头率异常。 4. 常见问题与优化 延迟影响:高 ping (>100ms )下,滞后补偿可能导致“幽灵子弹”( feels miss but hits )。COD 通过“tick rate 提升”( 60Hz+)和“混合补偿”缓解。 公平性:服务器优先低延迟玩家,但补偿高延迟方。未来趋势:P2P 混合或云服务器(如 AWS GameLift )。 《三角洲行动》特有:支持跨平台( PC/手机),netcode 强调移动端优化,射击准确率高但地图大时易丢包。 总之,这些技术让网络对战“感觉本地”,但服务器始终把关。COD 的 netcode 更成熟,《三角洲行动》作为新人气作正迭代中。如果你想深挖代码模拟或特定版本细节,我可以进一步解释! |
5
kevan 12 小时 31 分钟前
FPS 游戏爆头检测代码示例( Python 简化版)
你好!在 FPS 游戏如《 COD 》或《三角洲行动》中,爆头检测通常使用射线投射( Raycasting )结合碰撞检测实现:从枪口位置投射一条射线,检查是否击中目标模型的“头部”区域(通常是一个骨骼或碰撞盒)。服务器通过滞后补偿回溯位置,确保准确。 下面是一个简单 2D 模拟示例(使用 Python + math 库),假设: 玩家在(0,0),瞄准目标身体中心(10,5)。 目标头部是一个圆形区域(中心(10,7),半径 1 ),模拟头部碰撞盒。 检测射线是否与头部圆相交(命中=爆头)。 |
6
kevan 12 小时 30 分钟前
游戏反作弊系统实现指南
反作弊系统( Anti-Cheat System )是现代多人游戏(如 FPS 游戏《使命召唤》( COD )或《三角洲行动》)的核心组件,用于检测和阻止玩家使用外挂、修改内存、速度黑客等作弊行为。它通常采用客户端-服务器混合架构:客户端监控本地行为,服务器验证关键数据(如射击命中、移动速度),并通过 AI 、签名验证和行为分析实现实时响应。实现难度较高,需要持续迭代对抗黑客工具(如 Cheat Engine ),据开发者反馈,简单检测易被绕过,高级系统(如 COD 的 RICOCHET )需结合内核级驱动和机器学习。 核心实现原理 反作弊系统分为检测层、响应层和预防层: 检测层: 签名扫描:扫描内存/文件签名,检测已知外挂(如 DLL 注入)。例如,检查进程中非法模块。 行为分析:监控异常(如超高命中率、瞬移速度)。AI 模型(如神经网络)分析玩家轨迹,检测“非人类”模式。 时间/硬件验证:使用服务器时间戳防时间篡改,或 TPM ( Trusted Platform Module )硬件绑定防模拟器作弊。 网络验证:服务器回溯历史快照,确认射击/移动合法(滞后补偿)。 响应层: 即时封禁:检测后踢出玩家;延迟封禁(波次 ban )避免暴露检测逻辑。 报告机制:上传可疑行为日志到云端分析。 预防层: 代码混淆:使用工具如 Obfuscator 混淆 IL 代码,防反编译。 服务器权威:所有关键逻辑(如爆头计算)在服务器执行,客户端仅预测。 在 FPS 游戏中,如 COD 的 RICOCHET 使用内核级驱动扫描硬件 ID ,并 AI 监控瞄准模式。实现成本高:简单客户端检测~1-2 周,完整系统需数月+维护。 Unity 实现示例 Unity 游戏常用 Anti-Cheat Toolkit ( Asset Store 插件)或自定义脚本实现基本反作弊。下面是一个简化示例:速度黑客检测 + 内存校验。它监控玩家速度(防瞬移),并校验关键变量(如生命值)是否被篡改。适用于单机/多人原型,需结合 Photon/Unity Netcode 扩展网络验证。 1. 速度检测脚本( SpeedAntiCheat.cs ) 附加到玩家 GameObject 上,每帧检查速度异常。 |
7
ktskts 12 小时 13 分钟前
所谓的服务器补偿高延迟玩家是什么意思?
|
9
pusheax 10 小时 58 分钟前 刚好最近在研究 DMA 安全,可以回答一下问题 4 。
DMA 实际上是个非常常用的技术,如火线、PCIE 设备(包含走 PCIE 协议的 USB4 、雷电),可以不经 CPU 直接访问内存。 在很多场景下这个功能非常实用。例如网卡:如果所有流量都要经过 CPU ,很容易就会把 CPU 打满,而有 DMA 的网卡就可以直接把数据写进内存,基本不占用 CPU 。 但是这种不受限制读写内存的技术,也会造成安全问题,比如那种插个 USB 线就能提取电脑数据的数字取证设备,很多都用了 DMA 技术,从内存中提取密钥、Patch 登陆认证等等。 DMA 攻击计算机的研究,大概在 04 年就出现了,直到 16 年的 DEFCON 24 ,ufrisk 发布了一个非常完善的 DMA 攻击框架,叫 pcileech. 同年,有挂哥想到可以用 DMA 技术来读取游戏的内存,于是用 pcileech 改了个 CSGO 的透视挂出来。直到现在的 DMA 挂,基本都是在 pcileech 基础上改的。 透视挂的原理,就是通过读取内存中存储的敌方坐标实现的,所以多年来反外挂策略,都集中在监控这个读内存的操作上。 即使游戏的加密措施再强,但是只要动态跑起来,终究是要在内存中解密的。对于分秒必争的 FPS 游戏而言,把敌方坐标什么全部放在服务器上延迟过大,并不现实。 通过硬件读取内存,那就可以省略掉传统软件外挂所有读内存的行为(例如打开进程、HOOK 、加载驱动等等),绕过了所有传统反外挂措施。从此游戏攻防的主场转移到 DMA 上。 早期的 DMA 外挂,虽然不存在软件读内存的特征,但 DMA 板子本身还是有特征的,毕竟有一个不常见的设备挂在 PCIE 总线上。 因此,21-23 年的反外挂主要依靠检测 PCIE 设备的 VID 、PID ,还有检测针对某些特殊的 PCIE 请求包的响应实现,这个过程有点类似反外挂查设备名,外挂改设备名。 23 年的时候,Ekknod 发布了一个项目,把 DMA 板子的固件,伪造成一个正常的无线网卡,可以打网卡的驱动,在操作系统中看起来完全就是网卡。 这个方法直到现在都非常有效,大家研究出了伪装成网卡、声卡、采集卡等等设备。只要伪装固件做的足够真、伪装的原设备没有被黑名单,几乎无法被检测。 很多游戏厂商觉得这种你追我赶的循环无穷无尽,于是开始强制要求玩家开启 IOMMU (也就是 vt-d 或者 AMD-vi ),这个技术会让 DMA 设备跑在虚拟化上,这样 CPU 可以检测 DMA 请求的地址是否合法。可以很好的阻止 DMA 读写敏感内存,当然也可以检测是否读取游戏内存。 其实 IOMMU 这个技术在 09 年的 Intel Xeon E5500 系列就已经实装,但是虚拟化技术在消费级主板上默认是不开启的,所以去年三角洲刚强制要求 IOMMU 的时候,很多人都得去 BIOS 里面手工开启。 目前来说 IOMMU 技术可以完全防御 DMA 外挂,即使的确有技术可以解除 IOMMU ,但这也要求软件层面的修改,会留下特征,比之前纯 DMA 好检测的多。 这大概就是 DMA 外挂的整个生命周期了。 |
10
Geekerstar OP @xtreme1 感谢回答,言简意赅,大概明白了
|
11
Geekerstar OP @kiracyan 本地运算的话也需要和服务器高频交互吧,这里面技术感觉挺复杂的
|
12
Geekerstar OP @kevan #4 #4 感谢回答,大概明白了
|
13
Geekerstar OP @dongzhuo777 所以好多挂就是修改客户端内存来欺骗服务器吗
|
14
Geekerstar OP @pusheax 感谢大佬回答,非常专业了,看得出来研究很深
|
15
xiaozhiren001 8 小时 0 分钟前
一起玩吗? 我也差不多 300 小时了。 哈哈 在这儿找队友。。 平时晚上下班 和 周末玩
|
16
yutou527 7 小时 26 分钟前
竞技类的 fps 游戏弹道一般都是服务端算的吧
|