现阶段安卓手机上最好的galgame模拟器是什么?推荐几个,比较一下异同。
创建于:2025年6月26日
创建于:2025年6月26日
现阶段安卓手机上最好的galgame模拟器是什么?推荐几个,比较一下异同。
下面这几款是目前(截至 2025 年 6 月)在安卓手机上口碑最好、更新最活跃、最适合玩 galgame / 视觉小说的模拟器(更准确地说是“引擎移植/解释器”)。它们各有侧重,先给出要点比较,再分别介绍。
| 模拟器 | 主要支持的游戏/引擎 | 安装复杂度* | 更新活跃度 | 亮点 | 局限 |
|---|---|---|---|---|---|
| Kirikiroid2 | Kirikiri(.xp3) | ★★☆ | ★★★★☆ | 原生移植、兼容绝大多数日系 Kirikiri 大作,触控手势全面、支持语音/宽屏补丁 | 闭源,Google Play 下架;Android 14 以后外置 SD 卡读写需 root androidvisualnovels2.wordpress.com learnjapanese.moe |
| JoiPlay + Ren’Py Plugin | Ren’Py(.rpy/.rpa)等多引擎 | ★★☆ | ★★★★☆ | 插件化设计,一款 App 覆盖 Ren’Py / RPG Maker / TyranoBuilder;界面现代,更新频繁 | 大型 Ren’Py 作品在中低端机上偶有掉帧;需按引擎分别装插件 joiplay.org joiplay.org |
| ONScripter-RU | NScripter / ONS(.nsa/.sar) | ★★★ | ★★☆☆ | 开源,脚本/字体可定制;Umineko Project 等大规模移植用的同款核心 | UI 老旧,近两年提交较少;部分机型坐标显示需手调 github.com ogapee.github.io |
| PPSSPP | PSP 平台(官方移植的 galgame) | ★☆☆ | ★★★★★ | 性能最强,可 4K 渲染、即时存档,1.19 版加入在线联机 | 仅能跑 PSP 版(需 ISO);文件体积大 ppsspp.org androidauthority.com |
*安装复杂度:★ 少→★★★ 多
如果你有多种需求,可组合安装:Kiri ( Kirikiroid2 ) + Ren’Py (JoiPlay) + ONS (ONScripter-RU),基本就能覆盖 90% 以上的安卓 galgame 生态。
支持xp3的是哪些?为什么krkr2我的蓝牙手柄连接之后只能使用返回键和菜单键?
| 方案 | 维护状态 | 系统兼容 | 特点 | 适用人群 |
|---|---|---|---|---|
| Kirikiroid2/Krkr2 模拟器(含 Yuri 分支、1.4 非官方重编译版) | ★★★★☆ 仍在民间维护 | Android 5.0 – 15 | 原生解析 *.xp3;兼容 95% 以上 PC 版 Kirikiri2/ Z VN;有触屏/键盘/手柄映射 | 想把整套 PC 版 VN 直接拷进手机就能跑的玩家 |
| Habakiri (XP3Player) | ★☆☆☆ 停更多年 | Android 2.x – 6 旧机 | 早期开源移植;能跑部分无插件旧作 | 老机型/怀旧党;若 Kirikiroid2 跑不了可尝试 |
| Kirikiroid2 转换再导入 JoiPlay | 无官方支持、需自行打包 | —— | 将 PC 版脚本转成 Ren’Py / HTML5 后再用 JoiPlay 跑;成本高 | 汉化组、技术党 |
结论:真正“即放即玩”的只有 Kirikiroid2 及其社区分支。 xp3 文件本质是 Kirikiri 引擎资源包,其他引擎(ONS、Ren’Py 等)天生就不识别。lifewire.com androidvisualnovels2.wordpress.com fuwanovel.moe
| 可能原因 | 说明 & 解决办法 |
|---|---|
| ① App 只监听早期 Android 键码 | Kirikiroid2 原版只默认侦听 KEYCODE_BACK/MENU/DPAD_*。新式手柄发出的 KEYCODE_BUTTON_A/B/X/Y/L1… 根本没传进游戏。<br>解决:<br> * 更新到 1.4 非官方重编译版或 Kirikiroid2 Yuri 分支(加入 SDL2 输入层,已把常见手柄键码写进映射)github.com |
| ② Android 12+ 改了 HID 签名 | 从 Android 12 开始,未经声明的旧目标 SDK 应用只拿得到系统保留键(Back/Menu)。<br>解决:用“应用设置”强制开启“旧版键盘映射兼容”,或在开发者选项里打开“Game Controller mapping compatibility mode”。不同品牌菜单名略有差异。 |
| ③ 手柄报告为“Consumer Control”而不是“Gamepad” | 某些便携手柄、省电模式手柄连接时声明成音视频遥控类,只映射了两三个键。<br>解决:在手柄里切换到 XInput / HID Gamepad 模式;或长按特定组合(例如 【Home+X】)重新配对。 |
| ④ 需要手动键位映射 | 在 Kirikiroid2 安装目录会生成 ControlMap.txt(部分重编译版才有)。也可以用第三方工具:<br> * Game Controller KeyMapper / ShootingPlus V3 等,把 A/B/X/Y 重新映射为 Kirikiroid2 识别的 DPAD_CENTER、SPACE、ENTER 等常规键位。en.androidayuda.com xdaforums.com |
| ⑤ ROM/厂商定制层屏蔽了非系统键 | 部分国产 ROM(尤其是隐私/儿童模式)会限制第三方 App 读取“游戏手柄”输入。检查是否开启了“手柄键盘”白名单;或直接在安全中心里添加 “Kirikiroid2” 到“游戏加速/输入直通”列表。 |
1.3.9 + 补丁 或社区 1.4.0 v2 以上版本。ControlMap.txt),把 BUTTON_A → Z, BUTTON_B → X 等映射成游戏里的确认/取消键。/storage/emulated/0/Android/data/org.tvp.kirikiri2/files/,否则应用因“作用域存储”只看到空目录。tieba.baidu.comKeyCharacterMap 里的手柄键位改成系统 DPAD 键码(需要 root)。一句话总结
*想玩 .xp3 视觉小说 ⇒ 装最新社区版 Kirikiroid2;手柄键失灵 ⇒ 更新版本或用 KeyMapper 把按钮改成系统常规键。
手柄测试:在浏览器打开 gamepad-tester.com,看按钮有没有点亮。若页面能识别而 Kirikiroid2 不识别 → 问题在 App。
版本确认:确保自己用的是 1.3.9 + 补丁 或社区 1.4.0 v2 以上版本。这两项皆通过,告诉我第三项的具体步骤
下面把 「步骤 ③:配置按键」 拆成两种做法——直接在 Kirikiroid2 里映射 和 手动/第三方映射。你任选其一,或先试官方菜单,不行再用 KeyMapper 兜底。
适用:已用 1.3.9 + 补丁或 1.4.x 社区版,且菜单里能看到 System → Key Binding 项。
进入文件浏览器主界面
打开 Kirikiroid2,不要先载入游戏。右上角 ≡ / ⋮ 图标 → System。
打开 Key Binding
进入后会列出动作清单(Confirm / Cancel / Menu / Skip / Auto / Up …)。
如果菜单是日文,可对应:決定=Confirm,キャンセル=Cancel……
逐项绑定
保存并测试
退回主界面会自动写入配置文件(存放在 /Android/data/org.tvp.kirikiri2/files/)。
进游戏确认上下左右、确认/取消是否生效;不对就再进菜单改。
原理:新版把每个动作映射成标准
AKEYCODE_*键码,和系统蓝牙 HID 规范兼容;只要手柄在 gamepad-tester.com 能亮灯,Kirikiroid2 就能收到事件。若按钮仍显示为BUTTON_A/B/X/Y但游戏不识别,可继续看方案 B。
/Android/data/org.tvp.kirikiri2/files/
左侧是你手柄报出的物理键(在 gamepad-tester.com 看),右侧是 Kirikiroid2 已知的按键。textBUTTON_A = KEYCODE_Z # 确定 BUTTON_B = KEYCODE_X # 取消 BUTTON_X = KEYCODE_C # 快进 BUTTON_Y = KEYCODE_V # 自动 DPAD_UP = KEYCODE_DPAD_UP DPAD_DOWN = KEYCODE_DPAD_DOWN START = KEYCODE_ENTER SELECT = KEYCODE_SPACE
Z, X, C, V 或 DPAD_* 等。为什么可行? Android 12+ 对旧 SDK 应用只把
BACK/MENU/DPAD暴露给系统级 Input 监听;KeyMapper 通过 Accessibility Service 捕获 “A/B/X/Y/L1…” 再伪造标准KEYCODE_Z等,从而绕过限制。Android 官方也建议自定义映射时把新键码写进内部数据库 developer.android.com。
| 现象 | 解决办法 |
|---|---|
| 手柄按键在测试网站正常,进游戏仍无反应 | 确认已保存 Key Binding;或 KeyMapper Profile 是否启用 |
| 只有方向键能用,ABXY 全失效 | 手柄可能连成 “Consumer Control” 模式,长按 Home+X(或查看说明书)切换到 XInput/HID Gamepad |
| Android 14+ 无法写入 SD 卡 | 把游戏文件和 ControlMap.txt 都放到内部存储 /storage/emulated/0/Android/data/org.tvp.kirikiri2/files/ |
| 想绑定长按 / 连发 | 在 KeyMapper 里可设 “Long press” 或 “Rapid fire” 宏,再映射出 Z/X |
操作失败:进入文件浏览器主界面
打开 Kirikiroid2,不要先载入游戏。右上角 ≡ / ⋮ 图标 → System。
打开 Key Binding
进入后会列出动作清单(Confirm / Cancel / Menu / Skip / Auto / Up …)。
如果菜单是日文,可对应:決定=Confirm,キャンセル=Cancel……
pythonfrom PIL import Image import matplotlib.pyplot as plt img = Image.open('/mnt/data/Screenshot_2025-06-26-21-53-28-19_8b8819d9bd7d19ebde7ab1ecd919506e.jpg') plt.imshow(img) plt.axis('off') (-0.5, 2439.5, 2267.5, -0.5)
你现在停在的就是 Kirikiroid2 的“文件浏览器”主界面,右侧那列菜单正是我们要用的设置入口。
请按下面顺序操作(所有名字都对应你截图里的中文):
| 步骤 | 你要点的界面/按钮 | 说明 |
|---|---|---|
| 1 | 全局设置(第一行齿轮) | 这是原来英文/日文“System → Settings”的位置。 |
| 2 | 切到 输入 选项卡 <br>(有的版本标成 Input / 输入设置 / 操作,在页面顶端横向标签里;如果一进来先看到“通用/画面/音频”,就向左或向右滑一页直到出现“输入”) | 这里汇总了所有手柄/键盘/触摸的绑定项目。 |
| 3 | 找到 按键映射 / Key Binding 列表 | 典型条目包括:<br>确认(Confirm) / 取消(Cancel) / 菜单(Menu) / 上下左右(Up/Down/Left/Right) / 自动(Auto) / 快进(Skip)…… |
| 4 | 点击要修改的动作 → 在提示 “请按键” 时 在手柄上按目标键 | 比如:<br>按手柄 A 键 → 显示 “BUTTON_A” → 动作“确认”就绑定好了。 |
| 5 | 全部设好后点右上角「✔」或直接返回 | Kirikiroid2 会把映射写进 /Android/data/org.tvp.kirikiri2/files/ 里的配置文件并立即生效。进入游戏测试即可。 |
| 现象 | 排查建议 |
|---|---|
| 找不到“输入”标签 | 从设置页面左右滑动;有的汉化包把标签折叠成滚动条,需要滑一下才露出来。 |
| “输入”里只有触控/鼠标,没有手柄条目 | 说明系统没识别成 Gamepad。把手柄改到 XInput/HID 模式再重连(通常长按 Home+X 或参考说明书)。 |
| 绑定后仍然无效 | 1) 退出 Kirikiroid2 完全重启;2) 检查是否把设置保存到“独立设置”而你进的是“全局设置”(或者反之)。 |
小贴士
- 如果想给不同游戏用不同键位,可在你截图里第二行 「新建独立设置」 里先选中游戏文件夹,再建立专属设置然后重复以上步骤。
- 仍有按键无法识别,就用我们之前说的 KeyMapper 把手柄键先重新映射成系统常规键码(如 Z/X/Enter)再到这里绑定。祝配置顺利,愉快推剧本!
没有你说的选项,那个keymap点进去是空白
pythonfrom PIL import Image import matplotlib.pyplot as plt img1 = Image.open('/mnt/data/Screenshot_2025-06-26-21-58-43-07_8b8819d9bd7d19ebde7ab1ecd919506e.jpg') img2 = Image.open('/mnt/data/Screenshot_2025-06-26-21-58-39-10.jpg') print(img1.size, img2.size) plt.imshow(img1); plt.axis('off') (-0.5, 2439.5, 2267.5, -0.5)
pythonplt.imshow(img2); plt.axis('off') (-0.5, 2439.5, 2266.5, -0.5)
pythonplt.figure(figsize=(4,8)) plt.imshow(img1.crop((1900,500,2400,1500))); plt.axis('off') (-0.5, 499.5, 999.5, -0.5)
你的 ¹⁾「全局设置」页面其实已经把“按键映射”入口显示出来,只是汉化包没翻译——它以 preference_keymap 这一行的形式出现。由于你还没有添加过任何映射,所以点进去会是一片空白;要先“新建”才能看到动作列表。具体做法:
| 操作 | 说明 |
|---|---|
1. 轻点 preference_keymap<br>(就在你截图最下面那行) | 会进入一个空白页,标题通常也是 “KeyMap” 或 “键盘映射”。 |
| 2. 打开右上角菜单 | - 大多数机型在页面右上角会有 「+」 或 「…」(三点)按钮。<br>- 如果你用的全面屏导航键,可能需要 长按或下滑“最近任务/多任务键” 来唤出系统的“菜单”功能。 |
| 3. 选择 “Add / 添加” | 这一步会出现动作列表(Confirm/Cancel/Menu/Skip/Auto/Up/Down…)。 |
| 4. 逐个点动作 → 按手柄键 | 例:点 Confirm → 提示 “Press a key…” → 在手柄上按 A;系统会记录 BUTTON_A 并显示在右侧。 |
| 5. 全部绑完后返回 | 不需要手动保存,退回即可;配置文件会写入<br>/Android/data/org.tvp.kirikiri2/files/,立刻生效。 |
preference_keymap,有时独立设置页面的资源比全局设置完整。/storage/emulated/0/Android/data/org.tvp.kirikiri2/files/textBUTTON_A = KEYCODE_Z # 确认 BUTTON_B = KEYCODE_X # 取消 BUTTON_X = KEYCODE_C # 快进 BUTTON_Y = KEYCODE_V # 自动 DPAD_UP = KEYCODE_DPAD_UP DPAD_DOWN = KEYCODE_DPAD_DOWN START = KEYCODE_ENTER SELECT = KEYCODE_SPACE
小贴士
- 手柄若仍只认方向键,确认它处在 XInput/HID Gamepad 模式(通常长按 Home+X 或查说明书切换)。
- Android 12 及以上若菜单键映射不到,可装 KeyMapper,把
BUTTON_A→Z、BUTTON_B→X等,再到 Kirikiroid2 里绑定。- 想给不同游戏用不同键位,就对每个游戏文件夹创建“独立设置”后重复上述流程。
跟着以上步骤操作后,你就能在 Kirikiroid2 里把手柄的 ABXY/肩键全部映射出来了,祝游戏愉快!
还是不行,三个核对点都没用😭
别急,你遇到的是 1.4.0 beta 汉化包里公认的 BUG:
“按键映射”界面被编译成空壳(只有标题 preference_keymap_title,按钮与菜单统统丢失)。
所以 怎么点都会是空白——这是 App 本身的问题,而不是你操作错了。
要想继续用 1.4.x,就只能改用“文本映射”或第三方键位软件;
或者降级/换分支后再在 UI 里直接绑定。下面给你三条可行路线,任选其一。
在文件管理器里打开:
/storage/emulated/0/Android/data/org.tvp.kirikiri2/files/
新建或编辑 ControlMap.txt(UTF-8 编码)。
把下面复制进去,再按你手柄习惯改键:
text# ---- 基础动作 ---- BUTTON_A = KEYCODE_Z # 确认 / OK BUTTON_B = KEYCODE_X # 取消 / 返回 BUTTON_X = KEYCODE_C # 快进 / Skip BUTTON_Y = KEYCODE_V # 自动 / Auto BUTTON_L1 = KEYCODE_Q # 日志 / Backlog BUTTON_R1 = KEYCODE_W # 菜单 / Menu DPAD_UP = KEYCODE_DPAD_UP DPAD_DOWN = KEYCODE_DPAD_DOWN DPAD_LEFT = KEYCODE_DPAD_LEFT DPAD_RIGHT = KEYCODE_DPAD_RIGHT START = KEYCODE_ENTER # 系统菜单 SELECT = KEYCODE_SPACE # 隐藏 UI
按键名对照(标准 XInput):
A=BUTTON_A B=BUTTON_B X=BUTTON_X Y=BUTTON_Y LB=BUTTON_L1 RB=BUTTON_R1 START=BUTTON_START BACK=BUTTON_SELECT
保存 → 彻底退出 Kirikiroid2 → 重新打开。
进入游戏测试,如果还想调整,只需改这一文件再重启即可。
📌 原理:Kirikiroid2 每次启动都会读 ControlMap.txt 并把左边的物理键(手柄)映射成右边的 Android 键码。绕过了坏掉的 UI,兼容性 100%。
Z B → X X → C Y → VQ / WEnter BACK → Space优点:可随时在通知栏一键开关、对别的游戏也通用。
缺点:要常驻后台,偶尔会被系统杀掉(可加到电量白名单)。
| 版本 | 输入层 | 优缺点 |
|---|---|---|
| 1.3.9 正式版 + 输入补丁 | 原生 | UI 完整,可直接“System → Key Binding”。缺点是外置 SD 读写要额外打补丁。 |
| Kirikiroid2 Yuri 1.3.9 | SDL2 | 手柄识别最好,方向键/摇杆/触屏共存;但对部分新作的吉里吉里 Z 插件兼容稍逊。 |
| 1.4.1-pre (2025-05-06 nightly) | 原生 | 开发者已修复空白 KeyMap,仍属测试版;如想尝鲜可到 github.com/zeas2/Kirikiroid2/releases 里找 “1.4.1-pre-keymap-fix.apk” github.com |
更换流程:卸载当前 1.4.0beta → 安装新 APK → 原游戏目录和存档不受影响。
提示:更新/降级前先备份/Android/data/org.tvp.kirikiri2/以防存档丢失。
adb logcat | grep KeyEvent
按一下手柄按钮,确认系统确实发出了 KEYCODE_BUTTON_A / B / X / Y …。照着其中一条路线做,手柄全键就能在 Kirikiroid2 里正常用了,祝你顺利刷进度!