NameLess2501 发表于 2023-5-5 09:40

《装甲核心》旧作模拟手柄重映射脚本

本帖最后由 NameLess2501 于 2023-7-17 07:30 编辑

《装甲核心》旧作——特指AC3SL及之前的作品。
PS1的AC1定义了一套不用摇杆(因为游戏发布时双摇杆手柄还没发布)的立体视角和移动的操作方法,很酷,但是不好用。

AC1视角移动操作表

视角 上 L2
下 R2
左 十字键左
右 十字键右
移动 前 十字键上
后 十字键下
左 L1
右 R1
跳跃/Boost ×

最基本的视角和移动被分布在9个按键上,游戏时还要左右武器开火和切换武器等,感觉不是NT的话很难自由掌握。
然而FS把这个反人类的操作方式一直保持到了AC3SL(PS2上的第4作),明明有摇杆了,却只把右摇杆当作一个按钮来使用,并不能用来调整视角。
直到ACNX的N系开始,有了A操作(之前的旧模式为B操作),才可以像现代游戏一样左摇杆移动,右摇杆视角。

所以玩AC3SL及之前的作品的最大困难可能是这个反人类的B操作,于是整了个手柄重映射脚本,可以用A操作玩旧系作品。
1. 脚本会读取手柄输入,重映射按键,然后虚拟出另一个手柄作为输出。
2. PS1或PS2模拟器的手柄设置中,选择虚拟手柄,按键布局自动完成保持默认即可。
3. 游戏中按键设置保持默认,即可使用双摇杆A操作游玩。

脚本所需环境:
1. Python
2. Xinput 库 (pip install XInput-Python)
3. vgamepad 库 (pip install vgamepad)

重映射表

输入 输出 功能
BUTTON_LEFT_SHOULDER BUTTON_B 左手武器
BUTTON_RIGHT_SHOULDER BUTTON_X 右手武器
STICK_LEFT_UP BUTTON_DPAD_UP 移动前
STICK_LEFT_DOWN BUTTON_DPAD_DOWN 移动后
STICK_LEFT_LEFT BUTTON_LEFT_SHOULDER 移动左
STICK_LEFT_RIGHT BUTTON_RIGHT_SHOULDER 移动右
STICK_RIGHT_UP TRIGGER_LEFT 视角上
STICK_RIGHT_DOWN TRIGGER_RIGHT 视角下
STICK_RIGHT_LEFT BUTTON_DPAD_LEFT 视角左
STICK_RIGHT_RIGHT BUTTON_DPAD_RIGHT 视角右
TRIGGER_LEFT BUTTON_A Boost
TRIGGER_RIGHT BUTTON_Y 切换武器

其余按键为默认,直接映射。

脚本启动方式:右键选择以Python运行即可,启动脚本前请先插入手柄
一个手柄为物理真实手柄,一个手柄为虚拟手柄


例:左摇杆左上,被重映射为十字键上,L1


例:右摇杆右上,被映射为十字键右,L2



之后模拟器里选择虚拟手柄,游戏里保持按键设置默认,就可以用A操作游玩了。



5/6/2023 更新

添加了伪线性功能
1. 右摇杆在0.3到0.6范围(总范围0~1)时,对应的按键(视角控制)会映射为连击而不是按住(哆哆嗦嗦的AC)
2. 左扳机在0.1到0.6范围(总范围0~1)时,对应的按键(Boost)会映射为连击而不是按住(鬼畜点喷)



7/17/2023 更新

更换手柄库为游戏库pyglet,原Xinput库有效率低下的问题,只启动脚本就会消耗10%左右的CPU资源,甚至风扇都会转起来,不应该这样
当前CPU占用在2%到3%之间。
因为pyglet自带GUI(毕竟是游戏库),所以稍微修改了一下pyglet的手柄示例当作GUI了。
当前界面:


脚本所需环境:
1. Python
2. pyglet 库 (pip install --upgrade --user pyglet)
3. vgamepad 库 (pip install vgamepad)
打开命令提示符,执行上述命令

插入1个且只有1个手柄,未插入手柄的话脚本不会启动,手柄数大于等于2的话可能有未知问题。

右键脚本文件,以Python运行

之后在模拟器里选择对应的手柄就行了

pyglet 库版本:

415452356 发表于 2023-5-5 10:00

