21 julio 2012

Tutorial: Consolas Android como controladores de juego (para android)

Tutorial: Como utilizar consolas Android como controladores de juego (para android).




Agradecimientos


A los chicos de Locnet, que gracias a sus aplicaciones An2An y GameKeyboard he conseguido utilizar alguans consolas android como mandos inalámbricos para jugar.



Uso de esta review



Se permite utilizar esta review, ya sea copiándola o referenciándola mediante un link, a cualquiera que lo desee, con la única condición de que se mantenga el autor y un enlace a la fuente original de esta review, y que se cita en el siguiente apartado.

Fuente y actualización de la información de este artículo



El artículo original se encuentra en mi blog.
También existe una versión actualizada en http://www.elotrolado.net y en http://www.gp32spain.com

Para actualizaciones sobre este artículo, sugiero visitar alguno de los enlaces mencionados anteriormente.


Introducción


Hace algún tiempo se me ocurrió una idea para transformar una consola Android, como estas que se están haciendo tan populares como las JXD, Yinlips y similares, en un mando inalámbrico para conectar en otra tablet/dispositivo Android, y disfrutar de los juegos con este pseudo-mando (y de paso ganar una funcionalidad práctica para estos dispositivos), todo esto basado en conectividad vía WIFI, ya que las consolas android existentes hasta la fecha no disponen de módulos bluetooth, y sobre el mismo concepto de conectividad, podríamos dar una opción de mando inalámbrico a aquellos usuarios que, por ejemplo, disponen de algún dispositivo (tablet android) que no disponga de bluetooth ni puerto USB/Host, por lo que es imposible conectar un mando tradicional en ellos.

No voy a contar toda la historia del proyecto, pero decir que por distintos motivos se encuentra "congelado", a falta de poder invertir mas tiempo en el, pero navegando por el market he dado con un programa que me serviría mas o menos para el mismo principio básico que había planteado. He contactado al desarrollador y gracias a su soporte y sugerencias he logrado conectar 2 consolas android a otro dispositivo, y utilizar estas consolas como mandos inalámbricos para jugar.

Quiero dejar claro que este método-solución no es válido para todos los juegos o emuladores existentes, y que por tanto es una solución con restricciones en su uso.

También quiero comentar que este método no es tan efectivo como un mando/teclado físico, y que en algunos casos/configuraciones puede presentar algun delay entre la ejecución del comando y la reacción en el juego/aplicación.

Nomenclatura

Salvo que indique lo contrario, me referiré a cada elemento de esta guía como:

Mando "A" (que en este caso será una consola JXDS5110)
Mando "B" (que en este caso será una consola Yinlips YDPG18-A)
Tablet "T" (que en este caso será una Ramos W17/Pro)

Pueden reemplazarse cualquiera de los dispositivos señalados por otros, según conveniencia/disponibilidad.

Así, en el tuto puedo referirme a 'conectar el mando "A"' o simplemente 'Conectar "A"'

Requisitos


Existen 2 configuraciones básicas:

- Jugar solo con 1 dispositivo/mando
- Jugar con 2 dispositivos

Dependiendo de los mandos que deseamos utilizar, utilizaremos o no el programa GameKeyboard

Explicación


El programa An2An lo que hace es "enviar" las teclas que se presionen en un dispositivo, y en otro recibirlas y reproducirlas. Su fuincionamiento es relativamente sencillo y no debería presentar un inconveniente lograr conectar 2 dispositivos (vía wifi o bluetooth) para realizar esta "replicación" de teclas.

como la solución principal la planteaba para consolas android, las cuales en general no disponen de conectividad bluetooth, voy a asumir desde ahora que la solución se basará en conexión Wifi.

Las consolas android basan todo su sistema de botones en que en realidad son teclas de un teclado estándar. Por tanto, cuando presionamos un botón, por ejemplo, el gatillo izquierdo, en algunas consolas tiene asignado la tecla "L" (por poner un ejemplo), y así con todas los demás botones/teclas del dispositivo.

Lo que haremos es que mediante An2An "enviaremos" estas teclas pulsadas desde la consola android, al dispositivo (vamos a llamarlo receptor, y podría ser cualquier otro dispositivo android como una tablet, o un móvil conectado a un TV, etc) Receptor, y este reproduce la tecla pulsada, lo que debería ser entendido por el juego como una pulsación de la tecla real y por tanto reaccionar según como esté configurado.

En palabras mas simples. si presiono las flechas (D-PAD) en "A", el receptor "T" reaccionará de acuerdo a la tecla presionada, y así con todos los botones.

La idea es tan simple, que me cuesta explicarlo de forma clara y sencilla, así que vamos a ir directamente con la configuración.

Pasos para configuración de un solo dispositivo (1 player)

instalar An2An en ambos dispositivos (la consola android que será el mando, y en el receptor que será donde ejecutemos los programas de juego/emuladores)

El esquema general de esta conexión es el siguiente:

