Como eu usei o REA (reverse-engineer-anything) pra fazer um software que me ajuda a jogar
Descobri que o macro que eu admirava era um timer chamando uma função do Windows. Usei o REA pra abrir o executável e fiz o meu pro Last Epoch em um dia.
Em Last Epoch, minha build usa cinco skills. Quatro estão em 1, 2, 3, 4 e a quinta no botão direito. Cada uma volta em um ou dois segundos, então o ciclo não para.
Dez minutos de jogo dão mais de mil apertos. Uma hora passa de sete mil. Junte o botão esquerdo pressionado o tempo todo pro personagem andar.
É pra isso que serve um macro: repetir as teclas no intervalo que eu escolho, segurar o botão do movimento e recastar o buff antes de ele cair. Eu não quero apertar 1, 2, 3, 4 na mão por uma hora, nem ficar de olho no timer da magia. O truque do Num Lock segura uma tecla. Eu preciso de cinco.
Jogo Diablo desde o primeiro. No fim da noite o braço estava cansado, e eu preciso dele pra trabalhar. Chegar no dia seguinte com o braço moído de clicar não fechava a conta.
Jogar eu não ia parar. Clicar, sim.
O software da Logitech
O programa que vinha com o mouse, o da Logitech, gravava uma sequência e repetia num botão lateral. Montei uma que apertava o botão esquerdo a cada dois segundos. O personagem andava sozinho e eu ficava olhando.
Funcionava até o jogo abrir uma janela no lugar errado. Aí o macro clicava no inventário, no chat, no que estivesse na frente. O programa fazia o que prometia. O trabalho era meu: programar a sequência na mão pra cada jogo, e reprogramar toda vez que a tela mudava.
Eu queria uma coisa específica, que já soubesse o que fazer naquele jogo.
A janelinha preta
Pro Diablo III alguém já tinha feito um spammer. Pro Diablo IV, o D4Turbo: uma janela escura com uma tabela de tecla, ação e milissegundos. F2 liga, F3 desliga, F9 fecha. Você escolhe a tecla e o intervalo. Não precisa gravar clique nenhum.
Baixei, instalei e usei na mesma noite. Na segunda noite comecei a olhar a janela com desconfiança. Como aquilo conversava com o jogo?
O que tinha dentro
Instalei o REA (reverse-engineer-anything), uma skill que lê um executável e responde perguntas: quais bibliotecas ele carrega, quais funções do Windows chama, quais textos ficaram no binário.
Rodei no D4Turbo. Em uma sessão, o programa deixou de ser uma caixa preta.
A única coisa que ele usa pra falar com o jogo é SendInput, uma função do Windows que qualquer programa pode chamar pra fingir que alguém apertou uma tecla. O D4Turbo chama essa função num timer. O resto do programa é interface.
Sem driver, sem injeção de código. Ele não lê a memória do jogo e não olha pra tela. Aperta no relógio e torce pra o buff ter caído na hora certa.
Eu passei anos tratando aquilo como mágica. Era uma função que a Microsoft documenta desde sempre.
O pedido
O Last Epoch não tinha um D4Turbo, e eu não ia esperar alguém fazer.

Pedi pro agente: pega o que você aprendeu sobre o D4Turbo e faz a mesma coisa pro Last Epoch, em Rust.
Eu queria Rust porque o D4Turbo é Rust e porque eu queria aprender. Nunca tinha escrito uma linha. Era preguiça, e a lista de coisas pra aprender era maior que a vontade de começar. Sozinho, eu ia parar no primeiro erro de compilação.
13,6%
Antes de escrever o app, o agente escreveu um script descartável em Python. O script apertou 1 dentro do jogo e comparou os pixels da barra de skill antes e depois. A barra mudou 13,6%. Sem input nenhum, mudou 0,00%.
Com isso dava pra continuar.
O app saiu no mesmo dia. A versão 0.1.0 foi pro GitHub com instalador e um executável portátil. Instalei, abri o jogo e apertei F2.
Funcionou. Passei o resto da noite jogando com um programa que não existia de manhã.

O código está em github.com/farukzahra/last-epoch.
Comentários
Comentários via GitHub — faça login para participar da discussão.