码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【防作弊】Unity防本地调时间作弊


    目录

    1.需求背景

    2.解决方案

    2.1 初步方案

    2.2 最终方案

    3.纯单机如何防作弊


    1.需求背景

    • 许多游戏有一种“体力”的概念,一般跨越30分钟(NowTime-LastRewardTime)恢复一个❤。如果是单机游戏,玩家就可以改本地时钟,NowTime一下跑很大块,超过30min就可以立即获得奖励了。
    • 问题:如何防止这种本地改时间作弊。

    2.解决方案

    2.1 初步方案

    • 维护开机时间的偏移量,计算Passing(N-L)差的时候带上开机时间偏离量,即可规避改时间的作弊行为,保证时间差运算合法。
    • 以Unity使用C#代码为例:
      1. public static DateTime GetSystemStartupTime()
      2. {
      3. return DateTime.Now.AddMilliseconds(-Environment.TickCount);
      4. }

      在游戏启动时获取MobileBoot的时间戳记为 Boot.Old。

    • 那么就可以在下次判定奖励获取时,计入一个 Boot.New-Boot.Old的时间差 offset修正,防止改时间的作弊行为。包含防改时间作弊的计算奖励时间差伪代码如下:

      1. // 游戏启动时记录
      2. DateTime bootOld = GetBootDate();
      3. DateTime bootNew = GetBootDate();
      4. int rewardHeardCount = ((NowTime - LastRewardTime) - (bootNew - bootOld)) / 30;

    2.2 最终方案

    • 当玩家不重启,不关闭app,以上非联网状态是可以纠正的。但你想想,如果玩家app再改时间,上面的方式也是无法纠正的。
    • 所以实际解决方案,应该在游戏启动时同步Server时间戳是第一步,在游戏中某次检测识别到 Boot.New 与Boot.Old不一致时,表明玩家在app未关闭的情况下改了时间,做一次弱联网同步时间戳,而不是用本地校验直接算结果(本地永远是不可靠的)。

    3.纯单机如何防作弊

    • 兄弟,纯单机了还想防…… 你又不允许起后台VirtualServer计时器
    • 其实,纯单机,能识别,但不能纠正,毕竟咱们没有时间计时器了,不依靠外部Service辅助就不能获取正确的当前时间了。
  • 相关阅读:
    496. 下一个更大元素 I(javascript)496. Next Greater Element I
    一文搞定Postman(菜鸟必看)
    6.对象的实例化内存布局与访问定位
    SAP 系统License查看申请及导入
    基于springboot+vue的药店管理系统
    让Python更优雅更易理解
    安装Anaconda与pytorch,在IDEA中配置环境进行编程
    GD32(4)存储管理
    [Linux]线程互斥
    MyBatis一对多查询,MyBatis中resultMap的使用,MyBatis中collection注意事项,MyBatis的级联搜索
  • 原文地址:https://blog.csdn.net/plaxbsga/article/details/126016563
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号