- Consola "A" (con An2An configurado como Transmisor)
- Tablet "T" (Con An2An configurado como Recpetor)


Configuración de 1 mando


Mando "A" (Transmisor)



  • Abrir el programa en "A", ir al menú y seleccionar "More->Settings->Connection Mode->Seleccionar 'Wifi'"


  • Volver a la pantalla principal, ir al menú y seleccionar "Start Transmitter"



El programa mostrará la IP del dispositivo en la barra superior del programa. Para seguir con el ejemplo en este caso la ip es "192.168.0.101". Este dato nos será de utilidad cuando queramos conectar el dispositivo.


El programa y dispositivo se quedarán en estado "waiting...", esperando a que un receptor establezca una conexión.



Tablet "T" (Receptor)


En el receptor, abrir el programa y seguir los siguientes pasos:


  • En el menú del programa, ir a "More->Settings->Connection Mode->Seleccionar "Wifi"


  • Volver a la pantalla principal y en el menú seleccionar "More->Setup Receiver"


  • Primero, realizar el step 4 (Configurar el transmisor). Seleccionar la opción "Remote Address 1", y en el cuadro de texto ingresar la IP de "A" que para el ejemplo será: 192.168.1.39 


  • Realizar el Step 1 del asistente (básicamente, habilitar el teclado An2An en android). 


  • Buscar en los teclados existentes el "An2An Receiver" y marcar la casilla


  • Android solicitará confirmación, dar a Aceptar y volver al programa An2An (con "Back")


  • Nota: Si el S.O. es android 4.0, entonces antes de volver, seleccionar "Teclado y método de introducción->Predeterminado->An2An Receiver", volver al programa An2An y saltar el siguiente paso.



  • Si el S.O. es Android 2.x, realizar el Step 2 (seleccionar el método de entrada activo en android). Seleccionar y mantener presionado sobre el cuadro de texto "Step 2" para que aparezca el menú "Editar Texto". Seleccionar "Método de introducción de texto->An2An Receiver"
  • Volver a la pantalla principal y realizar el step 3 (mostrar la interfaz de An2An). Seleccionar la caja de texto "Step 3". Se mostrarán algunas opciones del programa en la parte inferior.


  • Presionar "Connect Transmitter" en el menú inferior de An2An. Aparecerá una lista de Mandos/Transmisores configurados. Seleccionar el que corresponda (en este caso, 192.168.1.39)



A estas alturas, ya deberían estar conectados ambos dispositivos. 



Ahora en el receptor simplemente seleccionamos la aplicación que deseamos utilizar, como un emulador, y configurar el mapeo de teclas, pero utilizando la consola para las asignaciones.

Sugiero probar con los emuladores Tiger Arcade (admite sólo 1 mando) o FPSe (admite 2 mandos), que estoy seguro que funciona con ellos sin problemas.

Bien, ya tenemos una consola configurada, pero ahora ¿como conectar una segunda consola?


Se que a estas alturas muchos pensarán en utilizar las otras configuraciones del Receptor "T" para asignar mas ips, pero estas configuraciones son solo para seleccionar 1 dispositivo de varios configurados, para utilizar de controlador (no se pueden conectar a mas de 1 dispositivo de forma simultánea con An2An).

Además, existe otro problema. Supongamos que de forma hipotética hemos podido conectar 2 consolas JXDS5110 a una tablet. Ambas consolas tendrán las mismas teclas configuradas, por lo tanto si enviamos estas teclas al receptor, ésto no podrá determinar si por ejemplo la tecla Flecha Arriba presionada corresponde a la consola "A" o a la consola "B", por tanto tenemos un problema añadido que hasta ahora ni siquiera habíamos previsto.

Es aquí cuando entra en acción el segundo programa: GameKeyboard

Exlicación


GameKeyboard es una aplicación que entre sus funcionalidades puede "traducir" las pulsaciones de las teclas físicas en otras, y gracias a esta funcionalidad podemos reasignar casi todos botones de la consola en otras, para no coincidir entre las teclas de ambos dispositivos.

con lo anterior ya tenemos solucionado un problema, el que se refería a la duplicación de teclas, pero nos queda un último problema: ¿como conectar 2 dispositivos al receptor?

como he dicho, el receptor no puede conectarse a 2 Mandos/Transmisores de forma simultánea. Es aquí donde aplicamos un "truco" que en principio puede no ser tan evidente, pero la gente de Locnet me ha comentado y que nos permitirá conectar 2 mandos a una tablet:
Conectar los mandos en cadena

Así, tendremos un esquema general que será el siguiente:
- Mando "A" (con An2An configurado como receptor y transmisor de forma simultánea)
- Mando "B" (con teclado re-asignado mediante GameKeyboard, y con An2An configurado como transmisor)
- Tablet "T" (con An2An configurado como receptor)

y el esquema final sería:

"B" -> "A" -> "T"

