Gamestreaming 3.1 - Conceptos generales

Conceptos generales


Antes de meternos de lleno en lo que son las alternativas de streaming, quiero dejar esta página para comentar algunos conceptos generales que nos servirán a la hora de utilizar algunas de estas alternativas.

No son cosas que necesariamente tengamos que realizar en nuestra solución de Gamestreaming, pero como concepto general lo dejaré aquí para referencias dentro del mismo artículo.


Red Local (Local Lan)




Nos referiremos a una red local cuando estemos hablando de los dispositivos que están en la misma red, esto es, conectados al mismo router, y por tanto que se pueden "ver" entre ellos.

Una red local no necesariamente tiene salida a internet. Esto no es importante, pero me parece necesario aclarar, por que mucha gente piensa que cuando se habla de red local, estamos hablando de alguna manera de salir a internet, y no tienen una relación necesaria.

Por poner un ejemplo de lo que puede ser una red local, hablando desde el punto de vista de este artículo, pondré el siguiente gráfico:



En el ejemplo, tenemos varios tipos de dispositivos (y pueden ser mas de uno), conectados a un mismo router, por lo tanto estos dispositivos están en la misma red local.


Mirar el apartado "Configuraciones de red" para obtener mas detalles sobre las distintas configuraciones de redes y los resultados que podemos esperar de ellas, para realizar Gamestreaming.

Herramienta PING


Existe una herramienta llamada "ping" que nos sirve para consultar por una ip, y ver si hay respuesta, o lo que es lo mismo, verificar nuestra conectividad con una máquina o sitio en la red.

Si vamos a una línea de comandos y hacemos ping a "www.google.com", el sistema nos responderá:


* Nota: puede que de un sitio a otro, la ip de google en particular no sea la misma, por que pueden existir mas de un servidor que resuelva para el mismo nombre, y se prioriza la cercanía del servidor para responder mas rapidamente.

En mi caso, google me dice que está en la ip: 74.125.230.19

Si voy un navegador y pongo esa ip en la barra de tareas, obtengo:


La diferencia de lanzar la ip o lanzar el nombre DNS de google, es que en el primer caso voy directamente al servidor y obtengo la información, y en el segundo caso, paso por un servicio de DNS para que me de la IP, y con esta ir al servidor.

Evidentemente, es mucho mas cómodo y fácil de recordar un nombre como "www.google.com", que recordar su IP (y esperar a que no cambie cada día, en el caso que fuese una IP dinámica, que cambia cada vez que se reinicia el router).


IP Interna


Una IP es el identificador único de un dispositivo en la red en la que se encuentra conectado.

Así, en el ejemplo anterior, cada dispositivo estará conectado al router, y tendrá asignado un número único de conexión, que permitirá al router enviar y recibir paquetes de forma correcta a dicho dispositivo.

Para saber fácilmente nuestra IP, abrimos una ventana de línea de comandos (inicio->ejecutar->cmd.exe)

Una vez en la línea de comandos, ejecutamos la siguiente instrucción:
ipconfig



A continuación, la respuesta de este comando nos dará mucha información. Nos fijaremos en la línea que pone "Puerta de enlace predeterminada". Esta es nuestra salida a internet desde nuestro PC, o lo que es lo mismo, es la dirección del router de nuestra red.



IP Router


Nuestra red siempre se conformará de una IP que tiene un segmento o inicio, y que solamente el último número de dicho "patrón" será el que realmente nos indicará el número asignado a nuestra conexión.

Las IPs típicas que podemos encontrarnos en redes caseras son similares a las siguientes:

192.168.0.XXX
192.168.1.XXX
192.168.2.XXX

En donde XXX indica el número de asignación. Este número puede ir de 0 a 255, o lo que es lo mismo, podemos tener hasta 255 dispositivos conectados en la misma red.

Generalmente, el router tiene asignado el número de ip terminado en 0, 1 o 255. Ejemplos:
192.168.0.0
192.168.0.1
192.168.1.255
192.168.2.1

Para saber cual es la ip de nuestro router, la manera sencilla es la siguiente.

