RiftCoach

Conformidade e uso da API

Última revisão: 29 de setembro de 2026

Esta é a descrição técnica completa do que o RiftCoach faz com a API da Riot Games. Ela existe para quem for revisar o produto — na Riot ou fora dela — e para qualquer jogador que queira o raciocínio antes de instalar um binário.

A versão curta: ele só lê partidas que já acabaram, recusa rodar durante partida ao vivo, e essa recusa é garantida por código que falha fechado — não por uma promessa num documento como este.

O que o RiftCoach é

Um aplicativo de desktop para Windows que revisa partidas de League of Legends já terminadas e produz um relatório de coaching. Ele é feito para quem vê que perdeu mas não vê onde. O objetivo é apontar a decisão específica que custou a partida, no segundo em que ela aconteceu, para você poder rever aquilo no replay.

Como ele funciona

  1. Você informa o seu Riot ID. Hoje você também informa a sua própria chave da API da Riot; veja Modelo de negócio para o que muda com uma Production Key.
  2. O app busca as partidas terminadas por match-v5 e a timeline da partida.
  3. Toda a percepção e toda a aritmética são feitas de forma determinística, em Python. Fatos de item, campeão e runa vêm do Data Dragon, fixados no patch da partida analisada — nunca no patch atual.
  4. Um motor de avaliação converte o estado de jogo em vantagem equivalente em ouro, e depois em probabilidade de vitória. Assim um erro é reportado como uma perda medida de probabilidade, e não como opinião. Toda afirmação carrega o horário e o nível da evidência: medida direto da telemetria, derivada da telemetria mais uma premissa declarada, ou inferida.
  5. Opcionalmente, um modelo de linguagem escreve a prosa explicativa em cima dos números já medidos. O modelo nunca produz os números. Sem modelo configurado, o relatório determinístico completo continua saindo.
  6. Você pode abrir o replay no client do League, e o app desenha as anotações sobre a janela do replay, sincronizadas com o relógio do replay.

Ele nunca roda durante uma partida ao vivo

Esta é a parte que vale verificar em vez de acreditar, então aqui está o mecanismo.

Um único módulo é o único código do aplicativo autorizado a abrir conexão com 127.0.0.1:2999. Antes de cada requisição ele consulta GET /replay/playback — uma rota que só existe enquanto um replay está rodando. Durante uma partida ao vivo essa rota devolve 404, enquanto /liveclientdata/* continua respondendo, e o 404 levanta uma exceção que aborta a operação.

Ele falha fechado em 404, em erro de conexão, em timeout e em corpo de resposta inesperado. O overlay em si não sabe a porta, não abre socket e não monta URL: ele pede ao controlador guardado. O relógio do replay é lido pela Replay API oficial.

O que ele deliberadamente não faz

APIs da Riot usadas

Volume de requisições esperado

Um relatório custa cerca de cinco requisições: account-v1 uma vez por usuário e em cache, a lista de partidas, a partida, a timeline dela e league-v4 para o elo. O consumo mais pesado é um job periódico que lê as três ladders do topo para montar os agregados por patch; ele não é disparado por usuário e é regulado por um limitador que lê o cabeçalho X-App-Rate-Limit e se adapta ao limite que a chave carregar.

Tratamento de dados

Os dados de partida ficam em cache na sua máquina e não são transmitidos para lugar nenhum, exceto para um provedor de IA que você tenha configurado explicitamente. O modo de privacidade estrita remove os provedores de nuvem no roteador. As chaves de API ficam no cofre de credenciais do sistema operacional, nunca no repositório.

Existe um recurso opcional, desligado por padrão, que prepara contagens categóricas agregadas — categoria do erro, gravidade, fase, rota, campeão, campeão adversário, patch. Ele nunca inclui prosa, PUUID, Riot ID, ID de partida nem qualquer outro identificador. O consentimento é versionado. Não existe serviço de envio hoje, então esses pacotes ficam na sua máquina.

O detalhe completo está na política de privacidade.

Aprendizado de máquina

O projeto não treina modelos de aprendizado de máquina com dados de partida, e não pretende treinar. A razão é concreta: os termos da Riot exigem, na rescisão, apagar toda a informação de jogo em nossa posse, e a LGPD dá ao titular o mesmo direito de eliminação. Peso de modelo treinado não é deletável seletivamente — treinar seria assumir uma obrigação sem mecanismo para cumpri-la.

Toda a personalização é busca sobre um banco de dados, que um DELETE esvazia de verdade.

Modelo de negócio

O aplicativo de desktop é gratuito, não exige cadastro, e mantém toda capacidade que tem hoje para as suas próprias partidas. Nada que funciona hoje passa a ser pago, e nenhuma informação competitiva fica atrás de paywall. Isso é regra escrita do projeto, e os Termos de Uso obrigam a ToriiTech a isso de forma irrevogável.

O que a ToriiTech pretende cobrar é um serviço hospedado, que ainda não existe:

Todo item pago é um serviço que custa dinheiro para rodar. Nenhum deles é uma capacidade retirada do cliente gratuito.

A chave e o cliente distribuído

Uma chave de API não pode ser embarcada no cliente: os termos da Riot proíbem divulgá-la, e num binário distribuído ela é extraível em minutos, proprietário ou não. Com uma Production Key, a chave fica no servidor, o cliente distribuído nunca a recebe, e não existe caminho de código que a envie para lugar nenhum.

Verificação

O repositório de código é privado, então nada acima precisa ser aceito na base da confiança: damos acesso de leitura a um revisor sob pedido, e fornecemos um build. O intertravamento de partida ao vivo vive num único módulo, riftcoach/replay/guard.py, e é coberto pela suíte de testes — dá para verificar em alguns minutos com acesso.

Escreva para toriitech2026@gmail.com.