O maior portal de MU Online do Brasil — desde 2003
Tutorial Avançado Cliente

Como desativar a verificação de versão do cliente em ambiente de testes (MU Online)

Guia para desativar temporariamente a checagem de versão do cliente no seu próprio servidor de MU Online em desenvolvimento, agilizando o ciclo de testes e reativando a proteção antes de ir para produção.

GA Gabriel · Atualizado em 15 jul 2025 · ⏱ 16 min de leitura
Resposta rápida

Desativar a verificação de versão do cliente é uma técnica de desenvolvimento que gera confusão justamente porque soa, à primeira vista, como algo que só serviria para burlar sistemas. Este tutorial trata do cenário oposto e legítimo: você é o dono do servidor, está desenvolvendo ou testando o seu p

Desativar a verificação de versão do cliente é uma técnica de desenvolvimento que gera confusão justamente porque soa, à primeira vista, como algo que só serviria para burlar sistemas. Este tutorial trata do cenário oposto e legítimo: você é o dono do servidor, está desenvolvendo ou testando o seu próprio projeto de MU Online e a checagem de versão está atrapalhando o seu ciclo de trabalho. Toda vez que você recompila o cliente com uma mudança visual, ajusta um arquivo ou testa uma feature nova, a incompatibilidade de versão entre o cliente que você acabou de modificar e o servidor te barra na tela de login. Desligar essa checagem temporariamente, no seu ambiente controlado, elimina esse atrito e acelera muito a iteração. Deixe claro para si mesmo e para qualquer pessoa que ler isto: nada aqui serve para acessar servidores de terceiros ou para trapacear. A técnica só faz sentido, e só é abordada aqui, para você testar o seu próprio servidor em desenvolvimento. E o ponto mais importante do guia inteiro é o final: como reativar a proteção antes de qualquer coisa ir para produção. Como sempre no universo dos emuladores, os nomes de arquivos, chaves e a estrutura variam por season e emulador, então trate os exemplos abaixo como ilustração de conceitos reais, não como cópia literal para o seu pacote.

Atenção: Este procedimento é exclusivamente para o seu ambiente de testes local, sob seu controle total. Desativar a verificação de versão em um servidor de produção expõe seu projeto a incompatibilidades e a clientes adulterados. A verificação existe por bons motivos e deve estar ativa em produção sempre.

Pré-requisitos

Antes de mexer em qualquer configuração, garanta que você tem o ambiente e a mentalidade corretos para essa tarefa. Ela é de nível avançado porque exige entender como servidor e cliente negociam a compatibilidade, e porque uma configuração esquecida pode virar um problema de segurança em produção.

  • Ambiente de testes isolado: um servidor local, sob seu controle, separado de qualquer instância de produção. Idealmente em uma máquina ou máquina virtual dedicada aos testes.
  • Backup dos arquivos de configuração: copie os arquivos do serviço de conexão, do GameServer e a configuração de versão do cliente antes de editar.
  • Acesso à configuração do servidor: você precisa poder editar os arquivos que controlam a versão esperada e reiniciar os serviços.
  • Entendimento do fluxo de login: saber por onde passa a checagem de versão ajuda a escolher o método menos invasivo.
  • Um plano de reativação: antes de desligar, decida como e quando vai religar. Isso não é opcional; é parte do procedimento.

A recomendação mais importante desta seção é a do ambiente isolado. Se o seu servidor de testes e o de produção compartilham arquivos ou configuração, o risco de vazar uma mudança de teste para produção cresce muito. Mantê-los separados é o que torna essa técnica segura.

Por que a verificação de versão existe

Para desligar algo com responsabilidade, você precisa entender o que aquilo faz. A verificação de versão é um mecanismo pelo qual o servidor confirma, no momento do login, que o cliente do jogador é exatamente a build que o servidor espera. O cliente informa um número ou identificador de versão, o servidor compara com o valor que tem registrado e, se não baterem, recusa a conexão. Esse handshake protege o projeto de vários problemas de uma vez.

O primeiro benefício é a consistência: garante que todos jogam a mesma build, evitando bugs causados por diferenças entre clientes. O segundo é a integridade: dificulta que um cliente adulterado, com arquivos modificados, se conecte ao servidor. O terceiro é o controle de atualização: quando você lança um patch, a checagem de versão força os jogadores a atualizarem antes de entrar, garantindo que ninguém fica para trás com uma build antiga e incompatível. Em produção, esses três benefícios são valiosos demais para abrir mão. É por isso que a checagem só deve ser desligada no contexto muito específico de desenvolvimento, e sempre religada depois.

Benefício da checagemO que protegeVale em produção
Consistência de buildBugs por clientes diferentesSim, essencial
Integridade do clienteClientes adulteradosSim, essencial
Controle de atualizaçãoJogadores com build antigaSim, essencial
Agilidade de testeIteração rápida em devSó em ambiente de testes

Repare que a única linha em que faz sentido desligar a checagem é a última, e ela vale exclusivamente para o ambiente de testes. Guardar essa tabela na cabeça ajuda a nunca confundir os contextos.

Onde a checagem acontece no fluxo de login

A verificação de versão costuma ocorrer no momento em que o cliente se conecta ao serviço responsável pela autenticação e seleção de servidor, muitas vezes chamado de connect server ou serviço de conexão, dependendo do emulador. É nesse handshake inicial que o cliente envia sua identificação de versão e o servidor decide se aceita ou recusa. Entender esse ponto é útil porque existe mais de uma forma de contornar a checagem, e a mais limpa quase sempre é a que mexe menos nas coisas.

Existem, de modo geral, três abordagens. A primeira e mais recomendada é casar as versões: em vez de desligar a checagem, você simplesmente ajusta o número de versão do cliente de testes para bater com o que o servidor espera, ou vice-versa. A segunda é desativar a checagem no servidor, alterando a configuração para que ele não recuse conexões por divergência de versão. A terceira, a mais invasiva e menos recomendada, é modificar o cliente para ignorar a checagem. Para desenvolvimento, a primeira ou a segunda abordagem resolvem quase todos os casos com muito menos risco.

Método 1: casar as versões (o mais limpo)

Antes de pensar em desligar qualquer proteção, considere a solução mais elegante, que na verdade não desliga nada. Se o único incômodo é a divergência de versão, você pode simplesmente igualar os dois lados. O servidor espera uma versão específica; o cliente informa uma versão específica. Basta fazer os dois valores coincidirem.

  1. Descubra a versão que o servidor espera. Localize, na configuração do serviço de conexão, o valor de versão registrado.
  2. Localize a versão do cliente. No lado do cliente há um número de versão correspondente, geralmente em um arquivo de configuração ou informado pelo launcher.
  3. Iguale os valores. Ajuste um dos lados para que ambos apresentem a mesma versão.
  4. Reinicie e teste. Suba o serviço e tente logar. Se a divergência era o problema, o login passa.
; Exemplo ILUSTRATIVO de configuracao de versao
; (a sintaxe real varia por season e emulador)

; Lado servidor (servico de conexao)
ClientVersion = "10405"
ClientSerial  = "k1Pd9Vk8Ml5Xp2Zq"

; Lado cliente
; O mesmo par versao/serial precisa bater

A grande vantagem desse método é que você não abre mão de nenhuma proteção. A checagem continua ativa, apenas passa a aceitar o seu cliente de testes porque agora as versões batem. Para muitos administradores, esse é o começo e o fim da história: nem precisam desligar nada. Só considere os próximos métodos se você recompila o cliente com tanta frequência que atualizar o número de versão a cada iteração vira um estorvo real.

Método 2: desativar a checagem no servidor

Quando casar versões não é prático, o passo seguinte é instruir o servidor a não recusar conexões por divergência de versão. Esse método tem a virtude de ser reversível com uma única mudança de configuração, o que facilita muito religar a proteção depois. A ideia é encontrar a chave que controla a exigência de versão e desativá-la temporariamente.

  1. Faça backup do arquivo de configuração. Guarde uma cópia antes de qualquer alteração, para reverter em segundos.
  2. Localize a chave de verificação de versão. Nos arquivos do serviço de conexão, procure a configuração que ativa ou exige a checagem de versão do cliente.
  3. Desative-a. Ajuste o valor para desligar a exigência, conforme o formato do seu emulador.
  4. Deixe um marcador visível. Adicione um comentário no arquivo indicando que a checagem foi desligada para testes e precisa ser religada.
  5. Reinicie o serviço e teste. Confirme que clientes de versões diferentes agora conseguem logar no seu ambiente de testes.