Abrimos una ventana de línea de comandos (inicio->ejecutar->cmd.exe)

Una vez en la línea de comandos, ejecutamos la siguiente instrucción:
ipconfig

A continuación, la respuesta de este comando nos dará mucha información. Nos fijaremos en la línea que pone "Puerta de enlace predeterminada". Esta es nuestra salida a internet desde nuestro PC, o lo que es lo mismo, es la dirección del router de nuestra red.



IP Externa


Nuestra red interna tiene asignada IPs por cada elemento que conforma la red, pero estos elementos no se conectan directamente a Internet, sino que pasan por un router.

Este router tiene asignada una IP distinta a la que conforman los elementos de nuestra red interna. 

Esta IP es única en internet. En la mayoría de estos casos, esta ip es dinámica, esto significa que nuestro proveedor de Internet nos asignará una IP para poder conectarnos a la red, y esta IP cambiará cada vez que el router se reinicie.

Para algunos usos prácticos de este artículo, vamos a necesitar saber nuestra ip externa.

Para saber tu IP externa, existen varios métodos. La mayoría dependerá de servicios externos, aunque también podemos ir a la configuración de nuestro router i obtener la información directamente, pero esto posiblemente sea lo menos práctico, puesto que implica conectarnos al router, acceder con nuestra password de administración, buscar el apartado informativo y saber leer el dato requerido (no en todos los routers se muestra en el mismo apartado, ni con el mismo nombre)

Para ser mas prácticos, vamos a utilizar uno de los tantos servicios online existentes para saber nuestra ip.

Simplemente, accede a cualquiera de estos sitios, y te informará de tu ip externa.
http://www.speedtest.net/ (que además de obtener tu ip, puedes hacer una prueba de velocidad)


Uso de servicios de nombres DNS (NO-IP)


Un DNS es un servicio que funciona como una agenda telefónica, pero a la inversa, esto es, le das un nombre y te devuelve un número.

Cuando escribes en la barra de tareas una dirección como "www.google.com", en realidad lo que hace el navegador es ir al servicio DNS, preguntar por "www.google.com", y el servicio le responde con la IP, y de esta forma el navegador ya sabe hacia donde ir para mostrar la página especificada.

En nuestro caso, si queremos ofrecer un servicio que se resuelve en nuestra máquina de casa, como puede ser crar un servidor de Gamestreaming, si queremos acceder a el tendremos que bien o saber la ip de nuestro router, o generar un nombre que lo resuelva por nosotros (y que se actualice en caso de reiniciar el router, con lo que la IP también cambiaría)

Existen varios servicios de DNS que podemos utilizar, y muchos de ellos tienen alternativas gratuítas.

En mi caso, utilizo el servicio de No-Ip.com, que ofrece un servicio de redireccionamiento de nombre gratuíto (aunque hay que confirmar mensualmente la continuidad del servicio)

Con este servicio, puedo crear un nombre único en la web, algo como "deen0xgamestreaming.no-ip.org", y que dicho nombre resuelva directamente con la ip de nuestro router.

Para generar este servicio, nos damos de alta en www.no-ip.com, y una vez dado de alta, vamos a nuestro panel de control


Seleccionamos "Add a Host"



En el cuadro "Hostname" pondremos el nombre de nuestro servidor. Este será un nombre único en internet, por lo que hay que buscar algo fácil de recordar, pero que no exista. Para este ejemplo he creado el host "deen0xgamestreaming"

Luego, seleccionamos el dominio. Busar alguno que esté en la lista de dominios gratuítos, que son los que aparecen a continuación de "No-IP Free Domanis". Para mi ejemplo, he seleccionado "no-ip.org"

El resto de datos no hay que hacer nada (La ip la captura automáticamente por nuestra ip externa).



Guardamos la configuración con el botón "Add Host" (hay que bajar en la página)



Y ya tenemos nuestro nombre de dominio creado.

Nota: En el ejemplo, ya tengo otro nombre de dominio, pero nos vamos a centrar en el que acabamos de crear.


Ahora, con esto el servicio de nombres resolverá a la ip que le indiquemos, pero claro, no resulta cómodo editar este dominio para ir constantemente cambiando la IP, por lo tanto vamos a hacer uso del cliente No-IP que nos hará esta tarea.

Descargamos de la página el Cliente No-Ip

Una vez descargado, lo instalamos en la máquina que hará de servidor (bueno, en cualquier máquina dentro de nuestra red servirá), y lanzamos el programa.

Se creará un icono en el area de notificaciones. Al seleccionarlo se abrirá nuestro cliente No-IP (DUC)


Seleccionamos "Edit", para abrir la ventana de configuración de nuestra cuenta.


Metemos los datos de la cuenta y seleccionamos "Sign In", para logearnos. El cliente nos informará que estamos conectados, pero seguirán apareciendo 2 marcas con rojo. es normal, por que no le hemos dicho cual de todos los hosts (que solo tenemos uno) queremos utilizar con nuestro servidor.



Seleccionamos "Edit Hosts", para abrir la ventana de configuración de hosts.


Marcamos la casilla de nuestro host que hemos creado, y seleccionamos "Save"

El programa nos indicará que ya está conectado y configurado, y que la ip que resolverá el nombre de dominio es la que nos aparece en la parte inferior del programa (el tercer check verde).


Se puede ver también el tiempo restante para la siguiente actualización de la ip del dominio. Si el router se reinicia solo, el programa automáticamente refrescará con la nueva ip en el siguiente refresco automátcio (por defecto, se refresca dada 5 minutos).

Si reiniciamos el router y necesitamos refrescar rápidamente nuestra ip en el nombre de dominio, simplemente le damos a Refresh Now, y el programa le informará al servicio No-IP que actualice la información IP del nombre.

Y con esta herramienta, ya podemos acceder a nuestra red (router) de forma remota.


Configuración del router DMZ


Esta configuración es una forma sencilla de redirigir las peticiones que vienen desde internet, y que sean resueltas por una máquina en concreto de nuestra red.

Dicho en otras palabras, si queremos ofrecer un servicio o acceder a alguno específico en internet, posiblemente tengamos que abrir puertos en nuestro router para permitir que dicha comunicación se efectúe.

En el caso de que la mayoría de servicios que queramos acceder y ofrecer se encuentren y van hacia una máquina específica de la red, podemos ahorrarnos pasos de temas de puertos si configuramos la DMZ (zona desmilitarizada)

Si no se define este valor, todas las peticiones específicas de puertos que no se hayan establecido en una regla del router (puertos que no hayamos "abierto"), no se resolverán y, en la mayoría de los casos, no se podrá establecer la comunicación de los servicios que quieren acceder a dichos puertos (o en palabras mas simples, si no abres un puerto de una aplicación que lo necesita, dicha aplicación no podrá funcionar)

Con este valor establecido, todas las peticiones realizadas al router, serán derivadas a la máquina que tengamos definida. Así, si  queremos acceder a un servicio de gamestreaming ofrecido por nuestro servidor, dependiendo del programa utilizado necesitará ciertos puertos abiertos para acceder al servicio, pero como configuramos directamente el DMZ, las peticiones serán resuletas directamente por el servidor, sin necesidad de abrir puertos especiales en el router.

Cada router tiene su propio menú de configuración. Pondré el ejemplo de un router DLink para servir de guía, pero debes buscar en tu router la forma de hacerlo correctamente.


En el cuadro de IP, hay que poner la IP correspondiente a la máquina que hará de servidor de Gamestreaming.


VPN


Una VPN es una forma de conectar a nuestra red de forma remota (y segura). No voy a profundizar en la definición, por que existen muchos sitios donde buscar una mas adecuada, pero para el caso de este artículo, voy a graficarlo con un ejemplo.

Tomando como base nuestra definición de red local anterior, si tenemos el mismo ecosistema, pero nos llevamos nuestra tablet a la casa de un amigo, ya no estaremos conectados al mismo router de nuestra casa, sino que estaremos en otro router, perteneciendo a la red local de la casa de nuestro amigo.



Con este esquema, no podremos conectar a nuestro router en casa para poder realizar el streaming, por que no estaremos en la misma red local.

Podríamos intentar conectarnos directamente por internet, pero en general nos produciría problemas, muchos programas no funcionarán con una configuración de este tipo, y sobre todo es una forma poco segura de acceder a nuestro servidor (cualquiera en internet podría hacerlo, y tomar el control, ya que no tendríamos un control mas estricto sobre quien se conecta a nuestro pc, a no ser que nos metamos en complicadas configuraciones de router, PC, etc, etc)

Por tanto, no recomiendo utilizar internet de forma directa para conectar 2 máquinas, en nuestro caso, nuestro servidor de streaming y el cliente donde se ejecutará.



Para solucionar este problema, vamos a hacer uso de una VPN, que no es mas que generar un "tunel" o enlace, desde la conexión que tenemos en nuestro dispositivo, con nuestra red local, utilizando Internet como si fuese un gran cable de red que nos conectará directamente.


Implementando esta solución, podremos sacar provecho a varias características de streaming, incluso estando fuera de casa.



Existen muchas guías para crear una conexión VPN en nuestro PC. Cualquiera de ellas servirá (esta guía de xatakaon lo explica bien, y es una de las que utilicé para prender a crearlas) para realizarlo. Yo pondré unos pasos muy genéricos para crear una red que nos servirá para nuestro propósito.

En mi caso estoy en una máquina con Windows 7, pero también lo he creado en Windows 8 (mi servidor de streaming es Win8) y son los mismos pasos.

Vamos a "Abrir centro de redes y recursos compartidos"
luego en el panel izquierdo seleccionamos "Cambiar configuración del adaptador"
En la pantalla siguiente, nos mostrará una ventana con todas nuestras conexiones en el PC


Seleccionamos Archivo, Nueva conexión entrante
En la pantalla siguiente vamos a agregar un nuevo usuario (botón "Agregar a alguien..."). Para nuestro ejemplo se llamará "vpngamer", y su contraseña será la misma "vpngamer"


En la ventana siguiente, marcaremos la casilla "A través de Internet", para permitir que podamos conectarnos desde fuera de nuestra red a este equipo.

En la pantalla siguiente nos mostrará la lista de propiedades de la conexión.


Aquí podemos selecionar "propiedades" de "Protocolo de Internet versión 4 (TCP/IPv4), en donde nos mostrará una ventana de configuración de las IP.


Podemos dejar esta ventana tal cual, en cuyo caso, las IP serán asignadas por el propio servidor DHCP que tengamos en nuestra red (típicamente, será el router), o podemos configurarla manualmente, en cuyo caso, debemos poner un rango de ip que se encuentre dentro del rango de nuestra red.

Si no sabes muy bien de que va, deja las opciones por defecto (sin asignar, para que las asigne el DHCP), pero si necesitas mayor control sobre tus conexiones, puedes asignarlas manualmente, incluída la opción para que sea el propio cliente VPN quien especifique su propia IP.


Esta configuración pocas veces la vamos a tocar, y el uso típico es para cuando tenemos filtrado algún servicio por ip en nuestro router, poder resolverlo correctamente, pero como he dicho, si no sabes de que va el tema, déjalo en el modo automático y debería bastar con eso.

Finalmente, damos al botón "Permitir acceso" para crear nuestra red VPN.


Una vez creada, windows nos indicará que necesitaremos la información del nombre de la máquina donde hemos creado la conexión. Para este caso, no será necesario por que nos conectaremos de otra forma, haciendo uso de la IP externa de nuestro router.

Podemos verificar que la red ya está creada, por que nos dejará el siguiente icono en la lista de conexiones disponibles.


Ahora, cuando un cliente se conecte a nuestra nueva VPN, se creará un nuevo elemento de conexión en esta lista. Con esta conexion podemos controlar si alguien está en nuestra máquina, y si lo deseamos podemos incluso desconectarlo.


Agregar juegos que no son Steam a la librería Steam


Como muchas de las alternativas de streaming utilizan como lanzador de aplicaciones a Steam, una forma de ampliar el abanico de posibilidades es agregar aquellos juegos que están en otras librerías, dentro de la propia de Steam, de forma de poder lanzarlos directamente.

De esta forma, si tienes juegos en Origin (por ejemplo), igualmente podrás lanzarlos desde Steam sin problemas.

Lo primero que haremos es abrir Steam, y en la parte inferior izquierda veremos que hay un  menú desplegable "+ AÑADIR JUEGO..."



Elegimos "Añadir un juego que no es de Steam..."



Nos aparece una ventana con las aplicaciones standard que tenemos instaladas en windows. Podemos buscar aquí el juego (si está instalado de forma standard, tendrá un icono en el menú de inicio), o podemos buscar directamente el ejecutable con el botón "Buscar"


Apuntamos al directorio que tiene el ejecutable del juego o aplicación que queramos agregar y seleccionamos el ejecutable correspondiente.


Nos aparecerá en la lista de aplicaciones disponibles para agregar (debe estar marcado).

Seleccionamos "AÑADIR SELECCIONADOS" y con esto ya tendremos el juego/aplicación en la lista de elementos disponibles para ejecutar en la librería Steam



Agregar grupo de programas para ser lanzados por Steam


Para algunas situaciones, necesitaremos lanzar mas de una aplicación en Steam al seleccionar alguno de los títulos de la lista.

Para esto vamos a crear una entrada que apunte a un fichero de comandos por lotes (cmd)

El problema principal radica en que el cliente STEAM no permite agregar este tipo de ficheros. Para esto, vamos a recurrir a un "truco" que nos permitirá crear una entrada en la lista de nuestra biblioteca, y que podrá ser lanzada desde cualquier solución por streaming.

Creamos el fichero CMD

Vamos a hacer uso de 2 tipos de llamadas. Asíncronas y normales.

Cuando se ejecuta un fichero por lotes (cmd/bat), el intérprete irá línea por línea ejecutando los comandos.

Por cada línea que se ejecuta, el intérprete esperará a que termine dicha instrucción para seguir con la siguiente.

Esto supone un problema si queremos lanzar 2 programas al mismo tiempo, puesto que si necesitamos lanzar un programa para que quede en memoria, para luego lanzar otro programa, con esta solución no nos permitirá tener ambos en ejecución, puesto que tendremos que cerrar el primer programa para que se lance el segundo.


Pongamos un ejemplo:

Queremos lanzar la calculadora, y a continuación el bloc de notas. Un cmd básico sería

c:\windows\system32\calc.exe
c:\windows\system32\notepad.exe
Cuando se ejecute la calculadora, hasta que no la cerremos no podremos lanzar el bloc de notas.


Uso del comando "start"


Para solucionar esto, vamos a hacer uso del comando "start". La sintaxis quedaría algo así:


start "Calculadora" /D "c:\windows\system32" calc.exe
c:\windows\system32\notepad.exe

Con este comando, estamos diciendo al intérprete que lance una tarea llamada "Calculadora", que se ejecuta en el directorio "c:\windows\system32", y que el ejecutable es calc.exe. Si necesitamos darle parámetros a calc.exe, simplemente los agregamos a continuación como lo haríamos en un ejecutable normal.

Así, el intérprete lanzará este comando "calc.exe" (que llamará calculadora), y seguirá con la siguiente instrucción que es lanzar el bloc de notas.

como el bloc de notas está lanzado de forma normal sin start, el intérprete se quedará en esta línea esperando que termine la ejecución de este programa, y con esto, termina el fichero por lotes.

Una vez creado nuestro fichero por lotes (por ejemplo, "prueba.cmd"), lo guardaremos en el directorio donde se encuentre alguno de los programas (.exe) que vamos a lanzar.

Agregar entrada en la biblioteca


Bien, ya tenemos solucionado el problema de lanzar varios procesos simultáneos. Ahora, vamos a agregar nuestro cmd a la bilbioteca.

El truco es muy simple. Agregamos una entrada como hacemos normalmente (explicado en el punto anterior "Agregar juegos que no son Steam a la librería Steam"), pero seleccionaremos un ejecutable cualquiera (uno de los mismos que lanzará el cmd, para que se asocie su icono) y aceptamos la entrada.




Con esto tendremos una entrada al ejecutable en la biblioteca. Solo nos queda modificar dicha entrada.




Botón derecho sobre esta entrada, Propiedades.


Ahora podemos cambiar el nombre de la entrada, su icono si queremos, y lo mas importante, el Destino (que lo tendremos que introducir manualmente)


Una vez modificado, cerramos y lanzamos la entrada para probar como funciona.


Y con esto tenemos solucionado el problema de lanzar mas de una tarea con una sola entrada de menú.


Complementar controles para un Gamepad Standard


Existen muchos tipos de dispositivos android orientados a jugar. Muchos de estos dispositivos tienen un set completo de controles para jugar sin problemas (GPD-G5A, iPega GP9700, etc), pero otros no disponen de este set completo (JXDS5110B, GPD-G58, iBen-L1, JXDS7800B, etc)

Que es un set completo de controles?


Para entendernos, un set completo de controles son todos los controles y botones que conforman un gamepad standard, esto es:

  • Stick Izquierdo: Generalmente analógico
  • Stick Derecho: Generalmente analógico
  • DPAD: Generalmente digital (4 direcciones con sus diagonales)
  • 4 botones de acción principal (frontales, generalmente designadas como A, B, X, Y)
  • 2 botones superiores "shoulders (generalmente designados como L1 y R1, o LB de Left Button y RB de Right Button)
  • 2 gatillos (en la mayoría de consolas android son digitales, pero en los mandos "serios", estos botones son analógicos. Generalmente designados como L2 y R2, o LT de Left Trigger y RT de Right Trigger)
  • 2 botones de stick. (Generalmente llamados L3 y R3, o también LTB de Left Thumb Button y RTB de Right Thumb Button)
  • Select
  • Start

La mayoría de consolas de 5" con la forma similar a una PSVita (o las de 4.3" tipo PSP), no poseen los botones:
  • L2
  • R2
  • L3
  • R3
  • en algunos casos, no tienen stick derecho
  • en algunos casos, tienen enlazados el stick y el dpad, por lo que realizan la misma función

Otras ejemplos de consolas incompletas:
  • JXDS7800B, es una de las mas extendidas. No posee botones L3 ni R3
  • GPD-Q88, similar a la JXDS7800B. No posee botones L3 ni R3
  • Archos Gamepad 1: No posee L3 ni R3

Agregar los controles faltantes


Voy a sugerir 2 formas de agregar los controles que nos puedan faltar.

Agregar por medio de botones físicos alternativos


En el caso de ser pocos, y tener botones suficientes en nuestro dispositivo (por ejemplo, una JXS7800B, que solo le faltan los botones L3 y R3), vamos a "remapear" 2 botones para que nos suplan los faltantes.

Para esto vamos a utilizar un programa externo. En mi caso he utilizao GameKeyboard+ (si tienes la versión antigua, también te servirá), pero se pueden utilizar cualquiera de las soluciones existentes en la actualidad (USB/BT Center entiendo que en cualquiera de sus versiones, o cualquier aplicación por el estilo)

Dependiendo del programa empleado, seleccionar los botones físicos de la consola que queramos remapear para ser utilizados como los botones de gamepad faltantes. (en el caso de la JXDS7800B, y en la mayoría de consolas por el estilo, se podrían utilizar los botones de volumen para asignarlos, eso sí, antes de hacer el streaming hay que ajustar el volumen que queramos)

Esta solución puede ser válida para varias alternativas de consolas en donde sólo nos falten un par de controles para completar el set completo.


Agregar por medio de botones virtuales


La solución anterior puede ser válida para algunos dispositivos, pero para otros que no disponen de muchos botones físicos, necesitamos "inventarnos" los controles que nos faltan.

Para esto vamos a recurrir a un programa externo que nos ayude. En mi caso, al igual que la solución anterior he utilizao GameKeyboard+ (si tienes la versión antigua, también te servirá), pero se pueden utilizar cualquiera de las soluciones existentes en la actualidad (USB/BT Center entiendo que en cualquiera de sus versiones, o cualquier aplicación por el estilo)

