Usando o desktop remoto para jogar (usando um Omega2+, NodeJS, Telegram e Steam/Parsec)

Matheus Vellone
4 min readNov 30, 2020

--

Para contextualizar minha motivação, alguns pontos são importantes:

  • Eu moro e trabalho em São Paulo, na capital, mas meus pais moram no interior de SP;
  • Em épocas festivas, costumo visitá-los e passar alguns dias com eles;
  • A empresa disponibiliza um notebook para trabalho;
  • Gosto muito de jogar, no PC principalmente;
  • Levar um desktop pra lá não é nem um pouco confortável.

Mas recentemente, um amigo do trabalho, Raul da Rosa, me deu uma ideia que explodiu minha mente: usar meu desktop para streamar o jogo para meu notebook e jogar. Algo como um Stadia próprio.

Felizmente, para a parte mais difícil, que é fazer o stream e os envios dos comandos, já existem soluções. A própria Steam oferece essa funcionalidade caso você esteja logado na mesma conta em dois lugares diferentes. Outra opção é usar o Parsec, que é uma ferramenta própria para este objetivo.

O problema já estava resolvido: deixar o computador ligado e me conectar nele usando a Steam ou Parsec. Problema resolvido, mas eu precisava dar um sentido à existência do Omega2+ (que eu tinha comprado há uns 2 anos e nunca fiz nada legal com ele), precisava colocar ele pra funcionar. Só que deixar o computador ligado, 24h por dia o mês todo além de gastar energia, tem o desgaste desnecessário das peças, e o ideal seria ligar ele só quando eu fosse utilizá-lo, igual eu faria se estivesse em casa. É aqui que entra a parte legal do projeto.

Eu precisava ser capaz de ligar e desligar o computador remotamente.

  • para desligar, dá pra usar o Parsec ✅
  • E para ligar? 🤔

Há uns 4 anos, eu fiz uma brincadeira usando o app Tasker, que permite automatizar uma série de coisas usando o celular. A brincadeira foi: enviar uma notitificação para me permitir ligar o computador sempre que meu celular se conectava no wi-fi de casa.

Para conseguir ligar o computador, precisei habilitar na placa-mãe do meu computador a feature Wake On Lan (sigla WOL). Dessa forma, quando o computador é desligado, a placa de rede fica escutando magick packets na porta UDP 9, e é possível enviar um pacote para o MAC address na rede para ligá-lo remotamente. E é exatamente isso que faremos para ligar o computador remotamente. Então, um requisito é que a sua placa mãe suporte WOL.

Recapitulando, se você estiver na mesma rede do seu computador, você é capaz de enviar um pacote mágico na rede que vai ligá-lo. Mas se eu quero ligá-lo remotamente, não tem como estar na mesma rede. É aqui que entra o Omega2+. Ele vai fazer essa ponte entre a internet e a minha rede local.

Apesar de não ter testado essa hipótese, acredito que seja possível fazer NAT no roteador para receber esse magick packet via internet sem precisar de um dispositivo adicional. Mas cuidado para não deixar isso exposto na internet. Caso contrário, qualquer pessoa com acesso a internet conseguiria ligar o seu computador, e dependendo de como for feito, poderia ter acesso à muito mais coisas.

Depois de algumas horas na documentação do Omega2+ para configurar mais memória RAM e um external storage nele, eu consegui rodar um projeto capaz de ficar escutando mensagens enviadas para um bot no Telegram e enviar o magick packet para ligar meu computador. Nascia assim o https://github.com/matheusvellone/alan-wake.

Eu usei um Omega2+ pois era o que eu tinha disponível, mas um RaspberryPi, Arduíno, ou até mesmo outro computador deve ser capaz de fazer isso também.

Depois, com o computador ligado, só ter o Parsec/Steam configurados para abrir na inicialização do Windows e pronto.

Para rodar o projeto precisamos de:

  • node 8+ e npm;
  • um bot no telegram, precisamos do TOKEN dele;
  • o IP de broadcast da sua rede, provavelmente algo como 192.168.1.255, configurado no .env;
  • uma tabela no DynamoDB com o nome alan-wake com as "colunas" mac (como partition key), string alias e uma lista de strings users.

Com as credenciais do bot e da AWS configuradas no .env do projeto e o projeto rodando (npm start), basta enviar a mensagem ping para o bot. Se tudo estiver funcionando corretamente, o bot responderá com a mensagem Pong!.

Com o bot funcionando, basta inserir na tabela do DynamoDb uma entrada para cada MAC Address (computador) que você deseja dar visibilidade ao bot e mandar a mensagem start para ele. Também é possível configurar quais usuários tem permissão de ligar quais máquinas.

Apesar de ter o DynamoDB no projeto, é possível alterar o código para retirar a necessidade de ter uma conta na AWS.

Aí é só abrir o Parsec na sua máquina "portátil", esperar o Parsec no computador remoto iniciar, se conectar e usar da forma como quiser como se estivesse usando ela.

--

--

No responses yet