; Exemplo ILUSTRATIVO de chave de checagem de versao
; (nome e formato variam por emulador)

; CheckVersion = 1   ; valor original de producao
CheckVersion   = 0   ; DESLIGADO PARA TESTES - RELIGAR ANTES DE PRODUCAO

; Marcador para nao esquecer:
; TODO: restaurar CheckVersion = 1 antes do deploy

Note o comentário deixado de propósito no exemplo. Esse tipo de marcador é a sua rede de segurança contra o esquecimento. Um administrador experiente nunca desliga uma proteção sem deixar um rastro claro e um lembrete de reativação, porque o custo de esquecer uma checagem desligada em produção é alto.

Método 3: por que evitar modificar o cliente

Existe uma terceira via, que é editar o executável do cliente para que ele simplesmente não faça ou ignore a checagem. Menciono este método principalmente para recomendar que você o evite, salvo em casos muito específicos. Modificar o binário do cliente é frágil: cada nova build sobrescreve a modificação, o cliente pode ficar instável e você acaba com um cliente de testes que se comporta de forma diferente do cliente real dos jogadores, o que compromete a validade dos seus próprios testes.

A regra prática é: se o objetivo é testar o seu servidor, mexa na configuração do servidor, não no binário do cliente. Os métodos 1 e 2 são reversíveis, limpos e mantêm o cliente de testes idêntico ao de produção. A modificação de binário só se justifica em situações raras de depuração muito específica, e mesmo assim sempre sobre uma cópia descartável do cliente, nunca sobre o cliente que os jogadores vão usar.

Como reativar antes de produção

Esta é a seção mais importante do tutorial inteiro, e por isso ela merece atenção redobrada. Desligar a checagem é fácil; o perigo mora em esquecer de religar. Um servidor que vai para produção com a verificação de versão desativada fica exposto a clientes desatualizados e adulterados, exatamente os problemas que a checagem existia para evitar. A reativação não é um passo opcional de acabamento; é a conclusão obrigatória do procedimento.

O processo de reativação é o inverso exato do que você fez. Se usou o método 1, garanta que a versão do servidor e a versão do cliente de produção estão corretas e que a checagem continua ativa, o que ela sempre esteve nesse método. Se usou o método 2, restaure a chave de checagem para o valor original que a mantém ligada, removendo o valor de teste. Se, por algum motivo excepcional, usou o método 3, descarte o cliente modificado e volte ao cliente oficial.

  1. Consulte seus marcadores. Aqueles comentários que você deixou nos arquivos apontam exatamente o que precisa ser revertido.
  2. Restaure os valores de produção. Religue a chave de checagem ou confirme que as versões corretas estão configuradas.
  3. Restaure a partir do backup, se preferir. Como você fez backup antes de desligar, pode simplesmente restaurar o arquivo original.
  4. Reinicie os serviços. Suba o servidor com a configuração de produção.
  5. Teste a checagem ativa. Tente conectar com um cliente de versão errada e confirme que ele é recusado. Esse teste é a prova de que a proteção voltou.

O passo final, testar com um cliente de versão errada e confirmar a recusa, é o que fecha o ciclo com segurança. Nunca assuma que religou; verifique. Muitos administradores mantêm builds de servidor completamente separadas para testes e produção, justamente para que a configuração de teste jamais alcance o ambiente real. Se essa separação for viável no seu projeto, ela é a defesa mais robusta contra o esquecimento. Para quem está estruturando essa separação de ambientes desde o início, o guia de como montar um servidor de MU do zero ajuda a situar onde as configurações de conexão e versão se encaixam na arquitetura do projeto.

Erros comuns e soluções

A tabela abaixo reúne os problemas mais frequentes ao lidar com a checagem de versão em ambiente de testes e como resolvê-los. Consulte-a quando algo não se comportar como esperado.

SintomaCausa provávelSolução
Login recusado por versão mesmo após ajustarServiço não reiniciadoReinicie o serviço de conexão para reler a configuração
Continua recusando após casar versõesSerial ou identificador ainda divergenteConfirme que todos os campos de versão batem, não só o número
Checagem desligada mas login ainda falhaOutra proteção barrando a conexãoVerifique logs; pode haver checagem adicional além da versão
Esqueceu qual valor era o originalFalta de backup ou marcadorRestaure do backup; da próxima vez, comente a mudança
Cliente modificado instávelMétodo 3 sobre o cliente realDescarte o binário modificado e use métodos 1 ou 2
Produção aceitou cliente antigoChecagem não foi reativadaReligue a checagem e teste com cliente de versão errada
Teste de reativação não recusaValor de teste ainda ativoConfirme que a chave voltou ao valor de produção

O fio condutor de quase todos esses casos é a disciplina de backup e de marcadores. Quem desliga uma proteção deixando rastro claro e cópia de segurança resolve qualquer um desses problemas em minutos; quem desliga no impulso, sem anotar, gasta horas tentando lembrar o estado original.

Checklist de lançamento

Antes de levar o servidor para produção, percorra esta lista. Ela existe para garantir que nenhuma configuração de teste sobreviva até o ambiente real.

  • Backup dos arquivos de configuração feito antes de qualquer alteração
  • Método escolhido documentado com marcadores nos arquivos
  • Ambiente de testes mantido isolado do de produção
  • Checagem de versão restaurada ao valor de produção
  • Números de versão do cliente e do servidor corretos para produção
  • Qualquer cliente modificado para testes descartado
  • Serviços reiniciados com a configuração de produção
  • Teste de conexão com cliente de versão errada confirmando a recusa
  • Logs do serviço de conexão revisados sem alertas de versão
  • Builds de teste e produção mantidas separadas, quando possível
  • Documentação do projeto atualizada com o estado final da checagem

Concluindo, desativar a verificação de versão é uma ferramenta legítima e útil quando aplicada ao seu próprio servidor de desenvolvimento, para acelerar a iteração enquanto você constrói e testa o projeto. O que transforma essa técnica de conveniência em risco é o esquecimento: uma checagem desligada que chega a produção. Por isso, encare a reativação como parte inseparável do procedimento, teste a recusa antes de abrir para os jogadores e mantenha, sempre que puder, ambientes separados. Lembre-se de que tudo aqui é ilustração de conceitos reais, e que os nomes de chave, arquivos e a estrutura variam por season e emulador, então adapte cada passo ao seu pacote específico e nunca aplique essas mudanças fora do seu próprio ambiente de testes.

Perguntas frequentes

Desativar a verificação de versão é trapaça?

Não, quando aplicada ao seu próprio servidor de desenvolvimento e desligada apenas para agilizar seus testes. É uma técnica legítima de ambiente de testes. Só vira problema se alguém tentar usá-la contra servidores de terceiros, o que este guia não aborda nem apoia.

Por que existe a verificação de versão afinal?

Ela garante que todos os jogadores rodam a mesma build do cliente que o servidor espera, evitando incompatibilidades, bugs e adulterações. Em produção ela é uma proteção importante e deve permanecer ativa.

Eu preciso mesmo desligar a checagem para testar?

Nem sempre. A alternativa mais limpa é simplesmente casar o número de versão do cliente de testes com o do servidor. Desligar a checagem só compensa quando você recompila o cliente com frequência e não quer atualizar o número toda vez.

Como garanto que não vou esquecer de reativar antes de produção?

Trate a reativação como parte obrigatória do checklist de lançamento e documente a mudança. Muitos administradores mantêm builds de servidor separadas para testes e produção justamente para não misturar configurações.

Onde fica a configuração de versão no servidor?

Geralmente em arquivos de configuração do serviço de conexão ou do GameServer, e no lado do cliente há um número de versão correspondente. Os nomes exatos variam por season e emulador, então confira a estrutura do seu pacote.

GA
Editor de guias e builds

Gabriel cobre gameplay, builds de classes, PvP e progressão. Testa cada estratégia em servidor antes de publicar.

Continue lendo

Artigos relacionados