轻松阅读或模拟游戏板
gamePyd的Python项目详细描述
游戏玩家
玩电子游戏很有趣,不是吗?那么为什么让Python玩游戏有什么不同呢? 至少应该很容易!当然?这就是这个图书馆的目的。 gamePyd为常见用例提供了现成的方法。它还提供了它使用的积木,使得在Windows上读取和模拟xbox控制器变得非常简单。在
在幕后,nefarius
的ScpVBus被包装起来与XInput交互,XInput又被包装在方法中,让您可以使用首选的数据结构
并无缝地使用转换后的信息来控制游戏板。目前我们支持数据帧、列表和字典。在
先决条件
这个库应该可以使用python3.6之后的任何东西,尽管只在3.8.4和更高版本上进行过测试。目前唯一支持的操作系统是Windows10。在
要使用虚拟控制器对象,您需要ScpVBus
。为了方便起见,one of it's versions包含在这个项目中。有关原始版本的更多信息,请访问nefarius's archived repo。
您可能还需要x360ce来简化与游戏的连接以及调试。我已经包括了它的旧版本,因为那是一个为我工作。在
安装ScpVbus
我们需要ScpVBus与Windows讨论有关gamepad的详细信息:
在ScpVBus-x64目录中打开提升的cmd命令提示符并运行devcon.exe install ScpVBus.inf Root\ScpVBus
。成功运行由以下消息指示:
Device node created. Install is complete when drivers are installed...
Updating drivers for Root\ScpVBus from {Location}\PYXInput\ScpVBus-x64\ScpVBus.inf.
Drivers installed successfully.
安装
既然基本功都完成了,我们就应该按照惯例来做:
通过pip安装
^{pr2}$你赶时间吗?
两个主要模块:
- writePad包含对象[
wPad
],用于控制(最多4个)虚拟游戏板 - 在
- 使用^{
} 方法分配作为字典传入的状态
- 使用^{
- 在
- 或将行作为状态的数据帧传递给^{
} 。在
- 或将行作为状态的数据帧传递给^{
- 要读取游戏板(虚拟或物理),您可以使用readPad中的^{
} 对象 - 在
- ^{
} 将在固定的时间内以给定的速率读取控制器,并返回一个数据帧。在
- ^{
- 在
- ^{
} 将执行相同的操作,但只在检测到控制器上的指定按钮按下时终止。在
- ^{
如果你不着急,请去wiki pages。如果你想要求任何功能,请提出一个问题。在
测试控制器的读数
运行test_read()
应该会给出(下面的输出是在没有插入控制器的情况下):
Testing controller in position 1:
This will just take a second. We'll look at the controller values in 200 milli-second intervals:
0---------------------------------------------
State:{'LT': 0, 'RT': 0, 'Lx': 0, 'Ly': 0, 'Rx': 0, 'Ry': 0, 'UP': False, 'DOWN': False, 'LEFT': False, 'RIGHT': False, 'START': False, 'SELECT': False, 'L3': False, 'R3': False, 'LB': False, 'RB': False, 'A': False, 'B': False, 'X': False,
'Y': False}
---------------------------------------------
1---------------------------------------------
State:{'LT': 0, 'RT': 0, 'Lx': 0, 'Ly': 0, 'Rx': 0, 'Ry': 0, 'UP': False, 'DOWN': False, 'LEFT': False, 'RIGHT': False, 'START': False, 'SELECT': False, 'L3': False, 'R3': False, 'LB': False, 'RB': False, 'A': False, 'B': False, 'X': False,
'Y': False}
---------------------------------------------
2---------------------------------------------
State:{'LT': 0, 'RT': 0, 'Lx': 0, 'Ly': 0, 'Rx': 0, 'Ry': 0, 'UP': False, 'DOWN': False, 'LEFT': False, 'RIGHT': False, 'START': False, 'SELECT': False, 'L3': False, 'R3': False, 'LB': False, 'RB': False, 'A': False, 'B': False, 'X': False,
'Y': False}
---------------------------------------------
3---------------------------------------------
State:{'LT': 0, 'RT': 0, 'Lx': 0, 'Ly': 0, 'Rx': 0, 'Ry': 0, 'UP': False, 'DOWN': False, 'LEFT': False, 'RIGHT': False, 'START': False, 'SELECT': False, 'L3': False, 'R3': False, 'LB': False, 'RB': False, 'A': False, 'B': False, 'X': False,
'Y': False}
---------------------------------------------
4---------------------------------------------
State:{'LT': 0, 'RT': 0, 'Lx': 0, 'Ly': 0, 'Rx': 0, 'Ry': 0, 'UP': False, 'DOWN': False, 'LEFT': False, 'RIGHT': False, 'START': False, 'SELECT': False, 'L3': False, 'R3': False, 'LB': False, 'RB': False, 'A': False, 'B': False, 'X': False,
'Y': False}
---------------------------------------------
Better yet, you can use prettyRead() to sample as many times as desired for any required duration.
And then return it as a dataframe, can even write it to a file by supplying the filename.
LT RT Lx Ly Rx Ry UP DOWN LEFT RIGHT START SELECT L3 R3 LB RB A B X Y time(ns) timeDelta(ms) error(ms)
0 0 0 0 0 0 0 False False False False False False False False False False False False False False 1605620332292776700 9.9744 1.641067
1 0 0 0 0 0 0 False False False False False False False False False False False False False False 1605620332301749900 8.9732 0.639867
2 0 0 0 0 0 0 False False False False False False False False False False False False False False 1605620332310727300 8.9774 0.644067
3 0 0 0 0 0 0 False False False False False False False False False False False False False False 1605620332319701900 8.9746 0.641267
4 0 0 0 0 0 0 False False False False False False False False False False False False False False 1605620332328678100 8.9762 0.642867
Do note that the final three columns are metadata.
路线图
{a13下面列出了更多的重要特性:
- []校准机器与机器之间的速度差,以便自动最小化与读取速率的偏差。在
- []写入游戏板时检查延迟
- []添加单元测试
- []扩展wiki
学分
- 在
Ayush Rawat-Main Developer-PCplays
在 - 在
Ryan Barnes-Authot of PYXInput-bayangan1991
在
另请参见参与PYXinput的contributors的列表(该项目就是从中派生出来的)。在
致谢
- 项目
标签: