Pues eso, que he creado un artículo sobre el tema.
http://manguiro.blogspot.com.es/2014/01 ... droid.htmlA continuación dejo un resumen.
Manos a la obraAunque es una versión mas "de andar por casa" que NVidia Shield, tenemos unos requerimientos mínimos que intentaremos cumplir.
También hay que considerar que la emulación basada en la solución de Kainy, tiene bastante uso de CPU, por lo que el desarrollo de algún juego se puede ver afectado en su rendimiento.
¿Que necesitamos?Para la infraestructura:
- PC "aceptable", que permita ejecutar los juegos que queremos ejecutar (no es lo mismo el requerimiento para ejecutar Doom, que para ejecutar Batman Arkham City). Considerar que cuando se realiza streaming, hay mas uso de CPU, por lo que si tienes un juego que va muy justo de procesador, al hacer streaming irá relentizado. En mi caso para las pruebas de este artículo utilizo un%%%%c13%%%%Samsung%%%%c13%%%%NP300V5AH Core i7%%%%c13%%%%(que es de mi mujer en realidad, jejeje)
- Puerto de red por cable (de preferencia Gigabit). He probado con algún adaptador de red USB, y también funciona sin mayores problemas.
- Router con buena antena Wifi. En mi caso utilizo el TP-Link TD-W8970%%%%c13%%%%(su precio oscila entre 50 y 55€ en tienda española. es cuestión de buscar)
- Consola/Dispositivo Android
Software requerido (Estos son los programas que he utilizado. Mas abajo pondré enlaces a los ficheros de configuración que tengo y que he utilizado en las capturas de vídeo):
Ficheros de Deen0X
- Kainy Titanium Backup (solo datos, es un directorio donde guardaré actualizaciones de las configuraciones de Kainy). En este fichero se encuentran la mayoría de configuraciones de teclado y layouts de pantalla que podamos necesitar.
- VJoy fichero de configuración. Este fichero funciona en conjunto con la configuracion de Kainy, y permite el mapeado directo de 2 players a los joysticks emulados en Windows
- X360ceficheros de configuración. Copiar estos ficheros en cada juego que necesitemos soporte de mando de X360. Esta configuración esta preparada para trabajar con el fichero de configuración de VJoy (los joysticks virtuales)
El fichero de Kainy contiene preconfiguraciones de layouts y teclados, en 3 variantes cada uno:
- Player 1
- Player 2
- Player 1 var: Esta configuración es una altenrativa de uso para el Player 1, dependiendo del dispositivo donde se utiliza.
se incluyen estos layouts Genéricos (no son específicos para los dispositivos, sino que se toma como base la máquina. Usar el que mejor se acomode con el dispositivo que vamos a utilizar):
- JXDS7800B
- IBEN-L1
- Much i5
- Tablet Genérica (7")
- OUYA
- GPD-G5A
- GPD-G7
También están las configuraciones de los botones para los mapeos de teclas
Ficheros de VJoyEl fichero .rar de configuraciones VJoy, contiene 5 ficheros:
- VJoy XYAB_L1R1L2R2.ini
- VJoy XYAB_L2R2L1R1.ini
- VJoy YXBA_L1R1L2R2.ini
- VJoy YXBA_L2R2L1R1.ini
- VJoy.ini (idéntico a VJoy XYAB_L1R1L2R2.ini)
En general, un orden de botones standard es, hablando en nomenclatura de X360, es la que denominaremos XYAB (por que están en ese orden, de izquierda a derecha y de arriba hacia abajo):
Pero algunos dispositivos tienen cambiados estos valores. La principal variante de este orden es este (YXBA):
Tomaremos como normal la XYAB, pero si ves que los botones están intercambiados, prueba a cargar alguna de las variantes YXBA que he puesto en el fichero (YXBA_L1R1L2R2 debería ser la forma "normal")
Ahora, dentro de estas variantes he puesto 2 extra, que son con los gatillos intercambiados.
Si miramos una consola como la JXDS7800B, veremos que el orden de los gatillos es (de externo hacia interno):
Hay algunos dispositivos como la consola GPD-G18 que tienen intercambiados estos gatillos, y los presentan como:
Los ficheros que he puesto en la configuración tienen estas variantes, de los botones y de los gatillos, para adecuar fácilmente los botones a nuestro dispositivo, sin tener que cambiar nada en las configuraciones. Simplemente vamos a VJoy y le damos a "Load" para cargar alguno de estos ficheros.
El mapeo que normalmente haríamos para enlazar de un control standard a un mando de X360 sería algo como esto:
Como dato, en general utilizo la variante de L2R2L1R1 (los gatillos invertidos) por que me resulta mucho mas cómodo utilizar los gatillos externos como gatillos (LT y RT en nomenclatura X360), y los internos como pulsadores (LB y RB)
Incluso en consolas con solo L1 y R2, utilizo esta configuración cambiada, por que generalmente los gatillos tienen mucho mas uso que los pulsadores. Por ejemplo, en Batman Arkham City, el gatillo derecho del mando de X360 se utiliza mucho para el gancho (para subir a los edificios) y el gatillo izquierdo para activar los gadgets, mientras que el pulsador derecho se utiliza con menos frecuencia al igual que el izquierdo.
En los juegos de coches, generalmente el gatillo derecho se utiliza para acelerar y el izquierdo para frenar, por lo tanto, prefiero utilizar los gatillos L1 y R1 de cualquier consola, como L2 y R2 (los gatillos de un mando X360), y L2 con R2, que están mas complicados de utilizar al estar mas hacia adentro en el diseño de las consolas, los dejo para los pulsadores L1 y R1 (LB y RB)
Ficheros X360ceEstos ficheros contienen la configuración para el emulador del mando X360ce. Basicamente hay que copiar estos ficheros en cada directorio con los ejecutables de los juegos que necesitan un mando de X360 para unfionar (como el Batman Arkham City, por poner un ejemplo)
Instalando programasLa parte mas complicada de todo el tema de streaming es configurar todo para que funcionen los joysticks, y eso ya lo tenemos con los ficheros anteriores.
Ahora, instalamos Kainy en Android, y NO ABRIRLO todavía. (si lo has abierto, puedes ir a detalles de la aplicación y eliminar el caché y los datos del programa, y forzar a que se detenga)
Descargamos el fichero del backup de Kainy, y lo importamos con Titanium Backup, dando a restaurar los Datos.
Una vez importados, en android solo nos faltará configurar la información del Servidor Kainy para poder conectarnos.
VJoyInstalamos VJoy. La instalación es muy sencilla y no debería complicarnos. Una vez instalado, copiamos el fichero de configuración que hemos descargado (VJoy.ini) en el directorio donde está VJoy, y lo dejamos con ese nombre para que lo cargue automáticamente al arrancar el programa.
Instalamos Kainy Server en nuestro PC donde ejecutaremos los juegos (que llamaremos PC-Gamer). Una vez instalado, ejecutamos el programa y al abrir la interfaz, nos vamos a "Settings" y luego a "Network"
Para conectarnos sólo nos hará falta la ip Local (que en el ejemplo es 10.0.0.10) y la password de Kainy, pero para una correcta implementación de la interfaz de conexión en Android, pondremos los 4 datos marcados con rojo.
Nota: La IP Local es la IP de nuestro PC (es la ip del adaptador de red que estamos utilizando)
Abrimos Kainy en Android, y nos saldrá una página con varias opciones vacías. Cada una de estas opciones es un slot, y nos permitirá conectarnos a un servidor.
Seleccionamos una y nos dará las opciones de conectar (que todavía no hemos configurado la conexión) y editar el slot. Editamos.
En esta pantalla llenamos los datos que necesitamos. El nombre del servidor es un nombre que le daremos al slot, el resto, son datos que sacaremos de la pantalla de settings de Kainy en el PC
Damos al botón "Atrás" para guardar, y ya nos sale el slot disponible para conectar.
Verificar que en Windows no nos salta el firewall solicitando permisos, de ser así, concederle los necesarios para que Kainy se conecte sin problemas al PC. (
Aquí hay una guía para conceder permisos a Kainy con el firewall de windows)
X360ceFinalmente, copiamos los ficheros que he puesto para X360ce, en la carpeta de binarios de cada juego que necesitemos un mando de X360
Por ejemplo, para Batman Arkham City, el directorio de binarios de mi instalación es:
D:\SteamApps\common\Batman Arkham City GOTY\Binaries\Win32\Hay que copiarlos donde está el .exe de cada juego.
Si lo hemos hecho bien, cuando lancemos el juego oiremos un "beep" (o algún sonido del sistema) que nos indica que la emulación del mando de X360 ha iniciado.
Prueba generalAbriremos VJoy, habilitaremos la emulación (el check superior izquierdo que pone "Enabled"), nos aseguramos que "Block Keys" y "Auto center" están marcados.
Nota: Cuando "Block Keys" está seleccionado, cuando presionemos teclas que están mapeadas en el programa, windows no las mostrará como teclas, sino que se comportarán como el botón o control del joystick al que han sido asignadas, por lo tanto mientras está activa la emulación, no se podrá escribir con el teclado.
Conectamos Kainy desde Android, Seleccionamos el layout que mas nos acomode para nuestro dispositivo, y seleccionamos el mapeo de teclado que nos resulte cómodo. En este caso, voy a utilizar una consola JXDS7800B y he elegido el mapeo "Player 1", junto con el layout "JXDS7800B Player 1"
En Kainy, damos al botón [BACK], y en el menú que nos aparece le damos a "Ajustes"
Seleccionamos en la "Ranuras de Hardware" la configuración "Player 1" (que he creado para Kainy), y seleccionamos "Atrás"
A continuación vamos a Windows, ejecutamos VJoy y lo activamos (Enabled debe estar marcado)
A continuación abrimos las propiedades de joystick (ejecutar "%windir%\system32\control joy.cpl") y vamos al joystick 1, y en la pantalla de pruebas, movemos los controles de nuestro dispositivo.
Finalmente, vamos al juego que queremos ejecutar, por ejemplo Batman Arkham City, y en el directorio de los binarios (.exe) ejecutamos x360ce.exe, y movemos los mandos y botones de nuestro dispositivo
Cambio de resolución de pantallaUna vez configurado todo correctamente, vamos a las propiedades de pantalla y cambiamos la resolución de windows por una que sea %%%%c13%%%%lo mas cercana a la configuración de pantalla de nuestro dispositivo Android, y la profundidad de color a 16 bits.
por ejemplo, para la JXDS7800B, que tiene una resolución de 1280x800 pixels. Windows nos permite una resolución de 1280x720, por lo que usaremos esta como resolución base.
Cambiar la resolución de Windows es en el caso de que ejecutemos juegos a pantalla completa. Si vamos a ejecutar juegos en ventana, no es necesario cambiar la resolución de pantalla de windows, pero si es aconsejable bajar la profundidad de color a 16bits
Nota: Si vemos que aún así tenemos un streaming poco fluído, podemos intentar otro "truco". En android instalamos "Resolution Changer Pro" o alguno similar, que nos permita cambiar la resolución de la pantalla en Android. Vamos a bajar la resolución de la pantalla en android para ganar en fluidez en el streaming. Por poner un ejemplo, podemos bajar a 1024x600 o a 800x600. Ya es cuestión de "jugar" con algunos valores mas o menos similares a los de windows, y encontrar alguno que nos vaya bien. Ojo, según que programa utilicemos algunos valores podrían colgar el dispositivo. Hay que asegurarse de que estos valores no son permanentes (que no se apliquen cuando reiniciamos android)
¿Player 2?En las configuraciones he puesto énfasis en establecer una configuración funcional para el player 2, pero para que nos puede servir esto?
Existen varios usos en realidad. Empezando por el mas simple, que es utilizar una consola como mando en windows (sin el streaming de vídeo)
(En este vídeo utilizo Droidmote como mando, pero es exactamente lo mismo para Kainy)
Pero el uso mas interesante (creo yo) es la posibilidad que tiene Kainy de mandar streamings de partes de una pantalla, y poder conectar mas de un dispositivo al mismo servidor.
Con esta característica, se pueden conseguir cosas interesantes como en este vídeo
Donde básicamente he cargado un emulador de GameCube en el ordenador, he cargado un juego que permite jugar 2 players a pantalla dividida, y aprovechando esto mismo, he enviado la mitad superior del juego a una consola, y la parte inferior a otra consola, obteniendo 2 juegos "separados" en 2 consolas, y que se comportan como juegos independientes en cada una (como si fuese un juego en red)
Para esto basicamente he cargado un layout Player 1 en una consola, con su slot de hardware en "Player 1", y en el otro dispositivo un layout y slot de hardware "Player 2"
Como VJoy (y x360CE) ya están configurados con los 2 mandos, es muy fácil mapearlos en el emulador (o en un juego) y obtener 2 "pantallas independientes" con mandos independientes para cada una.
Cambio en prioridadescon el juego en ejecución, abrimos el administrador de tareas y seleccionamos "kainy.exe *32" (el proceso de Kainy) y le establecemos la prioridad a "por encima de lo normal". Buscamos el proceso de nuestro juego que tenemos en ejecución, y establecemos la prioridad a la misma "por encima de lo normal"
Se puede probar con esta prioridad y establecerla a "alta" en ambos casos, pero nunca ponerla a "tiempo real", por que ya no tendremos control sobre windows. Se aconseja tener siempre ambos procesos con la misma prioridad.
Ultimas notasTal como se ha comentado en el artículo, evitar IPs dinámicas, y conexiones WIFI. Usar siempre conexiones por cable.
En android evitar cualquier programa que pueda estar trabajando en segundo plano (actualizaciones automáticas de google, por ejemplo) y que nos quiten ancho de banda para nuestro streaming.
Y sobre todo aplear al ingenio y al uso del sentido común.
¿Y que viene ahora?Esta guía la he publicado con las versiones actuales de cada programa, poniendo todo mi empeño en simplificar el proceso para aquellos usuarios que no tienen los conocimientos o destreza necesarios para lograr llegar a realizar un streaming con un control sobre los juegos. He visto muchos comentarios en la web donde indican que configurar Kainy o Splashtop es muy complicado, y dejan de intentarlo por lo mismo.
No es complicado, solo basta hacerse un poco a la idea de como trabajan.
También la he publicado antes de lo previsto. En principio quería hacer pruebas de conectividad y uso de gamestreaming por internet, pero la conexión que esperaba (Fibra) no ha llegado a tiempo, y no he logrado dar con alguien que me ayude a realizar pruebas.
Además he logrado ponerme en contacto con el desarrollador de Kainy, y me ha comentado cosas muy interesantes para la próxima "versión grande", que será la 1.75, y que incluye varias mejoras, modificaciones, y nuevas características que harán el proceso mucho mas simple de lo que he explicado aquí.
Cuando tengamos esta versión, publicaré una guía rápida para hacer streaming (tranquilos, será algo mucho mas resumido), con las correspondientes actualizaciones en los métodos y configuraciones.
Palabras finalesMe he extendido en esta guía, por que la primera parte es algo como un "libro de ruta", pasando por varias etapas e investigaciones que hice, con la idea de que alguien que se lo lea se le ocurran nuevas cosas para investigar y proponer.
Espero que no haya resultado muy pesado leer este ladrillo, y espero vuestras opiniones, colaboraciones y comentarios al respecto.
Para quien quiera ver mas vídeos de streaming, he generado una lista de reroducción en mi canal de youtube.
Zalu2!
Deen0X