Con cualquiera de estas soluciones podermos agregar uno o varios botones/controles virtuales en pantalla, y que reaccionarán como si fuesen bontones/controles reales de un gamepad.

No voy a extenderme en cada una de las opciones. Ya es cuestión de investigar un poco para utilizar el programa que prefieras. En mi caso, he puesto de forma standard 4 botones en pantalla utilizando GameKeyboard+:


Esta captura por ejemplo es de una consola GPD-G58, la cual como se puede ver, no posee los botones L2, R2, L3 ni R3



He configurado los botones en pantalla para que envíen los botones faltantes cuando los presiono (los envía a la app que se encuentre ejecutando en ese momento)

Nota: GameKeyboard+ no incluye los botones L3 ni R3, pero tiene los C y Z. como no los voy a utilizar, los he agregado a mi pantalla y remapeado, para que se comporten como los L3 y R3 que necesito.

Y con esto en términos generales tengo solucionado la ausencia de botones en la consola, para cualquier(*) alternativa de streaming que utilice.

(*) soluciones como Kainy tienen su propio sistema de mapeado en pantalla de controles de gampead, por lo que para esta alternativa no utilizaría GameKeyboard+ como herramienta de apoyo.


Wake-On-Lan (WOL)


Esta característica nos vendrá muy bien en gamestreaming remoto.

Con WOL, es posible "encender" un equipo remoto mediante algún programa en nuestro móvil (como  Wake-On-Lan With Widget)

En esta imagen aparece el Servidor remoto (y todos los demás) desactivados (apagados). Se procede a enviar la señal de encendido.


Servidor remoto activado, transcurridos un par de minutos desde que se ejecuto WOL a través de internet.


De esta manera, no tengo necesidad de tener encendido el PC Streaming todo el día, a la espera de que algún cliente se conecte (además de estar consumiendo energía eléctrica innecesariamente)

La configuración de esta característica generalmente viene en cada placa, y debes buscar información sobre la tuya para poder habilitarlo correctamente.

Un ejemplo típico de configuración de WOL sería algo como esto:

Administración del equipo (sobre el icono de Mi Equipo, botón derecho del mouse y "Administrar")


Propiedades de la tarjeta de red de nuestro equipo, y seleccionar la pestaña  "Opciones avanzadas"


Aquí se puede ver que la opción se llama "Activar en Magic Packet" y que está habilitada. Para otros casos se puede llamar WOL, Wake-On-Lan, etc. Buscar información en la documentación de la placa base y/o tarjeta de red (generalmente en las incorporadas en la propia placa base)

Hay que considerar que WOL realmente no "enciende" un pc en el estricto sentido de la palabra, sino que puede activar un sistema que se encuentra suspendido o en hibernación.

Junto con WOL, es bueno configurar el PC para que se ponga automáticamente en un estado de Suspensión/Hibernación, pasado un tiempo que definamos, y que el PC se encuentre sin actividad.

Esto resultará útil sobre todo si tomamos el control de nuestro servidor de Streaming, y por la razón que sea perdemos conectividad. Si esto sucede, y para no estar gastando energía innecesariamente, estableceremos un tiempo X pasado el cual el equipo se pondrá en suspensión o hibernación de forma automática, y con esto ahorrar en el consumo energético.

Hibernación/Suspesión


Son alternativas a apgar el ordenador, y que dependiendo del caso, nos pueden solucionar mas de un problema.

Por ejemplo, en la versión actual de GeForce, he notado que cada vez que se reinicia el ordenador, los dispositivos emparejados con el servidor de Streaming (GeForce Gamestreaming) no logran establecer correctamente las sesiones, y que es muy difícil emparejar nuevos dispositivos (Error 404 de GeForce, que no permite emparejar)

Para evitar este problema (mientras la versión del software se vuelve mas estable), debemos buscar alternativas a apagar completamente el PC, para que no nos de este tipo de problemas.


Nota: Para mas información sobre este problema y posibles soluciones, mirar la sección de LimeLight


Hibernación