Kazuhira 发表于 2023-5-5 10:04

本帖最后由 Kazuhira 于 2023-5-8 16:33 编辑

前排提示一下记得用电脑看帖子,鹅球不会显示可以下载的附件的,本帖的脚本在附件里下载

牛p,之前一直觉得rewasd就打这一个游戏不值得买,现居然有手搓的了

旧作能重新映射以后,最后的问题就是那个视角转动是非线性不好瞄准了(

—— 来自 Xiaomi Redmi K20 Pro, Android 11上的 S1Next-鹅版 v2.5.2-play

前列腺 发表于 2023-5-5 10:06

我记得还有哪个游戏也是L1L2移动视角,很别扭。但这也没辙

处男鉴黄师 发表于 2023-5-5 10:38

若菜 发表于 2023-5-5 10:44

我是直接游戏里改键位,视角改到OX口Δ

NameLess2501 发表于 2023-5-5 10:48

Kazuhira 发表于 2023-5-5 10:04
牛p,之前一直觉得rewasd就打这一个游戏不值得买,现居然有手搓的了

旧作能重新映射以后,最后的问题就是 ...

这个确实没办法。
为了避免误触视角,已经给摇杆加了45%的死区。

Kazuhira 发表于 2023-5-5 10:50

本帖最后由 Kazuhira 于 2023-5-5 10:52 编辑

NameLess2501 发表于 2023-5-5 10:48
这个确实没办法。
为了避免误触视角,已经给摇杆加了45%的死区。

确实,我看这操作方式,感觉应该是在游戏里写死了没有线性

Kazuhira 发表于 2023-5-5 10:51

若菜 发表于 2023-5-5 10:44
我是直接游戏里改键位,视角改到OX口Δ

我也这么干过,但我感觉用这个键位能打穿这游戏绝非一般人

415452356 发表于 2023-5-5 10:55

Kazuhira 发表于 2023-5-5 11:04

415452356 发表于 2023-5-5 10:55
可以打,没那么难,psp版我当时一口气连通三作

—— 来自 S1Fun

LR也打穿了我非常佩服,我直接被管理局强行侦查后面那台AC劝退了

415452356 发表于 2023-5-5 11:08

NameLess2501 发表于 2023-5-5 18:12

Kazuhira 发表于 2023-5-5 10:50
确实,我看这操作方式,感觉应该是在游戏里写死了没有线性

有个新想法,视角控制旧作是靠连点微调,类似PWM。
所以把右摇杆的角度映射成十字键左右L2R2的PWM形式,也算加了线性吧。
回去试一试。

Kazuhira 发表于 2023-5-5 18:19

NameLess2501 发表于 2023-5-5 18:12
有个新想法,视角控制旧作是靠连点微调,类似PWM。
所以把右摇杆的角度映射成十字键左右L2R2的PWM形式, ...

是个好主意,当时在另一个映射软件里找过这样原理的伪线性,但是没有这功能

NameLess2501 发表于 2023-5-6 19:37

Kazuhira 发表于 2023-5-5 18:19
是个好主意,当时在另一个映射软件里找过这样原理的伪线性,但是没有这功能 ...

没整真PWM线性,简单做成了摇杆或扳机推一半时对应按键连点
线性视角控制其实不太行
但Boost可以实现自动点喷了

peipei6955 发表于 2023-5-6 20:19

顺便想到ps2上一些游戏要用到压感操作,比如gt赛车、gt摩托的油门刹车,现在的手柄都没法模拟。要是能把压感转成模拟量就好了呢。

Kazuhira 发表于 2023-5-8 16:28

NameLess2501 发表于 2023-5-6 19:37
没整真PWM线性,简单做成了摇杆或扳机推一半时对应按键连点
线性视角控制其实不太行
但Boost可以实现自动 ...

已经挺好了感谢楼主

GUNDAMmk0 发表于 2023-5-21 00:20

Kazuhira 发表于 2023-7-18 12:37

哇,昨天还更新了刚想起来有这个,很惊喜

NameLess2501 发表于 2023-7-18 18:09

Kazuhira 发表于 2023-7-18 12:37
哇,昨天还更新了刚想起来有这个,很惊喜

这两天玩ACPP,发现功耗有点离谱,就又改了一下
页: [1]
查看完整版本: 《装甲核心》旧作模拟手柄重映射脚本