Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions README.es-ES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# [gamePyd](http://pypi.org/project/gamePyd)

<img src="https://raw.githubusercontent.com/4amvim/gamePyd/master/Docs/Logo.png" align="left" width="200" height="102.751" text="credit @_anininninini_"/>

Jugar videojuegos es divertido, ¿verdad? Entonces, ¿por qué debería ser diferente hacer que Python juegue?
¡Al menos debería ser fácil! ¿cierto? Para eso es esta librería.
gamePyd proporciona métodos listos para casos de uso comunes. También te ofrece los componentes que utiliza, haciendo que la lectura y emulación de controladores de Xbox sea trivial en Windows.

Bajo el capó, se envuelve [ScpVBus](https://github.com/nefarius/ScpVBus) de `nefarius` para interactuar con XInput, que a su vez está envuelto en métodos para permitirte trabajar con tu estructura de datos preferida y utilizar la información transformada para controlar gamepads de manera fluida. Actualmente soportamos dataframes, listas y diccionarios.

## Prerrequisitos

Esta librería debería funcionar con cualquier versión posterior a Python 3.6, aunque las pruebas solo se han realizado en 3.8.4 y posteriores. Actualmente, el único sistema operativo soportado es Windows 10.

Para utilizar el objeto Virtual Controller, necesitas `ScpVBus`. Para facilitar las cosas, [una de sus versiones](https://github.com/shauleiz/vXboxInterface) está incluida en este proyecto. Puedes encontrar más información sobre el original en el [repositorio archivado de nefarius](https://github.com/nefarius/ScpVBus).
Probablemente también necesites [x360ce](https://www.x360ce.com/#Help_Old_Version) para facilitar la conexión con los juegos, así como para depurarla. He incluido una versión antigua, ya que es la que me funcionó.

### Instalando ScpVbus
Necesitamos ScpVBus para comunicarnos con Windows sobre los detalles relacionados con el gamepad:
Abre un símbolo del sistema (cmd) con privilegios de administrador en el directorio ScpVBus-x64 y ejecuta `devcon.exe install ScpVBus.inf Root\ScpVBus`. Una ejecución exitosa se indica mediante el siguiente mensaje:

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.

## Instalación
Ahora que lo básico está hecho, procedamos con los pasos habituales:

### Instalar vía pip

pip install gamePyd

### ¿Tienes prisa?
Dos módulos principales:
- [writePad](/gamePyd/writePad.py) contiene el objeto [`wPad`] que utilizas para controlar (hasta 4) gamepads virtuales.
- - utiliza el método [`playMoment`](https://github.com/PCplays/gamePyd/blob/d722064054d5c74cbbd819ac97f5230ca21a40c1/gamepyd/writePad.py#L159) para asignar un estado pasado como diccionario.
- - o pasa un dataframe con filas como estados a [`playback`](https://github.com/PCplays/gamePyd/blob/d722064054d5c74cbbd819ac97f5230ca21a40c1/gamepyd/writePad.py#L188).
- Para leer gamepads (virtuales o físicos), utilizas el objeto [`rPad`](https://github.com/PCplays/gamePyd/blob/d722064054d5c74cbbd819ac97f5230ca21a40c1/gamepyd/readPad.py#L55) en [readPad](/gamePyd/readPad.py).
- - [`record`](https://github.com/PCplays/gamePyd/blob/d722064054d5c74cbbd819ac97f5230ca21a40c1/gamepyd/readPad.py#L144) leerá el controlador a una tasa dada durante una duración fija y devolverá un dataframe.
- - [`capture`](https://github.com/PCplays/gamePyd/blob/d722064054d5c74cbbd819ac97f5230ca21a40c1/gamepyd/readPad.py#L168) hará lo mismo, pero terminará únicamente al detectar la presión de un botón específico en el controlador.

Si no tienes prisa, por favor dirígete a las [páginas de la wiki](https://github.com/PCplays/gamePyd/wiki). Si deseas solicitar alguna funcionalidad, por favor abre un issue.

### Probar la lectura de controladores
Ejecutar `test_read()` debería dar (la salida de abajo fue cuando no había ningún controlador conectado):

```
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.
```

### Hoja de Ruta (Roadmap)
Las características destacadas próximas se enumeran a continuación (más detalles en el [proyecto](https://github.com/PCplays/gamePyd/projects/2) adjunto):
- [ ] Calibración para diferencias de velocidad entre máquinas, para minimizar automáticamente la desviación de la tasa de lectura.
- [ ] Verificación de lag al escribir en los gamepads.
- [ ] Agregar pruebas unitarias.
- [ ] Expandir la wiki.
- [ ] Pruebas de rendimiento.

## Créditos
* **Ayush Rawat** - *Desarrollador Principal* - [4amvim](https://github.com/4amvim)

* **Ryan Barnes** - *Autor de [PYXInput](https://github.com/bayangan1991/PYXInput)* - [bayangan1991](https://github.com/bayangan1991)

Mira también la lista de [contribuyentes](https://github.com/bayangan1991/PYXInput/graphs/contributors) que participaron en PYXinput (del cual este proyecto fue derivado).

## Agradecimientos

* A todos en [vJoy](http://vjoystick.sourceforge.net/site/) por la DLL vXboxInterface.
* A [nefarius](https://github.com/nefarius) por [ScpVBus](https://github.com/nefarius/ScpVBus).