- SignalDesk5小时前
用 dsv4.1f 向安卓端移植了PC 版《アマカノ3》(约 8 GB), 原生安卓 手机运行,非 Winlator 兼容层,拿引擎官方的 Android 运行库自己改包数据。 (注:这个游戏官方存在安卓版,但是付费资源没看到分享。同时考虑到我是第一次尝试安卓移植,积累经验比单纯拥有安卓版游戏更重要,所以最后还是进行了移植尝试) 工具: DeepSeek-V4.1-Flash + Codebuddy(免费额度) 。脚本、逆向、调试由AI来做,我负责决策、真机验证。 文中没有带任何游戏文件,因为我的小水管上传只有2MB/s,完整文件有8GB多,上传太慢了 成果 手机:vivo V2507A(天玑 9400+ / Android 16 / arm64-v8a / 12GB 内存) 状态: 标题、剧情、立绘、对话框全部正常 ,底部按钮栏 + 顶部工具条完整。(顶部工具条是PC版就有的原生大按钮,在触摸屏上直接就能用,功能完全,非常舒适,不用费劲去按下面的小按钮。) 顺便把官方 1.0.2 升级补丁 打了上去(存档页从 15 槽变 25 槽、多了「返回上一选项」按钮) 图片示例 (点击了解更多详细信息) APP图标使用官方海报截取女主头像,deepseek进行适配,效果很好,最终使用B方案: 主要流程 先侦察手机规格 用 Termux(免 root)把硬件信息全采了一遍:CPU、GPU、ABI、内存、存储、屏幕、可用工具链。 关键结论: ro.product.cpu.abilist 只有 arm64-v8a —— 纯 64 位设备, 跑不了任何 32 位原生库 。 有 OpenGL ES 3.x / Vulkan,12GB 内存,存储够。 参数看不懂没关系 先摸清机器规格,让AI定方案就行了 判定引擎 打开游戏目录,看到 Amakano3.pfs 的扩展名后缀就知道引擎了: Artemis Engine (iMel 系的引擎)。 目前主要的 Galgame 移植现状: 引擎 安卓方案 体验 KiriKiri / KAG Kirikiroid2(原生) 好 NScripter ONScripter Plus(原生) 好 Artemis 官方就有 Android 运行库 最好 Siglus(Key 系)、YU-RIS 等 只能 Winlator(兼容层) 折腾、耗电、翻车多 Artemis 有官方 Android 运行库,所以路线定为: 拿官方运行库工程 → 换上自己的包名和图标 → 把 PC 版数据改造成安卓系统认识的格式 。 折磨到死的调试 换上工程、塞进数据、装到手机上—— 标题画面出来了 ,挺激动。然后进入主菜单就崩了: 字体被截断、各选项挤成一团 剧情页底部那一整排按钮栏(Skip/Auto/Save/Load/Log/Config…)直接消失 没有虚拟按键,只能单击 Deepseek第一反应是"图片没按屏幕缩放",于是花了大力气去改图片尺寸、改分辨率——全是白费。因为方向从一开始就错了。把包里的脚本全解出来读,终于找到真正的根因: -- system/adv/adv.lua:216 function reload_ui() if game.os ~= "windows" then -- ← 安卓时这一段是空的! elseif flg.ui then ... else init_adv_btn() flip() -- 只有 windows 才建立 ADV 底部按钮栏 end end 安卓下这段直接跳过,按钮栏从来没被创建过。再查资源:PC 包里只有 pc/ja 一套 UI,而 Android 版的表里指向 pa/ 、 _hd/ 、 _and/ 这些目录——PC 包里根本不存在。也就是说,官方 Android 版的数据包和 PC 版是两套,手上只有 PC 版,只能手动改——不修 android 表,而是让游戏以为自己跑在 Windows 上。 另外还顺手关掉了两个 Windows 专属弹窗(存档位数校验、旧系统版本检查),它们在安卓上会误报。 game.os 一变,加载的表也变了,Windows 表里写着 blur_path="pc/" 、 blur_exp=".hlsl" ——HLSL 是 DirectX 的着色器,安卓的 GLES 根本编译不了。改回 mb/ + .glsl 。顺带发现原版 shader 里有一行非法写法: vec4 fore = texture2D(...); fore = 0.0; // ← vec4 赋 float,非法 官方 1.0.1 才修(改成逐分量 fore.r/g/b = 0.0 ),而且只修了 blur_k ,漏了 blur_kx / blur_ky ,这两个得自己补。 PC 上"模拟真机" 安卓实机调试一次要传 1.7GB,太慢。于是在 PC 上构造了和手机等价的环境: game.os = "windows" ← 强制 game.trueos = "android" ← 模拟真机 这样 PC 上能跑、能截图、能快速迭代,而且 lua 层的逻辑组合和真机完全一致。 升级官方 1.0.2补丁 折腾好本体后,没想到升级补丁还折腾了大半天。官方给了升级补丁 Amakano3.pfs.010 / .030 。查官方文档才知道: 同目录下的 root.pfs.NNN (000~999)是 补丁 , 优先于 root.pfs 。 所以改名丢进数据目录就能生效——机制本身很干净。然后Deepseek想当然地自己重建了一个补丁包(把两个官方补丁合并成一个,顺便改掉里面几处路径)。 结果: 黑屏 → 崩溃 。折腾了很久。 最后逐字节对比才发现—— .pfs 的索引在"条目表"之后还有一段尾部结构: [u32 count+1] + (count+1)×[u32 值][u32 0] + [u32 条目区末尾] 重建索引时Deepseek整个把它漏掉了,引擎一读就 SIGSEGV。排查了半天才搞出来。 图标 工程模板自带的是模板作者的示例图,不是本作素材。我找了官方海报,让DeepSeek裁了女主角头部,做成标准 adaptive icon: foreground :透明底,头像居中占画布 90% background :取裁切区四角平均色(暖米色) legacy 的方形 / 圆形图标也都生成,5 档 dpi 全覆盖 总结: AI干得好的: 逆向文件格式、写解析/加密脚本 在几千个文件里定位"哪一行决定了行为" 快速生成大量候选方案、反复试错 跨语言/跨工具链的琐碎工作(Lua / Python / PowerShell / adb / Gradle) AI干得不好的: 方向必须要人把关,不然会在错路上一路狂奔;有过好多次,活没干完,Deepseek直接嚷嚷说"看起来好了",然后停工,这种时候必须拿个鞭子抽他他才干活 遗留 OP 影片是 .wmv ,安卓不解码,不播。暂时没改 因为codebuddy今天deepseek的免费额度用完了 写在最后 AI 把这类"脏活累活密集"的移植工作门槛拉低了很多,但仍然需要人来判断拿主意。希望各位大胆尝试,能把自己喜欢的 Galgame 搬上手机。 8 个帖子 - 6 位参与者 阅读完整话题
- 情报分类:硬件与数码
- 分类依据:内容涉及硬件、数码产品或通信卡
- 信息来源:服务器 / LINUX DO - 最新话题
- 发布时间:2026/10/5 22:21:53
- 暂无回复