Una solución para poder apagar la máquina, pero sin perder lo que estamos haciendo, es la hibernación. Esta característica lo que hace es que el sistema operativo guarda el contenido actual de la memoria ram y la vuelca a un fichero en el disco duro, estableciendo un parámetro especial en el arranque del propio sistema operativo y a continuación apagar completamente el PC

Cuando el sistema vuelve a encenderse, el sistema operativo revisará el estado en el que debe arrancar, y si está establecido el parámetro correspondiente a hibernación, en vez de cargar de forma normal el sistema operativo (junto con todo el tiempo que puede tomar), cargará el fichero de volcado de memoria que se almacenó justo antes de apagar.

Con esto, tenemos exactamente el mismo estado en el que se encontraba el ordenador al momento de hacerlo "hibernar".

Para configurar este modo, en Windows 7:

Inicio - Panel de Control - Opciones de Energía



Cambiar la configuración del plan



Cambiar la configuración avanzada de energía


Requiere contraseña al activarse: Si está activo, puede que algún programa de control remoto no pueda trabajar correctamente. Probar a ver cambiando esta configuración con cual va sin problemas en cada caso.



Hibernar tras: poner manualmente la cantidad de minutos


Y con esto ya deberíamos tener configurada la hibernación automática del sistema transcurridos un número determinado de minutos.


Suspensión


Como alternativa a la Hibernación, existe el modo Suspensión, que basicamente lo que hace es que reduce el consumo eléctrico del PC al mínimo, sólo dejando activa la CPU y la memoria RAM, lo suficiente para que no se pierdan las tareas que se están ejecutando actualmente.

En este estado no hay discos duros activos, ni ventiladores, ni nada exceptuando la CPU y la RAM

Para configurar este modo, en Windows 7:

Inicio - Panel de Control - Opciones de Energía



Cambiar la configuración del plan



Cambiar la configuración avanzada de energía


Aquí podemos establecer la cantidad de minutos que debe esperar el equipo antes de entrar en estado de suspensión.

Ventajas y desventajas


Comparando ambas alternativas, podemos hacer un breve resumen de los pros y contras.

Ventaja de la Suspensión: Es un método casi inmediato para poder tener el ordenador 100% funcional, ahorrando el tiempo de carga del sistema operativo
Desventaja: Si se nos va la luz, se perderá todo el trabajo que tengamos sin guardar.

Ventaja de la Hibernación: Es un método que permite cargar mas rápidamente el sistema operativo, que cargando de forma normal.
No le afectan los cortes de luz. Una vez puesto un PC en hibernación, se puede incluso desconectar de la energía eléctrica, y al volver a conectar, el sistema volverá a arrancar en el punto previo de la hibernación.
Desventajas de la Hibernación: es mas lenta que la suspensión, puesto que depende de la velocidad del disco duro y de la memoria RAM total, ya que el fichero a cargar será equivalente a esta memoria.

Mejor opción


Personalmente me decanto por la Hibernación como método normal de apagado del PC, por que me permite arrancar la máquina rápidamente, pero no estoy preocupado de que se haya ido la energía eléctrica.

Pero además hay otro motivo, y está relacionado con Wake On Lan (WOL).

El Gamestreaming remoto generalmente está asociado con control remoto de una máquina. Cuando terminamos una sesión de Gamestreaming remoto, posiblemente queramos "apagar" nuestro servidor. Esto conlleva un problema, y es que al apagarlo ya no tendremos control sobre el para volver a encenderlo de forma remota.

WOL trabaja con estados de suspensión y de hibernación, por tanto es mejor opción hibernar o suspender remotamente un PC, por que siempre podremos volver a encendelo mediante WOL (y tomar el control)

Por último, si dejamos una máquina remota en suspensión y por la razón que sea se va la luz, no tendremos ocasión de volver a encenderla (por que al irse la luz, ya no estará en suspensión, sino que se apagará completamente). Por este motivo, es mucho mejor dejar el equipo remoto en Hibernación, por que si se va la luz, solo tenemos que esperar a que nuestro router se encienda nuevamente (cuando vuelva la luz) y ya podremos encender el PC sin problemas.


______________________________________

No hay comentarios:

Publicar un comentario