creo que con este esquema ha quedado claro como se debe configurar.

configuración con 2 mandos


Basándonos en la configuración realizada en el esquema 1, vamos a realizar los pasos necesarios para conectar la segunda consola:


Mando "B" (Transmisor)



  • Arrancamos el programa GameKeyboard


  • Ejecutar el Step 1. Seleccionar de la lista de teclados el "Game Keyboard" y habilitarlo (aceptar a la confirmación)


  • Si estamos en Android 4.0, seleccionar seleccionar "Teclado y método de introducción->Predeterminado->An2An Receiver", volver al programa GamKeyboard y saltar el siguiente paso
  • Ejecutar el Step 2, y de la lista de métodos de introducción seleccionar "Game Keyboard"


  • Ejecutar el Step 4 para configurar/remapear el teclado de la consola. 


Este último paso es importante puesto que con esto evitaremos que coincidan las teclas de ambas consolas.


  • Marcar la casilla "Re-Map Hardkey"


  • Seleccionar la opción "Hardkey Mappings" para remapear el teclado físico.


El mapeado es muy sencillo de realizar. Haré un ejemplo con el primer Mapeo


  • Seleccionar "Mapping 1", y en la ventana que aparece hay que presionar la tecla física que deseamos cambiar, y a continuación seleccionar de la lista cual debería ser su mapeo.
  • Voy a configurar la tecla "Flecha Arriba" del D-PAD, presiono "Arriba" en el D-PAD (los botones de dirección de la izquierda de mi consola) y en la pantalla, en el título de la lista aparecerá "Remap [D-Pad Up] to"


  • Ahora, asignaré esta tecla al número 1 (puede ser cualquier tecla. es cuestión de que no coincidan con las teclas de la otra consola. como se que los números no están asignados, entonces los utilizaré)




Continuar así con todas las teclas/botones de la consola. Yo he utilizado estas teclas/carácteres para asignar todo el teclado de la consola (utilizaré la nomenclatura de PSX para nombrar los botones):



  • D-PAD = 1
  • D-PAD = 2
  • D-PAD = 3
  • D-PAD = 4
  • Triangulo = 5
  • Equis = 6
  • Cuadrado = 7
  • Círculo = 8
  • Select = 9
  • Start = 0
  • Gatillo Izquierdo = [
  • Gatillo Derecho = ]
  • Vol Up = ;
  • Vol Down = '




  • Presionar "Home" para ir a la pantalla principal de android y probar si funciona el mapeo en cualquier caja de texto. 
  • Debería aparecer la interfaz del GameKeyboard (un stick y unos botones dibujados en pantalla). Si se presionan los botones físicos, deberían aparecer las teclas que hemos asignado.
  • Abrir el programa An2An, y directamente seleccionar "More->Start Transmitter". Debería aparecer la IP en la parte superior izquierda de la aplicación. Para este ejemplo, es el "192.168.1.38"



Ya tenemos configurado el segundo mando. Ahora solo falta conectarlo.


Mando "A" como Receptor/Transmisor



  • Con el programa conectado en modo Transmisor (debe aparecer "connected" en la esquina superior derecha), seleccionar "More->Setup Receiver", Ir directamente al Step 4 y seleccionar "Remoote Adress 1". Ingresar la IP de "B", que para el ejemplo es el 192.168.1.38


  • volver a la pantalla de configuración del receptor y ejecutar el Step 3, seleccionando de la lista el mando "B" que en este caso es el 192.168.1.38




A estas alturas deberían estar los 3 dispositivos conectados. si alguno se ha desconectado, volver a la pantalla principal de Android y recargar la aplicación An2An, en este orden:

Habilitar mando "B" (Star Transmitter)
conectar el mando "B" en "A" (setup receiver -> Connect Transmitter -> Seleccionar de la lista el mando "B")
en el mismo mando "A", volver a la pantalla principal de android y recargar la aplicación An2An. y seleccionar "Start Transmitter" para Habilitar el mando "A"
En la Tablet "T", conectar el receptor "A" (setup receiver -> Connect Transmitter -> Seleccionar de la lista el mando "A")
En la tablet "T" ir a la pantalla principal de Android (con el botón "Home" (no con la tecla "Back", por que finalizará la ejecución de An2An) y ejecutar el programa/juego que deseamos cargar. Remapear el teclado dentro del juego y ... jugar!

Dejo un vídeo que he creado para otra review, pero que habla de lo mismo, y en donde he configurado 2 mandos para trabajar con un Set Top Box (Engeldroid), y logro jugar al emulador de psx FPSe

La configuración del vídeo es:
Mando "A" = Yinlips G18
Mando "B" = JXDS5110
Tablet "T" = Engeldroid EN1007M (conectado a una TV por medio de HDMI)




Espero no haber liado mucho con la explicación, y que este método sea de utilidad para los usuarios que poseen consolas Android.

No hay comentarios:

Publicar un comentario