中级游戏后端的逆袭之路——常规游戏功能设计(六、防作弊)
核心思想永远别信客户端作弊的本质就是玩家修改了本该由游戏规则控制的数据。比如把血量改成无限、让角色瞬移、一枪打出9999伤害……所以防作弊的第一条铁律就是所有影响游戏公平的关键逻辑必须在服务器执行客户端只负责显示和操作指令。防御体系第一层客户端上报 → 服务端校验客户端说“我打了100点伤害”服务器不信自己算一遍。如果对不上直接踢掉。第二层数据签名与防篡改给每个网络包加个签名类似信封上的火漆一旦中间被改过服务器立刻发现。第三层行为分析反外挂就算客户端没改数据但操作频率、移动速度明显超出人类极限服务器也能识别出来。示例代码1️⃣ 服务端校验伤害最基础但最有效importhashlib,time,random# 假设这是服务器存储的真实玩家属性player_stats{attack:50,crit_rate:0.2,crit_damage:2.0}defserver_calculate_damage(attacker_id,target_defense):服务器独立计算伤害baseplayer_stats[attacker_id][attack]# 暴击判定ifrandom.random()player_stats[attacker_id][crit_rate]:damagebase*player_stats[attacker_id][crit_damage]else:damagebase# 减去目标防御finalmax(1,int(damage-target_defense))returnfinaldefverify_combat(client_report): 客户端上报格式{attacker:player1,target:monster,claimed_damage:150} 服务器重新计算并对比 real_damageserver_calculate_damage(client_report[attacker],get_target_defense(client_report[target]))ifabs(client_report[claimed_damage]-real_damage)5:# 允许微小误差print(f⚠️ 作弊嫌疑客户端报{client_report[claimed_damage]}实际应为{real_damage})ban_player(client_report[attacker])else:print(✅ 伤害正常)2️⃣ 防重放攻击时间戳 签名有些外挂会截获你发出的“合法”数据包然后反复发送比如重复使用同一个跳跃指令。解决方案每个包带时间戳和一次性随机数nonce加上签名。SECRET_KEYgame_secret_12345defcreate_signed_packet(action,data,timestampNone):iftimestampisNone:timestampint(time.time())rawf{action}|{data}|{timestamp}signaturehashlib.sha256((rawSECRET_KEY).encode()).hexdigest()return{action:action,data:data,ts:timestamp,sig:signature}defverify_packet(packet):# 检查时间戳是否在合理范围内比如前后5秒nowint(time.time())ifabs(packet[ts]-now)5:returnFalse# 检查签名rawf{packet[action]}|{packet[data]}|{packet[ts]}expected_sighashlib.sha256((rawSECRET_KEY).encode()).hexdigest()returnpacket[sig]expected_sig# 客户端构造包packetcreate_signed_packet(move,x10,y20)# 服务端验证ifverify_packet(packet):process_move(packet[data])else:reject(非法请求)3️⃣ 速度检测行为分析如果客户端每秒移动超过游戏设定的最大速度比如正常跑是5米/秒突然变成50米/秒基本就是开了加速挂。MAX_SPEED5.0# 米/秒classPlayerMovementTracker:def__init__(self):self.last_pos{}self.last_time{}defcheck_movement(self,player_id,new_x,new_y,current_time):ifplayer_idnotinself.last_pos:self.last_pos[player_id](new_x,new_y)self.last_time[player_id]current_timereturnTrueold_x,old_yself.last_pos[player_id]dtcurrent_time-self.last_time[player_id]ifdt0:returnFalse# 时间倒流作弊distance((new_x-old_x)**2(new_y-old_y)**2)**0.5speeddistance/dtifspeedMAX_SPEED*1.5:# 留一点容差print(f{player_id}疑似加速速度{speed:.2f}m/s)returnFalse# 更新记录self.last_pos[player_id](new_x,new_y)self.last_time[player_id]current_timereturnTrue

相关新闻

DSP/BIOS配置工具:嵌入式实时系统静态配置与内存模型实战

DSP/BIOS配置工具:嵌入式实时系统静态配置与内存模型实战

