2025-05-08 22:29:00
随着小米逐渐收紧手机 Bootloader 解锁政策,一加手机便成为了可能是 国内 最适合刷机爱好者的安卓设备:解锁不设限、Root 后在一定范围内支持保修。我能理解厂商封堵刷机的考量,如今的安卓生态早已告别那个功能匮乏、需要靠刷机来弥补的时代,再加上深度定制的 UI 系统和基于硬件的定制化功能,都让第三方 ROM 的生存空间日益萎缩。当刷机变得不再必要,刷机文化式微是必然的趋势。但安卓的魅力,始终来源于它的开放性,我还清楚地记得在小米 5 上实现三系统共存时那种纯粹的快乐——即便这并没有什么意义。
在因骁龙 888 的拉胯而从小米 11 转向 iPhone 之后,我已经有 4 年没接触过刷机了。这次有幸拿到一部一加 Ace5 Pro,机主 拜托我帮忙解锁并隐藏 Root,我得以借此再过一把刷机的瘾。
本文是机器快速上手及刷机过程的简要记录。
一加 Ace5 Pro 发布于 2024 年 12 月 26 日,搭载当下最新的旗舰芯片 高通骁龙 8 至尊版,配备 6.78 英寸的直面屏和 6100mAh 大电池,整机仅重 203g,和我手上的 iPhone 比较,轻得相当明显。
既然定位电竞手机,这样的配置倒还算中规中矩。我手上这台是 12GB+256GB 的内存和存储,只是打游戏的话还算够用,即便再安装个微信也不在话下。但要拿微信办公的话得另当别论。
后置三摄采用浴霸式排布,最高像素 5000 万。随手在昏暗的室内拍了一张,感觉色彩比我的 iPhone 要鲜艳一些。
拍照水平太次,看不出所以然来。
不过话说回来,可能是我太久没关注安卓市场,再加上之前基本只接触过小米的缘故,对其他品牌的产品线了解相当有限。我只能顺着「小米数字系列是高端旗舰,Redmi K 系列是中高端旗舰」的逻辑,猜想只划分为数字和 Ace 两条产品线、价格区间也近似的一加,定位应该也差不多。可是查询参数时才惊讶地发现,搭载相同 CPU 的一加 Ace5 Pro 居然比一加 13 的安兔兔跑分高了三万多。只能归结于晚发布的 Ace5 Pro 在芯片调教上要比老前辈更成熟一些。
现在的一加预装的是和母公司 OPPO 一样的 ColorOS,我这台一加 Ace5 Pro 搭载的是最新的 ColorOS 15。这是我第一次使用 ColorOS,新鲜感虽谈不上十足,但也有些好奇心在。
桌面中规中矩,看不出明显的差异,至少和我印象中的 氢 OS 不太相似,毕竟氢壁纸在当时可算是独一档的设计。(我这是什么老古董)
毕竟现在的系统大都趋于雷同,做得太复杂是需要额外的上手成本的。
所以我直奔系统预装应用,倒要看看是不是只有小米才会预装一堆垃圾。
果不其然,大家都是半斤八两。
可当我尝试批量卸载这些应用时,才注意到无法直接在 抽屉模式 下批量卸载它们,提示仅能移除图标。
小米不是这样教我的诶,我记得把这些图标往顶栏拖动,是有一个按钮可以直接卸载的。
翻了翻桌面设置,才注意到 ColorOS 的桌面只有在 标准模式 下,才能批量卸载应用。
抽屉模式下,需要进入应用抽屉,点击右上角「管理」,勾选应用后,才可以批量卸载。
奇怪的逻辑。
预装应用如此,广告尤甚。ColorOS 锁屏默认使用「乐划锁屏」推送垃圾新闻、短视频和广告不说,系统自带应用还有无法关闭的广告。尤其是自带浏览器。浏览器不仅有开屏广告,主页还充满了各种各样低俗的广告。网页无法打开时还会推送低俗新闻,锁屏后重新打开浏览器还会弹一次开屏广告。即便能切换成极简模式,搜索框中也无时无刻不在滚动着广告推送。
乐划锁屏倒是能关,可这浏览器怎么都找不到关闭广告的入口。小米被骂了一顿之后老实了不少,系统广告大部分支持关闭。但一加我 简单 翻了翻,没有看到明显的关闭广告的选项。顶多一刀切关闭通知,或者卸载了之。
不过在试着整理桌面时,意外地发现 ColorOS 的应用文件夹居然支持自由调整大小。不仅可以横向/竖向拉伸,还能变成长条形、方形等不同布局。如果 iOS 能把这文件夹调整方式抄了去的话,我的桌面也能变得好看一些。
对比小米的设计,ColorOS 的处理方法明显更灵活,实际使用起来也顺手得多。
还发现了一个叫做「一加互传」的功能,写着支持 iPhone。我以为会是使用相同协议无感传输的那种,结果还是需要在 iPhone 端安装「O+互联」APP 才能互相传输文件。那和两台设备都安装一个互传应用并没有什么实质上的区别,只是一加自带了这个互传 APP 而已。
还有其他基于机载 AI 的功能,因为需要登录欢太账户,没能体验;另外骁龙 8 至尊版的游戏性能,因为只是解锁刷机,也没有深度测试一番。
最后是把小米 11 刷成 ColorOS 体验了番 AI……
一加解锁 Bootloader 不像小米需要下载专用的解锁工具,直接在「开发者选项」中允许「OEM 解锁」,再重启至 Fastboot 模式,然后使用 fastboot
命令,即可完成解锁,非常简单。
至于获取 Root 权限,我还停留在使用 Magisk 获取 Root 的古早思维,不知道现在是不是有什么新的方式。网上搜索了一圈,都推荐使用 KernelSU 获取 Root 权限。简单翻阅了下官方文档,似乎使用 LKM 模式 修补官方 init_boot.img
镜像的方式,和为 Magisk 修补 boot.img
镜像差不多。按部就班实操了一遍,成功获取到了 Root 权限。
刷机有风险,请做好救砖的心理准备!!!
在开始之前,需要准备以下工具:
init_boot.img
,用以后续修补 KernelSU,传送门
首先,打开设置,下拉至「关于本机」,点击「版本信息」。接着连续点击顶部「版本号」7 次,开启「开发者选项」。
返回设置。下拉至「系统与更新」,点击「开发者选项」,找到「OEM 解锁」并开启,以允许解锁引导加载程序;开启「USB 调试」,以便后续连接电脑执行解锁命令。
将手机通过 原装数据线 与电脑相连接。接着,打开 我的刷机传家宝 ADB Tool,双击 打开CMD命令行.bat
,弹出终端窗口后输入:
adb devices
此时手机应当会弹出 USB 调试 授权,勾选 一律允许 并确认即可。
终端中会输出 List of devices attached
列出当前 adb 设备。
随后,再执行:
adb reboot bootloader
等待手机重启至 Bootloader 模式。
一加的 Bootloader 模式,屏幕左上角有一个显眼的 START 提示,下方以英文标注:
Press volume key to select, and press power key to select.
意为「使用音量按键选择,按下电源按键确认选择」。
以红字 DEVICE STATE - locked 提示设备已上锁。
完整示例如下,仅供参考:
-----------------------------------
START
-----------------------------------Press volume key to select, and press power key to select.
FastBoot Mode
PRODUCE_NAME - sun
VARIANT - SMB UFS
BOOTLOADER VERSION -
BASEBAND VERSION -
SERIAL NUMBER - abcedf
SECURE BOOT - yes
DEVICE STATE - locked
在 adb 工具中输入:
fastboot devices
如果正常如下图输出设备代号,即可继续执行解锁命令。
总之,在 fastboot devices
命令有正常输出后,继续在终端中输入解锁命令:
fastboot flashing unlock
此时终端中应当会提示:
D:\ADB Tool>fastboot flashing unlock
OKAY [ 0.015s]
Finished. Total time: 0.016s
而手机上会出现解锁相关的警告。按 音量下键 选中 UNLOCK THE BOOTLOADER,再按下 电源键 确认解锁。
根据 KernelSU 官方文档 的说明,需要先检查设备是否支持使用 KernelSU。下载并安装 KernelSU 管理器后,打开 KernelSU。
- 如果应用程序显示 “不支持”,则表示您的设备不支持 KernelSU,你需要自己编译设备的内核才能使用,KernelSU 官方不会也永远不会为你提供一个可以刷写的 boot 镜像。
- 如果应用程序显示 “未安装”,那么 KernelSU 支持您的设备;可以进行下一步操作。
咱的设备当然是支持的,估计是一些不常见的古董才会不被 KernelSU 支持。
接着,下载官方原版系统更新包。因为不知道从哪里可以获取到完整包,这里使用的是 大侠阿木 提供的全量更新包 度盘链接。
这里我使用的是 PKR110_15.0.0.800(CN01)
版本,度盘中还提供了数个官方下载链接,如果没有度盘会员可以直接使用官方链接下载。
接着,解压安装包,获取 payload.bin
文件。
随后,下载 payload-dumper-go,并解压 payload-dumper-go_x.x.x_windows_amd64.zip
,打开该文件夹,将上面获取到的 payload.bin
文件移动至该文件夹中。
接着在 该文件夹 空白处右键,选择「在终端中打开」。直接使用以下命令,可以省去将该应用添加到环境变量的步骤:
.\payload-dumper-go.exe payload.bin
boot.img
和 init_boot.img
,可以不必等待全部跑完流程,看到这俩文件被提取出来就可以按 CTRL+C 取消进程,关闭窗口。
本来准备试试 一加全能工具箱,但打开就提示「终端设置异常」,即便恢复为「Windows 控制台主机」也无济于事。想了想也就敲几个命令的事,就没再继续修复环境异常,可能是 Win11 下这个工具水土不服吧。
将 init_boot.img
拷贝至手机中,打开 KernelSU 管理器,点击顶部左边第一个按钮,选择修补本地 init_boot.img
。
KernelSU 会将修补过的镜像文件保存在原镜像同路径,命名格式为 kernelsu_patched_xx.img
,拷贝至电脑备用。
我这台机子目前的系统版本号为
PKR110_15.0.0.800(CN01)
,如果你的版本号和我一致,可以直接使用我修补好的镜像。传送门但仍注意备份数据,并做好随时救砖的思想工作!!!!
解锁完机子,修补好镜像,Root 就很简单了。先开启「USB 调试」并使用 ADB Tool 确认连接正常后,重启至 fastboot 模式:
adb reboot bootloader
测试 fastboot 连接,确保有正常输出:
fastboot devices
最后,将修补过的 kernelsu_patched_xx.img
使用以下命令刷入系统。
fastboot flash init_boot kernelsu_patched_xx.img
你可以参考下图将文件拖动至工具中,不用手敲文件路径。
提示刷入完成后,再使用 fastboot reboot
命令重启系统。
即可在 KernelSU 中查看到 Root 状态。
本来是计划把隐藏的方法完整记录下来的,奈何老弟整活把手机搞到无限重启,只能双清恢复出厂设置。我没有及时保存截图,一切努力付诸东流……
关于 KernelSU 的用法以及隐藏 Root 的方法,这里就不赘述了。可以尝试使用 KernelSU 自带的功能对特定应用还原环境,或是在安装 ZygiskNext 模块后,使用 LSPosed 框架配合 隐藏应用列表 隐藏特定应用。如果仍被检测到 Root,或是提示对系统已被改动,可以尝试安装 PlayIntegrityFix 和 TrickyStore 模块,一般就能摆脱嫌疑。
老弟发现这机子内核版本太高,不适合他搞小动作,准备退货。所以我辛辛苦苦解锁完、折腾完 Root 隐藏,还得全部清空给它锁回去……
上锁的话,需要先在 KernelSU 中选择「永久卸载」 移除 Root 权限和所有模块,还原原厂镜像。
保险起见,再使用完整包更新一遍系统,确保所有文件都恢复为原厂文件。
然后按照解锁的方式进入 fastboot 模式,使用以下命令回锁:
fastboot flashing lock
手机上会弹出提示,选择锁定菜单即可。
重启手机后,如果开机界面没有出现设备已解锁的提示,就说明回锁成功了。
但看说这个操作非常危险,有概率使设备 变砖,我只是运气好才一次成功。大家千万不要没事干解锁回锁反复横跳……
如果因为瞎折腾导致无限重启什么的,可以尝试使用 电源键+音量减键进入 Recovery 模式,尝试清除系统数据,看看能不能再次回到开机引导界面……
文中提到的所有应用和工具:
解锁和 Root 方面的参考:
2025-04-21 18:32:00
fnOS 是基于 Debian 定制的 NAS 系统,初始配置与原生 Debian Server 区别不大。但 可能是出于后续扩展或定制的考虑, fnOS 移除了部分非核心功能,例如不支持为用户创建 home 目录、不支持静态路由配置等。因此,参考《Debian Server 初始化设置 SOP》的流程,我也整理了一份适用于 fnOS 的初始化配置记录,供后续使用。
SOP,即 Standard Operating Procedure,意为「标准作业程序」。
在你成功安装并启动 fnOS、创建第一个存储空间后,即可开始接下来的配置。 但在开始之前,需要做一些基础的准备工作。
首先,开启 fnOS 的 SSH 功能。默认 SSH 端口为 22
,你可以此时将其修改为如 2662
这类 不常见 且 未被系统占用 的端口。
接着,登录 SSH。fnOS 默认禁止用户使用 root
账户登录,因此我们使用安装 fnOS 后创建的第一个用户来登录 SSH。
在终端中使用以下命令登录:
ssh [email protected] -p 2662
进入终端后,先将当前用户设置为变量,方便后面使用:
USERNAME=mikusa
使用 visudo
配置当前用户可以无需输入密码执行 sudo
命令:
sudo visudo
滚动到 最后 添加以下内容,mikusa
为你的用户名:
mikusa ALL=(ALL) NOPASSWD: ALL
CTRL+X 保存退出。
注意要将这段配置加在组规则的后面,以免被组规则覆盖。
fnOS 没有像 DSM 那样有个创建「家目录」的配置项,也可能是 fnOS 并没有计划引入这个概念。因此,为了顺利配置 ZSH,我们需要手动创建用户的家目录:
sudo mkdir /home/$USERNAME
授予权限:
sudo chown $USERNAME:Users /home/$USERNAME
fnOS 默认使用的是清华镜像源,非官方源,因此无需替换。但如果不想用清华镜像,也可以替换成科大或是别的镜像源。
科大:
sed -i.bak 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
阿里:
sed -i.bak 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list
腾讯:
sed -i.bak 's/deb.debian.org/mirrors.tencent.com/g' /etc/apt/sources.list
fnOS 尚不支持在网页端配置静态路由。如果有静态路由的需求,需要手动添加,例如:
sudo ip route add 11.0.0.0/8 via 192.168.31.4
但重启 fnOS 后命令就会失效,因此需要配置成系统服务自启动。
先创建脚本文件:
sudo vim /usr/local/bin/add-static-route.sh
粘贴如下内容并保存,自行更换目标网段,确保目标网段与网关 IP 是你实际环境所需的值:
#!/bin/bash
ip route add 11.0.0.0/8 via 192.168.31.4
添加权限:
sudo chmod +x /usr/local/bin/add-static-route.sh
接着创建服务:
sudo vim /etc/systemd/system/static-route.service
粘贴以下内容并保存:
[Unit]
Description=Add static route
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/add-static-route.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
随后,执行以下命令启用并启动该服务:
sudo systemctl daemon-reexec
sudo systemctl enable static-route.service
sudo systemctl start static-route.service
执行以下命令测试:
ip route | grep 11.0.0.0
如果有类似输出:
11.0.0.0/8 via 192.168.31.4 dev ens18
就说明配置成功,后续重启 fnOS 也可以自动添加静态路由。
安装 QEMU Guest Agent 可以增强 fnOS 与宿主机(比如 Proxmox)之间的交互能力。如:IP 地址可以自动识别、运行状态更加精准,还可以使用「关机」而不是「强制关机」关闭虚拟机。
需要在虚拟机 选项 菜单中找到 QEMU Guest Agent 并设置为 启用,然后在 fnOS 终端中执行:
sudo apt update
sudo apt install qemu-guest-agent
sudo systemctl enable --now qemu-guest-agent
随后在 Proxmox 中重启虚拟机或直接刷新状态,就可以看到具体效果了。
fnOS 的多用户功能我还没搞明白,不如说当前 fnOS 多用户的配置还处于十分早期的阶段,不像 DSM 有一套非常完善的配置流程。因此,本文的用户配置仅针对管理员用户。
创建 .ssh
文件夹并授权:
mkdir -p ~/.ssh && chmod 700 ~/.ssh && cd ~/.ssh
如果你已有 SSH 公钥,将其添加到 authorized_keys
文件中(替换下方内容为你的公钥):
echo 'ssh-ed25519 XXXXXXXXXXXXXXXXX' > authorized_keys
如果没有,可以使用 ssh-keygen -t ed25519
生成,并拷贝私钥至本地保存。
随后修改权限:
chmod 600 ~/.ssh/authorized_keys
接着修改 SSH 配置,关闭密码 & root 用户登录:
sudo sed -ri "s/^#?\s*PasswordAuthentication\s+.*/PasswordAuthentication no/" /etc/ssh/sshd_config
sudo sed -ri "s/^#?\s*PermitRootLogin\s+.*/PermitRootLogin no/" /etc/ssh/sshd_config
可以使用以下命令测试配置是否生效:
grep -E '^\s*#?\s*PasswordAuthentication\s+(yes|no)' /etc/ssh/sshd_config | \
grep -vq 'PasswordAuthentication no' && echo "❌ PasswordAuthentication 未禁用" || echo "✅ PasswordAuthentication 已禁用"
grep -E '^\s*#?\s*PermitRootLogin\s+(yes|no|prohibit-password|without-password)' /etc/ssh/sshd_config | \
grep -vq 'PermitRootLogin no' && echo "❌ PermitRootLogin 未禁用" || echo "✅ PermitRootLogin 已禁用"
如果输出
✅ PasswordAuthentication 已禁用
✅ PermitRootLogin 已禁用
则代表配置成功。
接着新开一个终端,使用密钥方式测试 SSH 登录是否成功。测试成功后,再执行:
sudo service sshd restart
重载 SSH 配置。
安装 zsh 和 autojump:
sudo apt install zsh autojump -y
安装后会提示切换到 zsh,接着使用官方脚本一键安装 ohmyzsh:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
如果网络不顺,可以使用清华镜像源安装:
git clone https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git
cd ohmyzsh/tools
REMOTE=https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git sh install.sh
再安装一些 zsh 必要插件。这里就没有啥靠谱镜像了,请自备代理或自查镜像源:
git clone https://github.com/zsh-users/zsh-autosuggestions.git ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
将插件添加到配置中。先备份一下原始文件:
cp ~/.zshrc ~/.zshrc.bak
追加插件:
sed -i.bak 's/plugins=(\(.*\))/plugins=(\1 autojump zsh-autosuggestions zsh-syntax-highlighting docker docker-compose)/' ~/.zshrc
重载 ZSH:
source ~/.zshrc
可以尝试使用 powerlevel10k 主题:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \
${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
修改 .zshrc
中的主题配置:
sed -i 's/^ZSH_THEME=.*/ZSH_THEME="powerlevel10k\/powerlevel10k"/' ~/.zshrc
重载配置:
source ~/.zshrc
这时会弹出配置流程,全英文的。如果实在不知道咋配置,随便瞎按一通后,下载 C佬 提供的预配置 p10k 替换:
wget -O ~/.p10k.zsh https://gist.githubusercontent.com/Xm798/9afccda2e2b26b913854d36c96438344/raw/9acd0a1316895b6bc5485af043d38025f54926bd/.p10k.zsh
再 source ~/.zshrc
重载 zsh,确认插件与主题已生效。
另外,需要预先安装 Nerd-Fonts 字体,才能获得最佳的图标显示效果。由于我用得不多,使用的是 CodeNewRoman Nerd Font Mono
字体,你可以点击 这里 直接下载压缩包,或从 Nerd Fonts 项目中选择你喜欢的字体。解压后全部安装进系统。
在 Windows 终端中把这个字体加上。
显示效果大概是这样:
如果需要在终端中直接使用 docker
命令,先将当前用户加入 docker 用户组:
usermod -aG docker $USERNAME
才能正常使用 docker
以及 docker compose
相关的命令。
如果不方便直接使用终端通过 SSH 连接 Linux 主机,可以尝试安装 code-server,这样就可以通过网页版 VS Code 远程操控主机。在 code-server 的内置终端中连接宿主机 SSH,即可获得几乎等同于本地 VS Code 的使用体验。
先安装 code-server:
services:
code-server:
image: linuxserver/code-server:latest
container_name: code-server
ports:
- 8443:8443
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- PASSWORD=${PASSWORD} #可选
- HASHED_PASSWORD= #可选
# - SUDO_PASSWORD=password #可选
# - SUDO_PASSWORD_HASH= #可选
# - PROXY_DOMAIN=code-server.my.domain #可选
# - DEFAULT_WORKSPACE=/config/workspace #可选
volumes:
- ./config:/config
- ${WORKSPACE_PATH}:/config/workspace #默认工作目录
- /vol1/1000/docker:/docker #其他需要操作的文件夹都可以挂载进来
restart: always
8443
,有需要可以修改PUID
和 PGID
分别是 1000
、1001
PASSWORD
变量设置一个密码,用于 Web 登录,尽量随机并复杂/config/workspace
,你可以将操作频繁的文件夹映射到这里,例如 /home/mikusa
。这样启动 code-server 后,默认启动的便是这个文件夹你可以在 compose.yml
同目录创建一个 .env
文件,存储这些变量:
PUID=1000
PGID=1001
TZ=Asia/Shanghai
PASSWORD=Your_Password_Here
WORKSPACE_PATH=/home/mikusa
启动 code-server 后,使用设置的密码登录。
如果有反向代理的需求,可以参考以下配置。
Caddy:
code.server.com {
reverse_proxy http://code-server:8443
}
Nginx:
#省略常规配置
location / {
proxy_pass http://code-server:8443;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket 支持
proxy_http_version 1.1;
proxy_read_timeout 3600s;
}
可以使用 code-server 内置的终端连接宿主机,在本地映射到容器内 /config
的文件夹中,找到 .ssh
文件夹。然后像Windows本地连接远程主机一样,新建一个 config
文件,填入主机配置:
Host fnos
HostName 192.168.31.123
Port 2662
User mikusa
IdentityFile ~/.ssh/fnos
把私钥文件复制到 config
同级目录,修改权限,否则会报错:
chmod 600 ~/.ssh/fnos
远程主机配置过 p10k 主题后,code-server 可能因为缺少字体导致显示不正常,解决方法很简单。在本地安装 nerd font 字体后,在 code-server 设置中,添加字体家族名。例如:
'MesloLGM NF','CodeNewRoman Nerd Font Mono'
注意需要使用英文单引号包裹,使用英文逗号分隔多个字体。
以上。
2025-04-01 23:06:00
在购买一台 Steam Deck 之前,我做过一番思想斗争。我认真思考了应该玩些什么类型的游戏,才值得购买一台售价与普通 PC 相当的游戏掌机。
一个是通过 Steam Deck 兼容性验证的 3A 大作。例如《巫师3:狂猎》、《赛博朋克2077》、《艾尔登法环》。这类游戏玩家众多,厂商有针对 Steam Deck 进行额外的优化。尽管画质上有些牺牲,综合体验应该不赖。只是,这类游戏可能还是更适合在大屏幕下游玩(不如说所有游戏都适合在大屏幕才是)。因此,这算不上是值得购买 Steam Deck 的理由。
另一个是精品的独立游戏、小众游戏。像是《空洞骑士》、《奥日》、《战斗方块剧场》,或者是《女神异闻录5》。这些非常适合使用手柄操控的游戏,在 Steam Deck 的性能下,体验肯定完胜 Nintendo Switch。这似乎能支撑我购买 Steam Deck。
再一个则是一些未上架 Steam 的 Windows 游戏。虽说基于 Arch Linux 的 SteamOS 能否畅玩 Windows 游戏还有待验证,但在刷了不少 Proton 转译运行 Windows 游戏的视频后,这个顾虑被立即打消。只要不触及无法在 Linux 底层下运行的游戏,以及那些反作弊严苛的网络游戏, Steam Deck 似乎能成为绝佳的掌上游戏设备。
如此看来,Steam Deck 非常适合用来推 GalGame。
可光是推 GalGame 的话,Windows 系统 + 可触控的大屏幕的 Windows 平板岂不是更好?也许应该买巨硬的 Surface?但用平板玩 Gal 一点也不酷,甚至没有素材用来水文。光是写怎么折腾 SD 的系统都够我达成年度 KPI 了。所以,我必须要找到另一个能够支撑我购买 Steam Deck 的强有力的理由。
下面记录一下在 Steam Deck 上安装《绝区零》的相关流程。
通过 STEAM 按钮,或在 STEAM 菜单中选择「电源」,选择「切换至桌面」,打开 KDE Plasma 桌面环境。
可以参考本文进行一些 Steam Deck 的预设配置。
目前米家登陆 PC 平台的游戏,即便可以直接启动,后续也需要通过 米哈游启动器 方可更新,因此需要先安装启动器,再下载游戏。
由于在 SteamOS 中添加的每一个 Windows 应用都有属于自己的虚拟的独立空间,不能投机取巧直接将 PC 端的启动器文件直接复制粘贴到 Steam Deck 中,否则会影响后续游戏大版本更新。因此,请按部就班地安装启动器。
如果已经安装了浏览器,那么打开浏览器,访问 https://launcher.mihoyo.com/ 下载米哈游启动器。
如果还没有安装浏览器,那么在开始菜单中,选择系统一栏,打开 Discover 软件管理中心。
搜索 Chrome 并安装。
接着,在浏览器中搜索米哈游启动器,下载安装包。
随后,打开 Steam,点击左下角 + 选择「添加非 Steam 游戏」。
在弹出的窗口中点击「浏览」。
Chrome 的默认下载路径为 /home/deck/Downloads
,即左侧常用位置中的下载。找到刚刚下载的启动器 .exe
程序。
点击「添加所选程序」,将启动器安装程序添加至 Steam 游戏库内。
接着,在 Steam 游戏库内找到刚刚添加的米哈游启动器,点击设置按钮,选择「属性」。
找到「兼容性」一栏,勾选「强制使用特定 Steam Play 兼容性工具」,选择「Proton Experimental」。
随后启动安装程序,按默认设置安装即可。安装过程中会自动安装一些缺失的必要组件。
待安装完毕后,不要点击开启启动器,先关闭它。
返回 Steam 游戏库,找到启动器,点击设置按钮,选择「快捷方式」。可以看到 目标 一栏内是启动器安装包的路径,而非安装后的启动器本体的路径,需要修改为正确的路径;另外,起始位置 一栏也需对应修改。
这时候就体现出键鼠的必要性了,我保证你会因为无法对着触摸屏准确选中启动器路径而抓狂。
所以,要么连接键鼠,要么使用 KDE Connect(参考本文使用 KDE Connect 连接 Steam Deck 的方法),复制启动器路径。
首先,使用 Ctrl + H ,显示隐藏文件夹 .local
。
接着,一层一层地打开 .local/share/Steam/steamapps/compatdata/
,点击 修改时间 按时间顺序排序,最新的这个 2843999894
文件夹便是安装米哈游启动器所在的文件夹。
继续深入。打开 2843999894/pfx/drive_c/Program Files/miHoYo Launcher/
,可以看到名为 launchr.exe
的启动器程序就安静地躺在这里。
接下来就好办了。右键启动器程序,选择 复制位置。
启动器路径便被复制到了剪切板中。
/home/deck/.local/share/Steam/steamapps/compatdata/2843999894/pfx/drive_c/Program Files/miHoYo Launcher/launcher.exe
随后返回 Steam 库,修改 目标 和 起始位置 的路径。
目标中的路径为具体启动的程序,需要加上 英文引号 ""
。即最终填写为:
"/home/deck/.local/share/Steam/steamapps/compatdata/2843999894/pfx/drive_c/Program Files/miHoYo Launcher/launcher.exe"
起始位置为启动器程序所在的文件夹,无需引号。即:
/home/deck/.local/share/Steam/steamapps/compatdata/2843999894/pfx/drive_c/Program Files/miHoYo Launcher/
另外,可以将程序名修改为 HoyoPlay,方便后续使用 SteamGridDB 搜索相关图片。
即可正常启动米哈游启动器。
安装游戏有两种方法。
一是直接在启动器内下载绝区零,这个过程可能比较漫长。点击下载游戏,按默认路径安装即可。
二是复制粘贴现有的已经在 Windows 内安装的游戏。需要将游戏复制到启动器所在的文件夹内:
/home/deck/.local/share/Steam/steamapps/compatdata/2843999894/pfx/drive_c/Program Files/miHoYo Launcher/games/ZenlessZoneZero Game
然后在启动器内选择 定位游戏,手动选择目录。
会自动弹出虚拟环境内的文件管理器,像操作电脑文件夹那样依次打开 C:\Program Files\miHoYo Launcher\games\ZenlessZoneZero Game
,确认后即可自动定位到游戏。
校验一遍游戏即可。
由于目前《绝区零》还未对 Linux 有所限制,因而无需任何额外操作,直接就可以在桌面模式下,通过启动器测试启动《绝区零》。
只是桌面模式下的《绝区零》会非常卡顿。
添加到 Steam 库的方法和添加启动器一样,只是这回不用修改什么启动路径了。打开《绝区零》游戏文件夹,找到 ZenlessZoneZero.exe
,右键选择 Add to Steam
即可。
随后在 Steam 库内将游戏名修改为 ZenlessZone Zero
,就可以啦!
切换至游戏模式后,可以使用 SteamGridDB 简单地美化一下 Steam 库的游戏界面。
随后,就可以尽情地游戏啦!
后续请通过米哈游启动器完成游戏更新。
正如我预想的那样,《绝区零》确实非常适合在掌机上游玩。即便游戏对显卡的要求不低,在 800P 下也可以用中等画质跑到平均 50-60 的帧数。只是游戏不是很好玩,开服玩了一个月便弃坑了。
至于《原神》和《崩坏:星穹铁道》,我也测试过了,均不能正常启动。前者的手柄体验我觉得非常糟糕,且反作弊严格,即便入库后可以启动,也会因为环境异常而被强制登出。《崩坏:星穹铁道》与《绝区零》一样,在手柄与键鼠之间切换流畅,风格也适合在掌机上游玩,只是反作弊也相当严格,根本无法启动。
原神键鼠操作习惯了倒是无所谓,但是《崩坏:星穹铁道》不能在 Steam Deck 上游玩非常可惜。
2025-03-16 00:11:00
关于「游戏管理器」,你可能多少听说过 Playnite 的大名。这是一款 开源 的游戏管理工具,你可以用它链接来自 Steam、Epic 等 诸多平台 的游戏。你可以使用 Playnite 整理安装在电脑中的游戏,或是记录某款游戏的游玩时长,或者纯粹地为了满足收集的需求,将想玩的游戏提前导入到游戏库中。Playnite 会使用精美的封面将这些游戏集中展示在主页,并在详情页内附上游戏相关的信息。这样一来,你的桌面上只需要保留 Playnite 的快捷方式,就可以启动 任意 平台的任意游戏了 (虽说有时候关联的游戏平台还是需要打开)。
你或许会觉得,既然大部分游戏都是在 Steam 上购得,Steam 也可以做到导入外部游戏、编辑游戏封面,为何不直接使用 Steam 当作游戏启动器呢? 这当然可以我的朋友。只是,在 Steam 上编辑游戏封面,需要自己准备好这些资料——即便可以通过网络在现成的游戏数据库中搜索到这些资料,但 Steam 也不支持修改游戏介绍。
这时,Playnite 的优势就体现出来了。在其丰富的扩展生态的辅助下,你可以十分轻松地从游戏数据库中获取游戏相关数据。要做的只是安装对应数据库的扩展程序,再简单配置一番,Playnite 就可以在导入游戏时通过这些数据源直接抓取游戏资料。无论是游戏介绍、官方网站链接,亦或是封面图片。
可即便如此,Playnite 还是无法满足部分像我这样喜爱 GalGame的玩家。这种起源于东方日出之国的独特的游戏类型,与大多数游戏有所不同,其核心并非战斗、解谜或策略,而是通过丰富的文本、精美的插画以及动人的音乐,带领玩家沉浸于一段段细腻的情感故事中。另一方面,玩家在游戏中扮演的角色往往需要通过对话选项来影响剧情走向,而每个选择都可能导向截然不同的结局。这种多分支的设计使得 GalGame 的存档管理变得尤为重要——玩家需要在关键节点保存多个存档,以便回溯并探索不同的故事线。但 Playnite 并未针对 GalGame 的特殊需求进行优化,也没有这方面的扩展程序(也可能是我没发现)。
所以,今天的主角并不是 Playnite,而是另一款名不见经传的应用:Vnite。
Vnite 是一款专为游戏爱好者设计的多功能的游戏管理软件,基础功能与 Playnite 类似,但侧重于 GalGame 游戏的管理体验。在入库方面,Vnite 支持从 Steam 中一键导入至游戏库,并保留游戏时间;支持通过扫描本地文件夹入库。在元数据方面,支持从多种数据源1 自动获取游戏元数据。此外,Vnite 还支持按开发商、标签等条件动态分类游戏,并通过系统链接唤醒并启动游戏。
想必你也猜到了,Vnite 的「V」,是 Visual Novel 的「V」。针对 GalGame 玩家的特殊需求,Vnite 提供了多项贴心功能。 例如,按次记录的计时器支持记录单个文件或文件夹的游玩时间;细致的报告功能让玩家能够轻松回顾游戏历程;多样化的启动方式更是方便实用,支持与其他程序联动,如一键使用 LE 转区启动、模拟器启动等。
最重要的是,Vnite 支持通过 WebDav 实现多端云同步。 无论是游戏数据还是软件设置,都可以在不同设备间无缝同步至云端,确保玩家随时随地都能继续自己的游戏之旅。
目前,Vnite 仅支持 Windows。访问 Github Releases 下载最新版本安装包,根据提示完成安装。安装完毕后,即可启动 Vnite。
但在开始之前,让我们先认识一下 Vnite 的界面。
这里我简单地将 Vnite 的界面从左到右划分为三个区域:菜单、索引和游戏。
菜单从上到下有六个图标,依次为:
索引包含搜索和游戏列表。
最最重要的自然是我们的游戏库。顶部为最近的游戏列表。首部游戏使用尺寸较大的游戏背景作为封面,可以很直观地告诉你最近打开过哪些游戏。
看!这井井有条的布局,看!这恰到好处的模糊!Vnite 现代风格的用户界面,是我选择使用它的原因之一。
接着是我的收藏,在游戏数量繁多的时候非常有必要。你可以将心仪的游戏添加到任意收藏夹内,然后在这里快速打开这些游戏。
对 Vnite 的界面初步认识之后,就该微调 Vnite 的设置了。之所以说是「微调」,是因为Vnite 的需要设置的内容其实不多。
个人建议需要配置的项目如下:
另外,可以在菜单栏通过图标快速查看 Vnite 的数据 同步状态 。
C:\Users\{username}\AppData\Roaming\vnite\app\database
文件夹,但你可以开启 便携模式,这样数据会保存在 Vnite 安装文件夹下 \portable\app\database
目录内。接下来,就该做我们的正事了:添加游戏。
从启动 Vnite 的那一刻起,屏幕中央的 加号 就指引着你动身添加你的第一个游戏。
首先,我们需要填写 游戏名称 或 游戏 ID,以便通过 Steam 搜索到游戏数据。
如果是使用名称,可能会搜索到多个游戏。
选择你想添加的正确的游戏,Vnite 会在 游戏 ID 一栏自动填充游戏对应的 ID。
1144400
便是游戏ID。然后点击 识别,等待 Vnite 获取游戏封面。
选择一张图片,点击确定后,等待游戏添加。这个过程十分缓慢,可能只需数秒,也可能需要等待半分钟。总之在弹出游戏 添加成功 的提示后,返回主页即可看到添加的游戏。
一个个添加游戏是不现实的,所以在本地存在大量游戏的前提下,请使用批量入库。Vnite 会扫描指定 库文件夹 内的游戏文件夹,批量搜索游戏。
选择想要添加的游戏,点击 添加 按钮,等待游戏数据抓取。批量扫描读取的是文件夹的名称,因此文件夹名需要尽量准确。
但你可以修改获取到的名称,重试一次。如果匹配到游戏ID,那么游戏便能继续添加了。
待提示游戏添加成功后,即可返回主页查看添加的游戏。
Vnite 目前仅支持从 Steam 游戏库中批量导入游戏。点击左侧边栏添加游戏按钮,选择 从第三方导入。填入你的 Steam ID 获取游戏列表。
Steam ID 可以通过访问 https://store.steampowered.com/account/ 获取。或是在 Steam 客户端右上角,点击 账户明细 获取 ID。
填入 ID 后,点击 获取 按钮获取游戏列表。获取速度视网络状况而定。待列表加载完毕,勾选想要导入至 Vnite 的游戏。
但不能一次导入过多游戏,否则可能会导入失败。而且因为添加游戏缓慢,可能会被迫在这个界面卡好久……
你还可以反其道而行之,不使用任何刮削器,直接添加本地游戏。
但这样添加的游戏没有任何元数据,不是很好看。因此除非数据库搜索不到,或是网络不畅,否则不太建议这么添加。
这还没完!在上一步添加的游戏,需要进一步编辑才行,因为还未补全游戏路径;另外,也存在添加过程中因网络动荡导致元数据抓取失败的情况,可能是标签,也可能是图片。
点击游戏详情页右侧的设置按钮,找到启动游戏的 exe 应用程序。
如果是 Steam 游戏,可以在 运行 中切换成 Steam 启动,Vnite 会自动填充形如 steam://rungameid/steamid
的启动链接。这样在 Vnite 中启动的 Steam 游戏,和直接在桌面点击游戏图标的效果是一样的。
添加游戏的道路不可能一帆风顺,所以补全缺少的图片是家常便饭。
在 媒体 中查看并修改缺少或不喜欢的游戏图片。
你可以使用快捷操作,从文件或在线链接中导入图片,或是裁剪现有图片。
或者,使用 搜索 功能,Vnite 支持从 SteamGridDB 中搜索图片。
但也可能出现一个问题:明明是 Steam 的游戏,使用 SteamGridDB 却搜索不到图片。
不要惊慌,目前我遇到的情况有两种:
数据问题:游戏太过冷门 / 国产中文游戏 / 其他原因,导致没有人上传图片至 SteamGridDB,就像这样:
解决办法倒也很简单:点击左上角的 View Original Steam Assets,手动复制图片链接。
或者催更作者,让他加上直接从 Steam 抓取图片的功能(小声)。
简介、标签、基本信息、相关网站等文字内容,可以点击右侧的 编辑 图标修改。简介支持 HTML 语法,添加多个标签或平台的时候,用英文逗号 ,
隔开。
添加过游戏,就可以使用 Vnite 记录游戏历程啦!启动游戏的方法不用我多说吧?让我们来看看其他值得注意的功能。
在通关或是搁置一款游戏后,可以在游戏详情页修改游玩状态,编辑游戏评分。
搜索功能 目前支持通过游戏名、开发者、发行日期等元数据进行搜索。
游戏列表 可按开发商、收藏、类别、游玩状态进行 分组 查询。
顺便一提,列表是可以收起隐藏的。
游戏相关的 信息 以最大的面积展示。
在 概览 一栏,你可以查看游戏的简介、基本信息、相关网站以及标签,并通过每个模块右上角的 编辑按钮 自行修正补充。
在设置 存档路径 的前提下,游戏过程中的 存档 会在 退出游戏 后自动保存,你可以为某一时间段的存档添加备注。
回忆 这里官方并没有说明具体用法,你可以在这里保存游戏截图,或是针对某一部分内容作具体的注释、吐槽,或抒发感想。
例如,可以为某段「回忆」回忆添加封面或文字,文字支持 MD 语法。但目前并不支持直接在文本内添加图片,只能使用外部图片链接。
点击左侧菜单栏 记录 按钮查看游戏记录,会将近一年的游戏时间以条形图的方式列出。我才刚开始使用 Vnite,有朝一日一定会填满这里的!
也可以查看游戏库中最高评分、总游戏时间、最多次数、最近运行的游戏排行。原神启动!
通过点击主题按钮可以快速切换 白天 / 夜间模式 。
对 CSS 有一定涉猎的话,也可以尝试定制属于自己的 Vnite 界面。
关于 Vnite 的使用及其功能,就介绍到这里了。这是我使用过的最好看的游戏启动器,(我也就用过两款游戏启动器,一款是Playnite,另一款是Vnite。)我迫不及待地想让大家体验一下这款应用程序,所以花了一点时间写了这篇文章。希望能在 Vnite 的帮助下,替玩家更好地管理本地或不存在于本地的游戏。但需要提醒大家的是,Vnite 目前还存在许多不足,比如添加游戏缓慢、图片数据源单一、游戏元数据无法二次抓取,云同步功能也还有改进空间。因此在使用过程中,可能还是需要诸位先克服这些困难。
不过也不要怕。如今的 Vnite 已经比我刚发现它的那会儿要完善得多了。我大概是在 1.2 版本(2024年9月份)的时候注意到的 Vnite,早期的 Vnite 功能比较简单,备份只能上传到 Github,体验比较一般,添加游戏也没现在这么顺畅,元数据源几乎没有,上手还有一定的门槛,完全比不上隔壁百花齐放的 Playnite。可只是短短数月,Vnite 就已经迭代到了 2.x 版本,从「堪用」进化到了「好用」。甚至在不远的未来,还有功能更加完善的 3.0 版本将问世,上面这些问题不仅能一一得到解决,可能还会有其他惊喜等待着大家发现!
那岂不是到时候 Vnite 更新,我这篇又要大改?啊……不要啊,我写不动了(
还等什么?快下载 Vnite,即刻充实自己的游戏宝藏库吧!
另可加入 Telegram 群组参与讨论:Telegram 群组 。
2024-12-30 23:51:00
中央空调从头顶倾泻下来冰冷的风,仿佛是要刺进骨头一般,我不由得捂紧了衣服。尽管现在已经是 6 月,气温似乎还是有些低了。从 19 年底到现在已经过去了一年多,空气中还是弥漫着一股散不尽的消毒水的气味。一眼望去,大家都严严实实地戴着口罩,盯着手机,任凭播报列车时刻的声音在候车大厅飘荡着。这一幕似曾相识。两个月前,我也是在这里等着北上的列车,那时的我还做着闯荡大城市的美梦。但只是十八天,就让我真切地意识到自己不适合也无力在这样的大都市下生存,于是逃也似的回到了小山村。可家里蹲的日子太过空虚,我没有控制自己的能力。所以两个月后,我又只身前往另一座大城市。但就像不知道为什么要去上海一样,这次同样是充满着未知的旅程。无奈怎么也想不出来会是什么样的目的地,于是我决定闭上眼睛小憩一会。
忽然听见身边人起身的动静,我也赶忙拎起行李跟上进站的队伍。安检员只是站在闸机边上双眼无神地看着前方,大家都默不作声地隔开一定距离有序进站。上车后我才注意到,这辆直达广州南站的列车上仍是人头攒动,待行李放稳妥后,一切就又回到我所熟悉的列车上的场景:熟悉的乡音,操着粤语对着手机念叨着什么的商人,以及外放抖音笑得乐呵的孩童,当然,还有泡面的味道。我松了口气,幸好车上的氛围没有候车时那么严肃紧张。于是放下心来,美美地睡了一觉。
等到再次回过神来,已经到广州了。
在正式吃肠粉之前,我特地向广东的朋友咨询了关于正宗的肠粉的定义。他只是说要像“抹布”一样。奈何我绞尽脑汁也想象不到抹布的滋味,所以只能凭自己的感受对第一次的肠粉下结论。
吃肠粉的地方位于公司出门左转五百米远的一处小吃摊。若是平时肯定没机会过来吃上一顿的,毕竟一日之计在于早晨充足的睡眠。但室友大爷说一定要让我“见识一下”,还说“这一顿他包了”,盛情难却我也就只能跟了过来。
肠粉五块钱,加蛋加肉加香肠的话八块,外带一杯新鲜豆浆。豆浆是不要钱的,喝完了可以续杯。老板拉开蒸笼托盘,摊上一层米浆铺开,再塞进蒸笼里,不一会儿肠粉就熟了。卷起来撒上佐料,加肉加蛋,切成一块块合适的大小,往碟上一摞,热腾腾的肠粉便完工了。这让我想起了鸡蛋饼。似乎除了原料不一样,流程好像都是差不多的。
就同沙县小吃拌面用的花生酱一样,肠粉的灵魂也是酱料。酱料不一样,味道可能就会天差地别。摊主的酱料调得不错,往肠粉上淋满厚厚一层,酱汁顺着肠粉的褶皱渗透进去,再趁热一口吃下。肠粉糯糯的口感,加上鸡蛋的香味,混合着酱汁的清甜,随即饮下一口豆浆。味道好极了!
只是抹布的味道还是没感觉出来。囫囵吃完后回想起来,可能是指肠粉的形状?搞不明白。
好像说到广州美食,就是早茶粤菜之类的,我姑且也在村口往前不远的市场里面的小摊上买了瓶本地凉茶试试。正不正宗不知道,肯定是和加多宝王老吉之余的不太一样。光是“凉茶其实是热乎的好喝”这点就有些超纲了。
味道有点像中药,或者说是止咳糖浆的味道,至少是有罗汉果的味。
一提到夏天,就少不了清脆的风铃、聒噪的蝉鸣、湛蓝的天空,以及一望无际的白云,还有耳畔呼呼的风扇。不过广州的夏天只有风扇怕是不够,唯有空调才能战胜这个夏天。
广州的云格外地多,并且总是厚得吓人。像棉被似的一团挤在一起的云,或者是偶尔会想着就这么往云上一扑,那得有多舒服。
公园我去了两处,一处是雕塑公园。倒不是很远,某天休息日一早,室友大爷拎着我去的。坐公交周转约莫半个钟头,在不知道什么站下车,走过不清楚什么路口,就到公园了。大概是因为免费,所以条条大路都能通向公园。之所以这么说,是因为后来在网站上看到了雕塑公园的正门。明明逛了有一两个小时,我却没有路过这里!
十点钟的公园人还不是很多,也许是昨晚下过雨的缘故,路旁的行道树还挂着水珠。初夏的阳光透过层层枝叶,在地上投射出好看的图案来。但风一点没有,没走几分钟,背上就渗出汗来。大爷热得直扇扇子,我也有想脱下衣服的冲动,只好沿着小路往公园深处走去,希望能找到荫蔽的地方乘乘凉。偶尔与两三个驻足观赏雕塑的游客擦肩而过。顺着视线望去,都是有些奇形怪状的一眼看不出来立意的塑像。好在每座雕像底下都贴着一块写有名字、作者和简介的铜色牌子,有些则是直接刻在石头上。
不过鲁迅先生我还是认得的,会不会每座雕塑公园都有先生的塑像?
另一处则是越秀公园。毗邻雕塑公园,广州博物馆也在园中。乘坐地铁 5 号线往公园前方向,经过广州火车站,下一站就到了越秀公园。越秀公园要比雕塑公园大的多得多,8 月份也是旅游旺季,游客量比我在雕塑公园见到的要翻上个几倍。随处可见扭动着身躯跳舞的大妈,光着膀子晨练跑步的大爷,推着婴儿车从人群中穿过的年轻人,还有扛着大炮打鸟的老头,热闹得像个集市。感觉人挤人不是什么好去处,我只能顺着山间小路走到人流量少的地方——博物馆确实没什么人,毕竟光是门票就要十块钱,只是能观摩的东西比较少,上楼远眺中山纪念碑倒是不错。
「有了猫之后,手机相册里就只剩猫了」,这大概和「有了液压机后,家里只剩液压机」有着异曲同工之妙。在到广州的第二天,我发现了这只匍匐在墙边的黄纹花猫。第三天,我成功和猫打成了一片。猫是典型的田园品种,长相不大好看,四肢雪白,背上一片橘色,尾巴不知道什么原因只剩半截,腹部一排乳头清晰可见。按同事的说法,这猫是去年流浪到这附近,被保安大爷喂饱后定居在此处的。一块来的有两只,但过完年回来就只剩她一只了。
也许是流浪吃过太多苦,也许是正值哺乳期,即使是我这样的陌生人也格外亲近,任凭我从上到下抚摸个遍。在这之前我只撸过狗子,这是我人生中撸到的第一只猫。我这个人很简单,你愿意让我摸,我肯定不会亏待你的。所以我买了猫罐头和猫粮。
猫喜欢在下午两点多的太阳高照的时候,蜷缩在门口的树桩上睡午觉。我也觉得这是个睡觉的好地方,大小正好够她一个猫。
猫有一次不知道哪里叼了只老鼠,正好被我撞见。她看了我一眼,就蹲角落里加餐去了。那老鼠是真大,猫好样的!
在广州的一年半,猫产了三次崽。刚到广州的时候是第一次,三只还是四只几乎全军覆没;过了四个月,在某个雨夜猫出去鬼混,又成功被外面的野猫搞上,但只剩一只存活。
猫二代倒是争气,也是在某个阴雨连绵的夜晚嚎叫了一宿之后,在来年的初夏产了八只崽。没人想得到二代的小身板能容纳下八只猫崽。
这回我们及时送走了其中的三只。一只被一个自称是开小卖部的男人领养走了,说是要养只猫看家护院。没有后续。
另外两只被一对小情侣领养。女主人本来是想要小黑和小白,但我有私心,同事也不舍得小黑走,想看着小黑长大。于是最终带走小白和另一只橘猫。我很后悔没有让他们带走小黑,因为在两个月后,小黑也不见了。
而在年底,随着疫情的尾声,经营不善的公司也迎来了倒闭。更糟糕的事情是,猫在某一天集体中毒,二代包括她的孩子全部中招,只剩一只三花存活。我至今不知道是谁下的毒手。离开广州的那天,我把仅剩的半袋猫粮全倒了出来。三花非常怕人,总是躲我躲得远远的。小家伙,这次可算是被我拍到了。长大的话应该会是很帅气的吧。
两年过去了,不知道猫过得好不好。我很想她。
本文是我于离开广州两年,在上海工作了半年后,从草稿堆中翻到的零碎的小记录集合而成的水。似乎原本的计划是夏天单独一篇,猫再另起一篇的。可是时间过去得太久,记忆已然出现了偏差。即便我再能水,也全然不记得当时是怎样的心境了。我只能从记忆的边角里扣出点料来,再添油加醋拼凑一番。毕竟我现在的状态有些糟糕,什么都写不出来。不管是开箱也好,生活也罢,甚至是有趣的软件,都写不出来了。生活是规律的两点一线,工作是枯燥的重复劳动,日常只有上班和下班,没有任何值得分享的事。有时候晚上想着写点什么,看着空白的编辑器,再看两眼手机,一回神,已经十点了。所以这篇加上前面那篇,就是最近半年的我所能写出来的极限。如果在阅读的时候发现有什么语句不通顺的地方,还请无视过去。
就把这篇当作我2021年的年度总结吧!总之,祝看到这里的朋友在即将到来的 2025 年,事事顺心,新年快乐。
2024-12-27 01:05:10
趁 Steam 夏季大促,我购买了《Riddle Joker》。这是柚子社的第十部作品,于 2018 年发行。距今虽有 5 年之久,但对我来说不算是太老的游戏,毕竟简体中文版是在 2020 年 12 月才发布的。最近陆续玩了柚子社的《千恋万花》和《魔女的夜宴》,这两部作品游戏体验都还不错,按发行顺序接着玩《Riddle Joker》也是正正好。
这一作的世界观建立在「超能力」上,设定是人群中存在着可以使用特殊能力的「星幽使」。星幽使是由于大脑中的某一部位与普通人不同,变得可以更轻易地感知并操控环境中存在的「星幽粒子」,继而实现超能力。当然,普通人也可以在特殊状态下影响星幽粒子并激发能力,只是没有星幽使那么敏感。
尽管星幽能力已经被大众所认知,但部分使用星幽能力进行违法行为的犯罪分子引起了普通人的恐慌和歧视,使得星幽能力目前还未被社会广泛接受,甚至还出现拥有能力的孩童被遗弃的现象。男主「在原晓」和他的义妹「在原七海」就是这样的存在。他们现在隶属于国家级的秘密谍报机构「情报局特勤小组」,这个机构主要是委派星幽使去处理一些滥用星幽能力的案件。而他们的养父「上原隆之介」是这个特勤小组的「室长」,即兄妹俩的直系上司。
故事始于一次普通的案件。在主角俩解决了一起星幽使盗窃事件后,警察从犯罪分子身上发现了使用星幽能力制造的假钞。为避免假钞的泛滥影响星幽能力者的形象,他们被要求转学进「橘花学院」——一个供星幽使就读、研究星幽能力的专门学校——并侵入学校的数据系统「AIMS」搜索存在制造假钞能力的嫌疑人。在处理假钞案件的过程中,又意外发现了存在贩卖星幽使的团体,这些团体背后又有着复杂的利益关系;此外,针对星幽能力的研究也有着不可告人的秘密……
总之,《Riddle Joker》的世界框架,说白了就是一个有着超能力的世界,没什么稀奇的。可围绕「星幽能力」这一设定的展开还挺有意思,虽说不上有多严谨,但各种伏笔随着故事的发展而一一揭晓,游戏过程中能注意到的话,是能为平淡的日常剧情增添一些乐趣的。只不过,本作的共通线有些过于简短了,只是三章就可以进入个人线。再加上三司绫濑的个人线……剧情有些微妙,如果只是冲着她去的话,可能会对整体游戏产生「啊…这个可不太行啊」的坏印象,继而没有继续推进其他支线的动力。
在共通线中,入学的当天,明星学生兼学生会长「三司绫濑」接待兄妹二人走完了入学流程。当晚,因采访晚归的绫濑被突然出现的狂热粉丝拦住,老师替她解围让她先回宿舍。可回去的路上,她又被埋伏的黑衣人绑架了起来。而另一头正在秘密执行任务的晓听见警报声误以为是自己触发的,来到室外调查正好撞见了被抓住的绫濑。情况紧急晓顾不得隐瞒身份,出手制服了黑衣人。可先前击倒的黑衣人突然醒了过来,给了绫濑胸口一刀。这下把晓吓得不轻,赶忙解除隐身检查绫濑的伤口。好在绫濑垫着的胸垫替她挡了那一刀,万幸没有受伤。但晓也意外知道了绫濑的大秘密:她「丰满」的胸部是伪造出来的。
绫濑见秘密暴露顿时就乱了思绪,一反大小姐的端庄开始大喊大叫,把老师和警卫引了过来。晓担心身份被发现,向绫濑谎称是「专门来学校保护她的!」并嘱咐她不要将自己的秘密说出去就逃之夭夭了。晓报告了这次行动,上级综合绑架事件与黑衣人背后可能存在的势力,决定让他真的去保护绫濑。于是,晓和绫濑接触的次数逐渐增加,两人在日常互动中插科打诨。
后来,伪钞事件成功解决。接着,学园迎来了「星幽祭」:一个用于展示星幽使的正面形象和星幽科技研究进展的校园祭。校园祭不仅向外界开放,外部人员还可以随意出入宿舍。也就是说,不排除会有人利用这次校园祭展开犯罪行动的可能。这给晓的保护任务增加了难度。绫濑的看板娘属性不能随便将她藏起来,校园祭也不能就地取消。最终,主角一行决定在祭典上开一个「泳装小吃店」,绫濑被安排在后厨以保护她的安全。
另一边,特勤也想借绫濑钓出那些绑架她的犯罪团体。于是,晓利用制造伪钞的能力假扮成绫濑在明处与犯罪分子周旋,组织在暗处保护他,成功端掉了这次的犯罪团伙。后来的调查结果发现,绑架绫濑的也是政府的秘密机构。只是立场与特勤相反,属于「管控派」。他们排斥星幽能力,并想借绫濑的名气向公众散发星幽能力的负面消息。
绫濑平安无事,为星幽祭献上闭幕的一曲后,共通线部分结束。
如果在共通线中多选择与绫濑有关的选项,则可以进入她的个人线。
星幽祭结束后,晓决定找绫濑慰劳她两句,却意外撞见她与理事长交谈着什么。另一方面,由于在与黑衣人对峙时被砍伤,虽然经七海治疗愈合了伤口,但还是因失血过多出现了贫血的症状,第二天晕倒在绫濑面前。柿本老师为晓做了全身检查,发现他就只是贫血而已,并没有其他症状,但还是给了他一些药物。不过晓觉得既然身体没什么大碍,就没有吃药。
由于抓到了犯罪团伙,晓也就没有必要再保护绫濑了。可晓突然不在身边,让绫濑感觉很不适应。某天正常进行抓捕行动后,晓接到了绫濑打来的电话,另一头却只是怯怯地直呼「救命」。这把晓吓得不轻,赶忙爬墙翻进绫濑屋里。结果只是因为她一个人半夜玩僵尸游戏怕的不行,并没有什么要紧的事。
既然来都来了,晓就帮绫濑玩起了这恐怖游戏。孤男寡女共处一室,再加上因恐怖游戏而过多分泌的肾上腺素让两人心跳加速。感情就这样逐渐升温,继而告白,进入喜闻乐见的H环节。
剧情到了这里,才开始进入白热化阶段。在上一次的行动中,出现了情报中只有「隔空取物」、逃跑时却能使用「瞬移」能力的星幽使案犯,这让隆之介颇为好奇。按现在学术界的定论,即便能力熟练度可以提高,能力本身也不会有质的飞跃,是不存在可成长的能力的。但也有另一个传闻,能力得到强化的同时,也伴随着能力失控的情况。隆之介让晓在学校里打探一下。
正当晓找到机会请教柿本老师时,理事长突然出现。原来是外界媒体对晓在学园祭时使用能力制造的水制家具很感兴趣,希望晓能召集伙伴再现一次,并接受采访。同时安排了柿本陪同。在这次采访中,柿本老师再次向晓重申了「能力是先天的」这一基本原则,并追问晓为何对此感到好奇,晓只好假意自己有想要研究「能力强化」的意愿。
过了几天,前段时间就说头疼的路人甲同学相模,在早上去往医务室后就再也没有出现,紧接着又传来他被送往专门医院住院治疗的消息。晓他们有些担心,可老师又不愿意说清到底是在哪家医院,探病也成问题。与此同时,先前抓捕的「隔空取物」的星幽使也在看守所中离奇消失,一同消失的还有与他有关的所有情报。这让隆之介十分苦恼。于是,兄妹二人当晚再一次入侵学校的数据系统,却惊人地发现不仅相模同学的最新档案记录为「下落不明」,连先前留意过的其他星幽使的档案也都是如此。兄妹二人这才察觉到学校的数据系统安防极为薄弱,可能为的就是更方便的篡改档案,并怀疑理事长可能是这些失踪事件的幕后主谋。
晓如实汇报了上述猜测。隆之介认为连续失踪事件是管控派所为,失踪的学生可能还在校内。为了进一步验证这一结论,他安排七海调取学校监控。公共楼道的监控都没有相关记录,而科研楼的监控安防措施又比较到位。晓假装头晕让柿本为自己做一些贫血方面的检查,顺便以找准时机在她的电脑上动手脚。为了有充足的时间让七海黑进系统,晓又让柿本重复了一遍有关「能力强化」的课程,这加重了他对理事长的怀疑。无论是能力强化,还是让普通人短暂获取星幽能力,这所学校似乎都能做到。检查结果显示晓十分健康,但柿本还是给他安排一些药物服用。
于是,在成功黑进系统、摸清了科研楼的内部结构后,兄妹二人潜入了楼中的隐藏房间。现场令他们大为震惊,这里摆放着一排隔离舱,隔离舱中全部都是失踪的星幽使,包括相模。
一旁的资料则显示他们都是「能力暴走」事件的当事人。能力暴走极端情况下不仅伤及无辜,还会危及使用者自身的生命,这才被学校秘密冷冻了起来。
看来学校确实有着不可告人的秘密。恐慌之余他们抓紧拷贝现场的资料,却被突然出现的理事长逮个正着。但出乎意料的是,理事长并没有囚禁二人的意思。原来,早在兄妹二人转学到这所学校、绫濑身边相继发生事件起,理事长就怀疑他俩的身份。这次意外被发现了秘密仓库,更是验证了二人的不一般。只是猜测兄妹背后的势力与自己的立场一致,才对二人的行为置之不理的。
理事长将背后的原由全盘托出,关于「能力暴走」,学校确实有所隐瞒。但理事长的所作所为都是为了治疗他们,因为他的女儿「伊势琴里」也是能力暴走的受害者。建立这所星幽使专门学校,不仅是为了研究暴走的相关机制并开发特效药,更是希望早日树立星幽使的正面形象,让星幽能力融入日常生活中。万一再出现能力暴走的情况,民众也能坦然接受。出于这样的考量,理事长才决定冷冻这些暴走的学生,隐瞒相关事件。
事后,晓梳理目前获得的情报,察觉到似乎所有的暴走事件都集中在学校的势力范围内,这不符合概率。但如果是人为因素导致的暴走,一切就都解释得通了。
想到这里,晓也因为上课走神被柿本要求课后到办公室一趟。晓如实向柿本提出了自己的疑虑,目前是否存在强化能力的相关方法。本以为这属于机密,身为一届教职人员不会对学生坦白,没想到柿本不仅很大方地肯定了晓的猜测,还声称找到了一份论文,邀请他即刻前往科研楼一探究竟。
可柿本给的论文中,非但没有与能力提升的相关内容,反而全部是能力暴走的实验结果。就在晓疑惑之余,柿本突然给他注射了一剂药物。就像是反派角色的临终遗言一样,柿本开始坦白。原来,这篇论文就是她的实验成果,晓在电脑上做手脚的时候已经被柿本发现了。不仅这药剂能引发能力暴走,先前他晓治疗贫血的药物也有这种效果,只是晓没有吃,相模吃了之后就暴走了。而她就是先前被一锅端的管控派组织的唯一残党,这次故意引诱晓上钩,就是想让晓在能力暴走后自取灭亡,好为同僚报仇雪恨。但,她的真正目标也不是晓,如果绫濑能力暴走的话,一定会彻底瓦解民众对星幽使的信任。
说罢,柿本就丢下晓一个人原地暴走离开了。她假意有采访邀约把绫濑从教室中带了出来,却当面撞上了理事长。眼见计划全部败露,慌不择路的柿本奸笑着当场就给绫濑注射了一剂暴走药物,但绫濑却跟没事人似的。原来,绫濑并不是能力者,她只是服用了短暂获得能力的药物,因此根本不会能力暴走。但柿本不愧是反派,这药物现在就在她手中,服下药物后她解锁了类似「爆炸」的能力,当场大开杀戒。
千钧一发之际,突然冲出来的晓救走了绫濑,同现场其他星幽使联手与柿本对峙。
柿本很奇怪,你小子不是应该自爆身亡才对吗?怎么还能出来凑热闹的。晓回答道:「是我对绫濑的爱,让我压制住了暴走的冲动」。
此话倒是不假。晓的能力本就是身体强化(后面和绫濑坦白不是体能强化,而是脑力控制,所以才能免疫暴走药),在药物影响到大脑之前抢先一步压制住了。只能说主角光环不可战胜。之后就是一场火光四射的战斗,晓凭借平日执行任务时的战斗经验,与初出茅庐的柿本打得有来有回。奈何正方人多,柿本寡不敌众。在和绫濑联手后晓成功一拳 KO 了柿本,迎来大结局。
事后,理事长借口实验意外将惨烈的案发现场搪塞了过去,并且坦白绫濑也是自己的女儿,只不过同父异母。顺便交代了建立这所学校的初衷、绫濑当形象大使的原因、以及部份设定上的补充。最后的最后,学校成功靠晓从柿本那获取到的资料,研发出特效药,治愈了琴里和那些暴走的学生。
总体而言,这是个皆大欢喜的结局。
虽说「三司绫濑」也是同《魔女的夜宴》中「绫地宁宁」一样,属于表里不一又有些神经大条的类型。但绫濑的塑造完整度逊色宁宁太多,除了莫名其妙地惦记自己的胸部以外,没有太多鲜明的角色特点。我严重怀疑「平胸」这一设定只是为了给「搓板」这盘饺子特意加的醋而已,即便这部分在剧情上虽然没有明显的短板。奈何绫濑对于胸部的执念刻画得实在是用力过猛,最后给我的印象就只是一个「无比在意自己胸部且有些头脑简单的普通角色」而已。与男主之间的话题永远只有「胸部」这么一个,男主这钢铁直男还总是有意无意地吐槽她的胸垫,绫濑这二愣子就跟唱双簧似的会顺着男主的话题聊起胸垫的各种小知识。
还不及喜欢时代剧的「二条院羽月」让人有去探究的冲动。
可又能怎么办呢?绫地宁宁给的初始好感度有点太高了,在知道《Riddle Joker》里华哥又为表面上的第一女主献声后,我自然是迫不及待地就选择了她。在声音方面,绫濑在大伙面前装看板娘的声线和宁宁平常的声线一致,在秘密被发现后性格大变、态度变得直来直去——只有和男主独处才会放松下来的声线介于宁宁和《魔法使的新娘》中「智世」之间,认真起来又会回到宁宁的声线。这种随时变换的声线我非常喜欢。可我已经不是只会惦记着巨乳的小孩子了,除非你给我看 0721。
所以最终,我只通关了绫濑线。