Mecanica de games / criação de bots

Galera, eu sei que não há uma formula mágica para nada, e que o que eu quero fazer é assunto pra textões dos defensores da moral, mas eu gostaria de pedir que evitem tal coisa pois estou mais interessado na aprendizagem do que no ato de burlar regras… Eu acredito que há duas maneiras de aprender algo, uma delas é estudar como se fosse ensinar, e outra é estudar como se fosse corrompe-la.

Enfim, eu quero saber como é feita a comunicação de um jogo online, como o servidor entende que o usuário fez um certo movimento?

Eu acredito que o cliente envia um “pacote” com as informações dos eventos, e o servidor faz algo com ele, como eu posso capturar esse pacote? como eu transformo esse pacote em código legível? e como eu reenvio esse pacote ao servidor?

O meu objetivo é claramente criar um “bot” mas eu quero usar um certo game como laboratório para aprender como isso funciona, alguém tem esse conhecimento e pode compartilhar?

Oi @Satangozo
Se não estou enganado, as engines atuais como unreal(certeza) e unity(preciso confirmar) possuem api’s para trabalhar com protocolo http.
A unreal eu tenho certeza que tem, pois quando eu comecei a estudá-la eu lembro de ter visto notas na documentação da engine. Porém eu não cheguei a estudá-lo já que eu estava mais focado no real time events.

Em relação ao unity, eu não tenho como confirmar se existe essa api, já que eu não cheguei a trabalhar com ela, mas principalmente no mobile, existe vários games desenvolvidos com ela que utilizam recursos online. Então devo considerar que exista.

Cara, isso é complicado porque cada jogo vai desenvolver seu próprio protocolo, e muito provavelmente deve ser um protocolo binário. Eu nunca fiz nada do tipo, mas eu começaria inspecionando/debugando o tráfego de rede durante o jogo, você pode usar o wireshark para isso:

https://www.wireshark.org/

A primeira coisa que você tem que fazer é descobrir qual o número de porta que o jogo usa para se comunicar com o server. Tem que prestar atenção porque o jogo pode usar portas diferentes para finalidades diferentes: por exemplo, o jogo pode usar um HTTP comum para salvar informações de pagamento, conta, etc. e outra porta para transmitir os dados do jogo propriamente dito.

Uma vez que você esteja monitorando e capturando o tráfego você vai ter que testar/observar o padrão gerado e tentar reproduzir. Enfim, eu começaria por ai. De qualquer maneira, você vai encontrar o pessoal que está mais acostumado com esse tipo de prática na deep web.

@rmendes08 eu já estava pensando em snuffar a rede pra capturar os pacotes ou usar um proxy pra isso, mas uma vez que eu capture esses pacotes eu imagino que vou receber algo criptografado, tem alguma ideia de onde eu possa começar para quebrar criptografia? E quanto a deep… Achar um fórum decente e amigável por lá é utopia… Quando eu tiver mais experiência eu vou tentar não ser engolido por lá kkkk

@Valli Você acha que há alguma forma de descriptografar os pacotes utilizando a API da engine? Eu acho que isso seria uma falha de segurança, mas como não tenho ideia de como funciona se rolar isso seria mão na roda…

Não sei dizer @Satangozo.
Mas quer uma dica que pode fazer diferença? Entre no site da GDC, a GDC é um evento voltada para desenvolvedores de jogos. E geralmente os developers costumam fazer apresentações técnicas bem profundas. Eu lembro de ter visto uma do pessoal da Bungie que desenvolveu o Destiny. Além disso, existe o GDC vault que é onde as apresentações ficam salvas pelos anos, então qualquer pessoa pode ir lá, e baixar ou assistir online as apresentações.

Mas a dica seria, tente mapear os apresentadores que estavam responsáveis pela parte de infra dos games, eles sempre tem twitter ou algum email de contato que o pessoal que está começando na área de game development pode entrar em contato e tirar dúvidas ou pedir algum material de referência.

Pode parecer algo distante, mas no meu caso, eu sempre tive retorno do pessoal lá de fora quem eu contatei. Então acho que vale a pena tentar. =)