这是一篇很适合金手指新手来研究的教程,以寻找月亮跳为例子,将了一下金手指制作过程的知识。
以下将以洛克人7 这经典动作游戏作为例子,简单介绍 月亮跳跃 Moonjump 的金手指开发过程 20180522 [洛克人 遗产合集2] Mega Man Legacy Collection 2 [0100842008EC4000] (US中文) 动作,过关 配合工具EdizonSE链接: https://pan.baidu.com/s/1Hlkoo44eRzMJoToWeyzwMQ?pwd=8tac 提取码: 8tac 基本概念: 一般来说, 针对角色跳跃相关的金手指可分为三类: A. 无限跳跃(即在空中不着地再次跳跃,针对那些游戏内置二段跳的, 改成无限制多段跳跃) B. 修改跳跃高度(即是把初始加速率增大,或是把地心吸力9.81减少) C. Moonjump 登月跳(跳跃很流畅,把速度锁定为正数,不停上升直至放开按键让角色自然降落) 前两种是修改程序,破解了编码,就可很容易改到. 最后一种是利用 金手指程序, 例如 EdizonSE 把内存锁定. 本文介绍的就是最后这个 MoonJump 登月跳跃. 它的好处是 制作简单, 使用起来也很流畅, 开发者可以很轻易的改变上升速度, 配合不同游戏, 微调跳跃效果, 达到自然流畅. 虽然游戏开发员制作 跳跃 时, 可能有多种不同的编程手法, 但比较普及的是一种物理公式固定加速率(地心吸力 -9.81)使速度从正数减小到负数 也有可能是 相反的 地心吸力 9.81,速度从负数增加到正数 当玩家按下跳转按钮时,速度变量将被设置为一个较大的初始值,例如 +2000, (我看过有些用到七位数,相当大) 并且操作的角色将开始向上跳跃, 然后, 这个速度变量不断减少, 零 直到达到速度变量为(或者用户中途松开跳转键的情况时), 角色的高度便达到最高点,角色的移动方向开始变为向下. 不过这个速度变量到了0之后, 即使变成了负数仍会继续减少,直到角色接触地面为止。 速度变量0 就是一个 turning point 转折点, 角色跳跃时的最高点 我们能做的就是: 角色在跳起上升时,找出一个正数值 然后当角色下降时,找出一个负数值 找出了这个速度变量的内存位置, 便可以锁定它为正数, 使角色不断上升 还有一点要补充: 这个速度变量的内存位置 的形态 常用两种, 一种是 32位元的有向整数, 另一种是 32位元的浮点数 本文用前者作为简单介绍, 配合不同游戏, 很多时需要改变查找形态, 或是正负数反转 具体做法: 首先,为了方便判定现在速度变量是正数还是负数 我必须要把游戏添加冻结暂停的功能 新版本的 EdizonSE 已提供了, 可以很方便的自动加插两个金手指到游戏中, 但我会再修改一下,改变按键,使它更好操作, 这是冻结游戏的代码, 所有游戏适用 (只限大气层,SXOS的金手指没有这功能的) [Freeze Game (L)] 80000040 FF000000 20000000 [Resume Game (R)] 80000080 FF100000 20000000 现在正式开始了,当角色跳起之后下降到半空中时, 按L暂停游戏 由于角色正在下降中途,我预计速度的值是在 -10000 和 0 之间, 但我不打算使用 -1, 0, 1 这些值,因为内存中有太多这样的值, 如果略过它可以使搜找时间大大减少. 所以,我使用 [A..B] 范围搜索(输入S32形态)从 -10000 到 -2 得出结果,不会得到太多候选值 进入第二轮插索,先回到游戏中,准备另一个跳跃。 当按下跳跃后,立即冻结游戏 然后退到EdizonSE ,继续用正数范围搜索,这次我用了 2 .. 10000 太好了,竟然只得 1 个侯选结果! 现在开始测试一下这个侯选值是否正确 把游标移到侯选值上面,使它变成浅蓝色, 然后按 X 锁定它 然后回到游戏,再尝试跳跃 不错,跟预期一样, 角色起飞了。 再一次退到 EdizonSE 按 + 并给作弊一个名字 Moonjump (登月跳跃) 地址已添加到书签页。 我们可以按 L 来检查它。 现在,按 ZL+A,便可自动添加新的金手指 然后,指到这个新金手指上, 按 R3(即是按压右摇杆)为其添加一个激活按钮,我使用X,(X为登月跳跃,B为正常跳跃) 也就是说, 当玩家按下X, 金手指才会激活(锁定内存), 放手就可以解除锁定. 最后,按 ZL+L3(即是按住ZL再压下左摇杆), 使金手指代码自动写入作弊文件。(这真够方便,连一句代码也不用亲自书写) 这就完成了
|