1. 项目概述:DSP/BIOS配置工具的核心价值与定位在嵌入式实时系统开发,尤其是基于德州仪器(TI)C6000系列DSP的项目中,性能与确定性是压倒一切的追求。我们常常需要在有限的硬件资源(内存、CPU周期&#xff0…

2026/7/26 17:55:07阅读更多 →
如何快速掌握ABAP RAP开发:面向开发者的完整实战指南

如何快速掌握ABAP RAP开发:面向开发者的完整实战指南

如何快速掌握ABAP RAP开发:面向开发者的完整实战指南 【免费下载链接】abap-platform-rap-opensap Samples for the openSAP course "Building Apps with the ABAP RESTful Application Programming model (RAP)." 项目地址: https://gitcode.com/gh_mi…

2026/7/26 17:55:07阅读更多 →
C语言基础:数据类型、常量与变量

C语言基础:数据类型、常量与变量

short、int、long、char、float、double 这六个关键字代表 C 语言中的六种基本数据类型。 二、C语言的基本元素 2.4 常量与变量 2.4.1 常量 常量是在程序运行过程中其值不会发生改变的量。C语言中的常量主要分为以下几类: 1. 整型常量 十进制整数:如 123…

2026/7/26 17:55:07阅读更多 →
如何在Web端实现专业级3D建模:OpenCascade.js完整指南

如何在Web端实现专业级3D建模:OpenCascade.js完整指南

如何在Web端实现专业级3D建模:OpenCascade.js完整指南 【免费下载链接】opencascade.js Port of the OpenCascade CAD library to JavaScript and WebAssembly via Emscripten. 项目地址: https://gitcode.com/gh_mirrors/op/opencascade.js 想要在浏览器中实…

2026/7/26 19:39:31阅读更多 →
AI辅助编程实践:GPT-4在毕业设计开发中的应用

AI辅助编程实践:GPT-4在毕业设计开发中的应用

1. 项目背景与动机去年帮学弟调试毕业设计时,发现一个有趣现象:他花在查API文档和调试基础功能的时间,远超过核心算法开发。这让我开始思考——在2023年这个AI爆发的技术节点,能否用大模型来承担那些重复性的编码工作?…

2026/7/26 19:39:31阅读更多 →
深度解析昇腾计算-通信融合算子模板库:3种模式的实战指南

深度解析昇腾计算-通信融合算子模板库:3种模式的实战指南

深度解析昇腾计算-通信融合算子模板库:3种模式的实战指南 【免费下载链接】catccos CATCCOS昇腾计算-通信融合算子模板库,是一个聚焦于提供高性能计算通信融合类算子基础模板的代码库。 项目地址: https://gitcode.com/cann/catccos CATCCOS&…

2026/7/26 19:39:31阅读更多 →
Illustrator脚本终极指南:从零开始掌握自动化设计神器 [特殊字符]

Illustrator脚本终极指南:从零开始掌握自动化设计神器 [特殊字符]

Illustrator脚本终极指南:从零开始掌握自动化设计神器 🎨 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 还在为Illustrator重复性操作烦恼吗?&a…

2026/7/26 19:39:31阅读更多 →
3分钟掌握Adobe Illustrator批量替换:ReplaceItems.jsx终极效率指南

3分钟掌握Adobe Illustrator批量替换:ReplaceItems.jsx终极效率指南

3分钟掌握Adobe Illustrator批量替换:ReplaceItems.jsx终极效率指南 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 还在为Illustrator中繁琐的重复替换操作而烦恼吗&am…

2026/7/26 19:39:31阅读更多 →
Speechless版本更新日志:v2.2带来哪些体验升级?长文处理与标题优化详解

Speechless版本更新日志:v2.2带来哪些体验升级?长文处理与标题优化详解

Speechless版本更新日志:v2.2带来哪些体验升级?长文处理与标题优化详解 【免费下载链接】Speechless 把新浪微博的内容,导出成 PDF 文件进行备份的 Chrome Extension。 项目地址: https://gitcode.com/gh_mirrors/sp/Speechless Speec…

2026/7/26 19:37:30阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/26 19:05:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/26 19:05:21阅读更多 →