GIMX

(Esta entrada es la sexta parte de una serie que cubre un proyecto personal que realicé en el verano de 2014; pueden ver todas las partes aquí).

Originalmente iba a escribir acerca de una de las piezas del rompecabezas de mi proyecto que haría explícito exactamente a dónde iba con él. Decidí tomar una pequeña desviación hoy, sin embargo; porque si no mencionar a GIMX más tarde tal vez le quitaría méritos.

El proyecto GIMX (Game Input MultipleXer) obviamente está relacionado a mi proyecto, pero tiene suficientes diferencias como para que yo no considere al mío una modificación. El diseño del hardware (que lo pueden ver aquí) sí lo tomé completamente de ellos, porque yo no sé realmente de hardware. Es por eso que estudié Ciencias de la Computación y no Ingeniería en Computación; todo lo de los fierritos y alambritos me da una hueva mortal.

El software de GIMX al final sólo me sirvió de base para yo hacer lo mío; GIMX utiliza LUFA, que aunque se ve que tiene un montón de cosas bien chidas, al final yo decidí que me daba mucha hueva estudiar un marco de trabajo tan complejo para lo casi trivial que hago yo con mi Teensy++ 2.0. Aunque sí estudié algo del código de GIMX, terminé yo escribiendo mi propia versión del firmware para mi Teensy++ 2.0, basada en otro cuerpo de código (el ejemplo Raw HID de la página de Teensy).

De cualquier forma, enterarme de la existencia de GIMX fue lo que me hizo percatarme de que mi proyecto era posible, y nada más por el diseño de hardware y la guía de qué componentes comprar bastarían para que yo estuviera infinitamente agradecido con ellos.

La idea principal de GIMX es crear un firmware para el Teensy++ 2.0 (o cualquier tarjeta similar; al parecer hay chorrocientas parecidas) que emule a un controlador de PlayStation 3 (también de PlayStation 4 y de Xbox 360, pero esos no me importan). También la idea es emular un control a través de Bluetooth, pero eso no me servía de nada para mi proyecto, así que lo ignoré olímpicamente.

Como el Teensy++ 2.0 tiene el poder de cómputo equivalente a dos calculadoras más o menos, GIMX utiliza el CP2102 (o cualquier otro adaptador USB ↔ serial) para que una computadora le pueda mandar los “movimientos” del control al Teensy++ 2.0. El Teensy++ 2.0 y el CP2102 se conectan como se puede ver en el tutorial de GIMX.

La cosa se ve (esquemáticamente) así al final:

El diagrama

El diagrama

Yo uso exactamente la misma configuración de hardware; pero mi software es bastante distinto, incluyendo el firmware del Teensy++ 2.0.

La idea de GIMX es, básicamente, poder reemplazar un control del PlayStation 3 por el ratón y teclado de una computadora. En particular, esto permite jugar juegos FPS (first-person shooter) como dios manda, no con la desgracia que es el DualShock 3 (y me imagino el 4) cuando uno trata de destripar desconocidos en línea.

No me gustan muchas de las decisiones que tomaron los escritores de GIMX; su software toma control por completo de un teclado y ratón conectados a la computadora, y me parece que utilizan demasiado interfaces gráficas cuando un montón de cosas saldrían mejor con la línea de comandos o archivos de texto. En particular, que para configurar el mapeo de teclas del teclado a botones del DualShock 3 haya que usar una interfaz gráfica, o que tuviera que meterme al código de GIMX para ver qué opciones de línea de comandos toma el principal ejecutable, porque está pensado para ser ejecutado todo por ventanas, se me hacen ligeramente heréticas en Linux. Aunque claro, el software está pensado para gamers, no programadores.

Que tomen control absoluto del ratón tiene sentido; para que GIMX jala bien bien, uno necesita un ratón con una resolución altísima (recomiendan 5000 DPI), porque tienen que hacer transformaciones sobre cómo se está moviendo el ratón para que el Teensy++ 2.0 pueda emular movimientos fluidos y naturales de un DualShock 3. Que tomen control absoluto del teclado no tiene sentido, pero pues eso hacen.

Como sea; para mi proyecto no utilicé GIMX, pero sí me inspiré en ellos. De cualquier forma, GIMX me permitirá en un futuro tal vez comenzar a jugar juegos FPS en mi PlayStation 3 (o 4, cuando lo tenga); la verdad el DualShock 3 me pone de malas para FPSs, pero hay juegos FPS que sí me gustaría jugar en mi PS3 (BioShock y Fallout los más prominentes).

GIMX también resulta útil de vez en cuando en TPSs (third-person shooter, que son los que más juego), y de hecho ya lo usé para una cosilla. Sólo que para usarlo regularmente, sí voy a necesitar meterle mano al código, porque me parece terriblemente agresivo.

Así que para terminar esta parte; no utilicé el código de GIMX para mi proyecto, pero sí me inspiré en ellos, y su diseño de cómo acoplar el hardware sí se los fusilé por completo. Más adelante tal vez lo utilice para jugar FPSs, y de vez en cuando TPSs; pero sí cuestiono ciertas decisiones de diseño que tomaron al escribirlo.

De cualquier forma, GIMX es un proyecto súper chido porque me inspiró para yo poder hacer el mío.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *