V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
orbwalker
V2EX  ›  C

[逆向] 关于网游技能施法的问题

  •  
  •   orbwalker · 2019-06-24 14:47:18 +08:00 · 3835 次点击
    这是一个创建于 1987 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假设无其它干扰,1v1 对拼,如何确定这个技能丢出去是对着目标丢的?这是一个技能预判的问题,能否从逆向的角度谈谈

    15 条回复    2019-06-24 17:31:28 +08:00
    no1xsyzy
        1
    no1xsyzy  
       2019-06-24 14:58:18 +08:00
    不明白,请给出情景详细说明
    orbwalker
        2
    orbwalker  
    OP
       2019-06-24 15:40:45 +08:00
    @no1xsyzy 王者荣耀预判如何实现?电脑人机能自动丢技能
    orbwalker
        3
    orbwalker  
    OP
       2019-06-24 15:41:29 +08:00
    @no1xsyzy 王者荣耀朝目标丢技能,如何用脚本实现?电脑人机可以自动丢技能
    samRoll
        4
    samRoll  
       2019-06-24 15:55:54 +08:00
    A 在第 n 秒朝α角扔出 C 技能,B 在 n+1 秒收到 “ A 在第 n 秒朝α角扔出 C 技能”, 已知 C 技能速度,时间 求出 A 技能当前位置? 检测是否碰撞?
    wafm
        5
    wafm  
       2019-06-24 16:00:17 +08:00
    MOBA 一般只能通过技能长度和时间进行估算,打分 通过分值进行判断
    rizon
        6
    rizon  
       2019-06-24 16:12:33 +08:00
    在过去最传统的方式下。客户端会负责计算命中,技能是有体积的,只要检查体积碰撞就可以了。

    但是在外挂牛 x 的今天,为了防止外挂,现在服务端会承担更多的计算而不是信任客户端,而且就算是客户端的计算也不会采用那么粗暴的方式了,太容易被修改了。

    以前韩国做游戏没有这方面经验,做出来的例如 DNF 这类游戏,简直就是外挂的暖巢,大量计算放在客户端,导致客户端想咋玩就咋玩,后面腾讯虽然也参与进来做大量的修补擦屁股工作,但是也是很惨就是了~~
    x86
        7
    x86  
       2019-06-24 16:16:15 +08:00
    我也挺好奇早期 LOL 的 L#脚本?按着空格打团,自动走砍走位多技能是怎么设计的
    gaius
        8
    gaius  
       2019-06-24 16:17:04 +08:00
    jue 本?
    dabaibai
        9
    dabaibai  
       2019-06-24 16:18:18 +08:00
    王者荣耀可以做 gua.. 帧同步的弊端
    dota2 无法用挂. 状态同步的好处.
    rizon
        10
    rizon  
       2019-06-24 16:35:15 +08:00
    @dabaibai #9 农药是帧同步?帧同步是客户端计算,服务端转发吧?国内网游现在还会有人采用这种方式?
    dabaibai
        11
    dabaibai  
       2019-06-24 16:50:44 +08:00
    @rizon 你可以看看 它的开发人员有说这个..没记错的话它就是用的帧同步.
    毕竟帧同步省流量开发难度也低,
    状态同步对后端开发人员要求很高
    dabaibai
        12
    dabaibai  
       2019-06-24 16:52:51 +08:00
    @rizon 我做了 10 年游戏后端, 确实国内很少用帧同步, 小公司做帧同步会被外挂弄死.大公司直接封号不管你充多少钱.
    除非是射击类游戏,格斗类我会用帧同步,其他基本都不会
    tcfenix
        13
    tcfenix  
       2019-06-24 16:59:41 +08:00
    王者荣耀的确是帧同步做的,如果你修改客户端的话的确可以做到让你放出本来不该放出的技能

    但是问题是在其他 9 个人的客户端上是怎么显示的呢?记住帧同步游戏只是转发指令包啊
    这个时候其实你已经跟其他 9 个人不在同一条世界线上面了
    最后投票游戏结果,除非你能让 10 个人的游戏 6 个人开同一个挂,不然怎么投票赢下来?
    wujl100
        14
    wujl100  
       2019-06-24 17:29:39 +08:00
    对人技能:
    一种情况是,A 需要选中 B,在满足“技能冷却完毕”且“ AB 间距离<技能范围”时,可以点击火球按钮。这种情况下,A 释放了技能后,会创建一个火球对象,火球会始终以 B 为目标移动,并且做碰撞判断,当火球与 B 发生碰撞时,B 掉血。B 如果跑得足够快,B 可以永远带着那个火球放风筝,不过通常角色是不会比特效对象跑得快的。
    对地技能:
    另一种情况是,A 朝释放朝着某个方向的技能,冲击波、光束炮。同样的,冲击波也好,光束炮也好,都会创建对象,他们会有一个技能范围和持续时间,在这个时间内,有角色碰撞了,就会掉血。
    总结就是,人物对象与技能对象的碰撞检测返回了 true 就掉血。
    co3site
        15
    co3site  
       2019-06-24 17:31:28 +08:00 via Android
    上 CE 看看,不同方向都是有不同参数的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2588 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 10:46 · PVG 18:46 · LAX 02:46 · JFK 05:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.