0.大纲
两种不同的角度,有不同的设计方案
- 单机游戏支持联机玩法
- 联机游戏支持单机玩法
考虑点:
-
离线数据存档
-
外挂对抗:脱机挂、内存挂、按键类挂
-
用户体验
1.三个方向
客户端
内存加密
- 加密入口:进是加密,出是解密。内存信息是加密的。
- 内容:配置信息,用户状态等。
本地文档
- 存档加密:加密方法 加密key
- 存档转移:文档打上使用者信息,比对使用者信息
- 存档降级:文档打上客户端自身的版本信息,低版本的客户端不能加载高版本的存档文件
代码混淆
一般打包工具都有
服务端
存档文件
客户端将存档文件上传CDN服务器,联网是下载做比对。
服务端不允许修改客户端的存档。1.防止解存档方法扩散。2.数据一致性。
重放攻击
加入Nonce(Number once)机制
客户端和服务端交互
-
联网成功后,服务端下发盐值salt。
-
交互协议加密
-
数据采集,客户端上报玩家核心数据的变化
2.落地
外围
客户端加密 防作弊等
事后校验:校验每一个操作,理论上可行,实际不可行
玩家在游戏过程中,减少数据采集
内围
可玩性,好的体验,流畅度
展示效果依赖的数据,用本地缓存
3.业务和技术
选择和平衡
-
作弊,也是一种玩家体验
-
确定作弊就封号,主流的做法
-
提高账号归属感
-
大数据,数据建模
-
重要程度 误杀率 > 漏杀率
-
参考成功的作品
家园花园系列:将客户端信息打包上传CDN,降低了工作量。
开心消消乐:诱导玩家联网,每过15关必须联网,才能继续玩。一局进程中断恢复,如果联网才能恢复。
天天酷跑:收集大量的数据,数学模型,然后多指标交叉校验。
应对措施
-
修改内存
内存加密,协议加密
-
修改时间
允许提取未来的收益,但不能超过校验时间点。否则,回滚。
-
重放攻击
加入序列号
-
本地缓存上报数据过大
引导玩家联网
-
使用作弊器
扫描系统是否运行了黑名单中的应用进程
-
如何修改玩家数据
下发邮件,然后上行领取信息,客户端本地修改数据,服务端校验闭环。
参考: