由于你盒纵容网络暴力加害者,且对受害者账号进行限流操作,不会对索要链接的私信进行回复,有需要的盒友移步粉色电视的同名文章,或在 GitHub 搜索 HorsenLiu/BalatroMods。
0. 前言
上一篇教程以「授人以渔」的方式教会了大家移植小丑牌 PC 版到手机上并添加 Mod。
无门槛学会移植 Balatro 小丑牌并添加 Mod
如果你没有看过,可以点进去粗略地了解一下,以便更好地衔接上新的这篇。
当时比较可惜的是 Lovely 注入器不支持移动端,导致依赖 Lovely 的 Steamodded 1.0-alpha 在手机上运行不起来。只能退而求其次安装 0.9.8 的旧版本,而且 Mod 版不能自定义卡面。不过现在我终于找到方法解决了所有问题!虽然有点麻烦,但可以让移动端也能有 PC 端的 Mod 游玩体验。
你可能已经开始迷糊了。不要紧,先记住这几个重要的东西:
移植工具:balatro-mobile-builder,用于生成移动端安装包,支持同步存档;
smods:全称 Steamodded 1.0-alpha,所有模组的前置模组;
Lovely:smods 需要有它才能生效;
模组:也就是 Mod 文件,分为普通模组和 Lovely 模组,后面细说;
转储:Lovely 生成的 dump 文件,这次教程的主角。
下面正式开始,首先需要的前置条件:
PC 版 Balatro 小丑牌
可以访问 GitHub 的网络环境(推荐使用 Watt Toolkit 加速器)
手机和数据线(最好是原装线,第三方线可能仅支持充电,不支持数据传输)
不会被杀毒软件乱删文件的电脑
沉着冷静有耐心的大脑
注意:
如果你之前跟着上一篇教程操作过,需要先做两个步骤:
把 PC 版的小丑牌恢复成原版状态:打开 Steam,点击库,找到 Balatro,右键 -> 管理 -> 属性 -> 已安装文件 -> 验证游戏文件的完整性(或者直接卸载重装);
把移动端的小丑牌卸载掉。如果移动端进度比较新,请一定把存档同步给电脑端作为备份(相关教程在本文最后一部分)。
1. 运行移植工具
参考文章:GitHub - PGgamer2/balatro-mobile-builder
1.1 下载 balatro-mobile-builder
打开下载页面(目前最新版本是 beta-0.9.4): https://github.com/PGgamer2/balatro-mobile-builder/releases
根据你的系统选择其中一个 exe,大多数人应该都是下载【balatro-mobile-builder-win-x64.exe】

1.2 复制到 Balatro 本地文件
这一步大家应该都会吧。打开 Steam,点击库,找到 Balatro,右键 -> 管理 -> 浏览本地文件,把【balatro-mobile...exe】复制到里面,保持和【Balatro.exe】在同一个文件夹中。


1.3 打开手机 USB 调试并连接电脑
这一步是为了方便直接安装 apk 并同步 PC 版的存档。由于大家的手机品牌都不一样,建议自行搜索开启 USB 调试的方法,基本上大同小异。
这里以 MIUI / 澎湃 OS 为例:打开设置 -> 点击我的设备 -> 全部参数与设备 -> 连续点击 OS 版本(系统版本)进入开发者模式 -> 返回设置搜索「开发者」-> 点击开发者选项 -> 往下翻,依次开启 USB 调试和 USB 安装。

手机通过数据线连接电脑,手机上会弹窗,点击允许。
1.4 开始移植
双击【balatro-mobile...exe】,然后我负责给你逐步翻译。
【Open the Android save manager (y/[n])? 是否打开安卓存档管理器?】如果你是你一次安装,就没有存档,直接回车。
【Apply FPS cap patch ([y]/n)? 是否安装帧率上限补丁?】将帧率限制为设备的原始刷新率,建议安装,直接回车。
【Apply Landscape patch ([y]/n)? 是否安装横屏补丁?】将游戏锁定为横屏方向,建议安装,直接回车。
【Apply High DPI patch ([y]/n)? 是否安装高分辨率补丁?】启用高分辨率图形模式,建议安装,直接回车。
【Apply Disable CRT patch (y/[n])? 是否安装禁用 CRT 补丁?】禁用 CRT 着色器可能会导致画面发白,不建议安装,直接回车。
【Build for iOS (y/[n])? 是否为 iOS 构建?】如果你是 Android 设备,直接回车。
等待程序下载必备构建工具。这里比较考验你的「上网能力」,如果下载过程异常缓慢甚至中断,就会因为文件不完整导致程序闪退。可以直接把我分享的工具复制到【Balatro.exe】的所在位置,程序检测到就会跳过下载。
【Delete downloaded building tools ([y]/n)? 是否删除构建工具?】这个就看你自己了,如果不想留,直接回车。
【Install to your Android device through USB ([y]/n)? 是否通过 USB 安装到你的安卓设备?】直接回车,程序会自动下载 adb 工具,方便我们最后添加 Mod 用。安装成功的输出是这样的:

如果程序没有这样走,点击进入 platform-tools 文件夹,在文件管理器地址栏输入 cmd 回车,在命令行窗口输入 adb devices 回车检测已连接的设备。如果 List of devices attached 下面是空白的没有任何字符串,说明手机和电脑没有连接上。
【Copy local saves to your device ([y]/n)? 是否复制本地存档到你的设备?】这一步就是把 PC 上的游戏存档同步到手机,如果你需要,直接回车。
【Delete ADB ([y]/n)? 是否删除 ADB 工具?】ADB 工具我们下一步有用,所以不要回车,直接关掉窗口就可以了。ADB 工具的文件夹叫【platform-tools】,记住它的名字和位置。
如果你对模组不感兴趣,进行到这里就可以结束了。打开手机上的 Balatro 享受和 PC 端一样的游戏体验。
2. PC 端安装 smods(Steamodded)
参考文章:Home · Steamodded/smods Wiki · GitHub
新版的 smods 不再需要拖动 exe 来注入代码,而是作为一个模组(Mod)安装到游戏中。也就是说 smods 是所有其他模组的前置模组,不同的是它需要 Lovely 才能运行。说到 Lovely,现在越来越多的模组(特别是大型模组)都需要依赖 Lovely 了。
这里教大家如何分辨普通模组和 Lovely 模组:
如果模组是一个文件夹,里面有 lovely 子文件夹,说明是 Lovely 模组;
如果模组是一个文件夹,里面有 lovely.toml 文件,说明是 Lovely 模组;
如果模组是一个文件夹,但里面没有 lovely 相关的文件,说明是普通模组;
如果模组是单个 lua 文件,说明是普通模组。
如果你图方便,可以把所有模组都看作是 Lovely 模组。
当游戏启动时,Lovely 会读取和自己有关的文件,以此来生成转储(dump)文件,这样 smods 就生效了。smods 又把普通模组的代码注入游戏,这样所有模组都生效了。
如果 Lovely 模组发生了更新、增加、删除,游戏启动时转储文件也会发生变化;如果普通模组发生了更新、增加、删除,转储文件则不会发生变化。所以说,转储文件和模组文件要搭配在一起,才能让游戏正常运行不报错。
2.1 下载 Lovely 注入器
打开下载页面(目前最新版本是 v0.7.1):https://github.com/ethangreen-dev/lovely-injector/releases
根据你的系统选择一个 zip,大多数人应该都是下载【lovely-x86_64-pc-windows-msvc.zip】。解压出来得到一个叫【version.dll】的文件。

2.2 复制到 Balatro 本地文件
这一步大家应该都会吧。打开 Steam,点击库,找到 Balatro,右键 -> 管理 -> 浏览本地文件,把【version.dll】复制到里面,保持和【Balatro.exe】在同一个文件夹中(似曾相识?)。


2.3 下载 smods 和其他模组
打开下载页面:https://github.com/Steamodded/smods/archive/refs/heads/main.zip
解压后得到文件夹【smods-main】,和其他模组放在一起准备好。
2.4 复制到 Mods 文件夹
打开文件管理器,在地址栏输入【%AppData%/Balatro】并回车。如果里面没有 Mods 文件夹,就手动创建一个。把 smods-main 和其他模组复制到这个 Mods 文件夹里面。
至此,smods 就算是安装上了。如果需要更新 smods,或者添加、删除模组,都要在这个 Mods 文件夹里变动。
3. 传输模组和转储文件到手机
参考文章:Lovely / Steamodded 1.0 mods on Android · Issue #137 · blake502/balatro-mobile-maker
现在到了最重要的一步。
为了让 Lovely 模组能在移动端运行,这一次我们不仅要把模组文件传进手机,还要把转储文件也传进去。好在所有东西都在 Mods 文件夹中。
不过,对于移动端来说,这些转储文件会导致第 1.4 步移植时搞的那些补丁失效,所以我们还需要一个前置模组:BalatroMobileCompat。它和 smods 一样也是 Lovely 模组,用于以模组的方式给移动端添加补丁,对 PC 端没有影响。
3.1 下载 BalatroMobileCompat
由于第 1.4 步移植的时候我们没有安装「禁用 CRT 补丁」,为了大家方便,我直接把相关代码注释掉了。如果你需要自定义补丁,就下载解压后自己修改 lovely.toml 文件,把不想安装的补丁用 # 注释掉。
打开下载页面(目前最新版本是 v1.0.0):https://github.com/eeve-lyn/BalatroMobileCompat/releases
解压得到【BalatroMobileCompat-1.0.0】。因为这是个 Lovely 模组,所以我们要先让它在 PC 端生成转储文件。和 smods 一样,把它复制到 Mods 文件夹中。
3.2 运行游戏
启动 Balatro.exe。如果游戏正常运行不报错,主菜单右上角显示了 STEAMODDED,说明 smods 生效了,这也意味着我们得到了可用的转储文件。

接下来把包含模组和转储文件的 Mods 文件夹传输进手机,放到正确的位置,我们就能在手机上运行和电脑上一毛一样的模组。
3.3 传输文件
理论上来说,你的手机现在还是连着电脑的。还记得第 1.4 步的时候留着没删的 ADB 工具吗,它在 Balatro 本地文件中,文件夹名叫【platform-tools】。进入这个文件夹,如果你能看到【adb.exe】说明位置正确。在文件管理器地址栏输入 cmd 并回车,打开命令行。

依次输入以下命令并回车。要一字不差地输入,最好复制粘贴(不包括前面的原点)
进入目标文件夹
cd %AppData%/Balatro
把 Mods 文件夹传输到手机
adb push Mods /data/local/tmp/balatro
把游戏设置文件传输到手机(可选)
adb push config /data/local/tmp/balatro
adb push settings.jkr /data/local/tmp/balatro
进入手机命令行
adb shell
进入游戏文件目录
run-as com.unofficial.balatro
创建文件夹
mkdir -p files/save/game/SMODS
进入 game 文件夹
cd files/save/game
复制 Mods 到这里
cp -r /data/local/tmp/balatro/Mods ./
复制游戏设置文件到这里(可选)
cp -r /data/local/tmp/balatro/config ./
cp /data/local/tmp/balatro/settings.jkr ./
复制转储文件到这里
cp -r Mods/lovely/dump/* ./
复制 nativefs.lua 到这里
cp Mods/smods-main/libs/nativefs/nativefs.lua ./
复制 json.lua 到这里
cp Mods/smods-main/libs/json/json.lua ./
复制 version.lua 到 SMODS
cp Mods/smods-main/version.lua SMODS/
到这里,我们已经完成 99% 的步骤了。最后,我们需要在 game 文件夹中创建一个【lovely.lua】文件,让程序知道我们的 Lovely 是什么版本,以及 Mods 文件夹具体在哪里。
3.4 创建 lovely.lua 文件
大概率你也不知道 Mods 文件夹在哪里,那就运行下面这个命令:
pwd
cmd 会输出一个字符串,比如我这边是【/data/user/0/com.unofficial巴拉巴拉】。注意看 com 之前的内容,也许你的和我的不一样,反正把这串字符记住。
【/data/user/0/】
还记得 Lovely 注入器的版本吗,我这边是 0.7.1,把这串数字也记住。
【0.7.1】
有了字符和数字,就有了最后一个命令:
echo 'return { mod_dir = "/data/user/0/com.unofficial.balatro/files/save/game/Mods", version = "0.7.1" }' > "lovely.lua"
如果刚才你的两个内容都和我一样,直接粘贴到 cmd 运行。如果不一样,就替换成你的内容再运行。
最后我们运行命令,看看 game 文件夹中都有什么东西:
ls -l

当你做完这一切,在手机上启动 Balatro,玩得尽兴!
4. 设备之间同步存档
当你愉快地在手机上打了几局,想要把存档同步给电脑。或者某一端的存档直接覆盖掉另一端的存档,就参照下面的教程。
强烈建议操作前备份电脑存档!存档位置:C:\Users\你的用户名\AppData\Roaming\Balatro 中名称为 1、2、3 的文件夹
4.1 双端存档同步
手机和电脑连接,双击【balatro-mobile...exe】
【Open the Android save manager (y/[n])? 是否打开安卓存档管理器?】输入 y 并回车
【Sync saves between devices based on overall progression ([y]/n)? 根据整体进度在设备之间同步存档?】直接回车,程序会对比手机和电脑的进度,让两端的存档保持一致。
4.2 电脑存档覆盖手机存档
手机和电脑连接,双击【balatro-mobile...exe】
【Open the Android save manager (y/[n])? 是否打开安卓存档管理器?】输入 y 并回车
【Sync saves between devices based on overall progression ([y]/n)? 根据整体进度在设备之间同步存档?】输入 n 并回车
【Copy local saves to device (y/[n])? 是否复制本地存档到设备?】输入 y 并回车。这一步会把电脑存档复制到手机。也就是以电脑存档为原本,手机向电脑看齐。
4.3 手机存档覆盖电脑存档
手机和电脑连接,双击【balatro-mobile...exe】
【Open the Android save manager (y/[n])? 是否打开安卓存档管理器?】输入 y 并回车
【Sync saves between devices based on overall progression ([y]/n)? 根据整体进度在设备之间同步存档?】输入 n 并回车
【Copy local saves to device (y/[n])? 是否复制本地存档到设备?】输入 n 并回车。
【Copy device saves locally (y/[n])? 是否复制设备存档到本地?】输入 y 并回车。这一步会把手机存档复制到电脑。也就是以手机存档为原本,电脑向手机看齐。