码农知识堂 - 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辅助就不能获取正确的当前时间了。
  • 相关阅读:
    常用数据库的 API - 开篇
    C#开发的OpenRA游戏之属性BodyOrientation(6)
    使用Vitis HLS生成 IP核 (verilog版和图形化版)
    quarkus实战之五:细说maven插件
    厦门大学《信号与系统》考试大纲
    GO语言使用Nacos(nacos-sdk-go的使用)
    [深入研究4G/5G/6G专题-58]: - L3信令控制-7-关键概念和常见问题之信道、UE 上下文, RRC连接,SRB0/1/2, DRB Bear。
    Spring 中的环境抽象(Environment Abstraction)
    「前端+鸿蒙」核心技术HTML5+CSS3(十三)
    无法访问mybatis.dto.StudengInVO-使用maven编译报错-2022新项目
  • 原文地址:https://blog.csdn.net/plaxbsga/article/details/126016563
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号