Ir para conteúdo

[Arquivado]Otpatcher


Nostradamus

Posts Recomendados

"OTPatcher" : Estudo de caso



 

Observe que um estudo de caso apenas propõe uma solução a um problema, e não quer dizer realmente que esta será implementada/desenvolvida pelo autor.

 

Problema

Servidores OpenTibia com sprites customizados possuem dificuldades em dar certo devido a falta de atenção dada a essa área. Além disso, existem muitos limites encontrados em criar-se itens personalizados devido a um pseudo-limite existente.

Introdução

 

Em muitos jogos quando há atualizações, existe um cliente patcher que é responsável por fazer um controle de versão, com isso é possível fazer com que o jogador baixe apenas quantidade pequenas de dados, não cabendo a este ter que baixar novamente dados que já existem e que na grande maioria dos casos, é a maior parte.

 

Em OpenTibia algo como isso traz um grande avanço pois a área de desenvolvimento de novos gráficos (spriting) e modificações no arquivo DAT as vezes é visada por muitos, porém nem sempre é levada adiante por causa de limitações como baixar arquivos realmente muito grandes. O que torna ainda mais difícil uma atualização constante destes.

 

Como funciona um controle de versão básico

 

O processo é bem simples: é feita uma comparação entre o arquivo-alvo e o arquivo-base e disso são descartados os bytes semelhantes, gerando assim as diferenças.

 

Em controles de versão avançados como CVS ou SVN é possível usar esse recurso para ver linhas de código diferentes. É muito útil em projetos conjuntos e servem como um log de ações.

 

 

Solução

 

Armazenar informações de mudanças por versão e um identificador por versão ajuda muito. O processo passa a ser um pouco menos dinâmico, porém mais eficiênte.

 

Primeiro, é feita a busca em um registro pela versão do usuário e a análise da versão do servidor, e por comparações lógicas é feita uma atualização de cada revisão graduada da versão do usuário até versão do servidor de forma que estas no final do processo sejam idênticas.

 

Segundo, para um melhor desempenho o programa deve identificar antes do processo cada parte modificada da versão original para que somente estes sejam alterados e os demais permaneçam intactos (não faz sentido modificar algo para a mesma coisa).

 

Infelizmente esse processo pode ser demorado, já que depende de vários aspectos tais como a velocidade de processamento dessas informações e o tamanho de cada arquivo a ser analizado.

 

Por último, é feito o download desses dados que nada mais são que as diferenças entre os dados do servidor e os dados do usuário. Esses dados são temporários e após tudo terminado devem ser inseridos no arquivo base do usuário. A inserção deve levar em conta a posição do arquivo em que cada dado deve ser inserido. Esse passo é bastante delicado e qualquer problema poderá corromper os dados, por isso, é recomendado checagens de hash MD5 para ver se a integridade após fim de processo é igual com a do servidor.

O arquivo então é salvo e a atualização termina.

Editado por Nostradamus
Link para o comentário
Compartilhar em outros sites

Ou é cara, não parou com OT? rsrs

 

Isso já existe no TFS... porém em relação ao banco de dados somente, estar fazendo isso não seria invasão de privacidade? aiuhaiu, fazer o download forçado de sprites

Link para o comentário
Compartilhar em outros sites

Ou é cara, não parou com OT? rsrs

 

Isso já existe no TFS... porém em relação ao banco de dados somente, estar fazendo isso não seria invasão de privacidade? aiuhaiu, fazer o download forçado de sprites

 

Cara, sinceramente você não entendeu o que eu propus. Primeiro, não se trata de algo server-side related, ou seja, não é uma feature de alguma distro de servidor, e sim um cliente executável chave para um servidor em específico. Segundo, eu não entendi o nexo de invasão de privacidade, essa diferença entre arquivos é feita entre jogador e servidor host, esses sprites devem ser baixados para que o jogador desfrute de tais para jogar no servidor, essa é intensão do servidor acima de tudo.

 

Com relação se eu parei com OT: sim, porém isso é algo que achei interessante para o projeto OpenTibia e não quer dizer que não posso visitar aqui e contribuir de vez em quando ;)

 

 

Irei propor uma forma mais técnica de se fazer isso em breve, estou discutindo agora mesmo com o VaL. Saliento porém, que não estou me candidatando para isso.

Link para o comentário
Compartilhar em outros sites

Sim, sim eu entendi.

Só comentei porque existe do lado do servidor este patch já conectado com outro servidor p/ atualizações automáticas no TFS.

Eu digo do lado cliente uma invasão de privacidade, porque em nenhum lugar você cita a opção do jogador escolher entre "Baixar" ou "Não baixar" as atualizações e se estas forem feitas sem permissão, é sim uma invasão.

Link para o comentário
Compartilhar em outros sites

Sim, sim eu entendi.

Só comentei porque existe do lado do servidor este patch já conectado com outro servidor p/ atualizações automáticas no TFS.

Eu digo do lado cliente uma invasão de privacidade, porque em nenhum lugar você cita a opção do jogador escolher entre "Baixar" ou "Não baixar" as atualizações e se estas forem feitas sem permissão, é sim uma invasão.

 

Cara...não são atualizações de servidor para com um servidor raiz, e sim atualizações de arquivos do cliente Tibia modificados por um servidor, trata-se do Tibia.DAT e Tibia.SPR....

E não tem essa de "sem permissão", acho que você realmente não entendeu. O servidor que tiver sprites customizados ou seja lá o que for do tipo, iria disponibilizar um patcher onde o jogador baixaria e através deste, baixaria as atualizações feitas NOS GRÁFICOS e atribuitos do Tibia.DAT. Logo, se o objetivo deste servidor é possuir itens customizados de tal forma que torne o gameplay sem estes gráficos difícil, o jogador terá de baixar ou caso contrário irá sofrer dificuldades em entender algumas coisas do servidor talvez.

Link para o comentário
Compartilhar em outros sites

É o conceito de baixar os sprites eu entendi, só talvez não tenha entendido como será feito isso, algo automático ou manual, anyway... boa sorte hehe

Link para o comentário
Compartilhar em outros sites

Eu achei a idéia interessante.

Eu tava estudando algumas coisas novas em c++ sobre manipulação de memória pra saber como funcianavam os ips changers ai pensei nisso tbm.

Mas não sei como funcionaria isso, tenho que pesquisar, ainda so iniciante em programação.

Link para o comentário
Compartilhar em outros sites

Essa é uma grande idéia!

 

Pensem só galera, nos novos horizontes que se abririam caso existisse um programa desses!

 

Pensem na customização à qual os OTServs poderiam chegar sem maiores problemas!

 

Sprites novas baixadas em precisar baixar um arquivo .dat inteiro!

 

Até mesmo notícias rapidinhas do OTServ no próprio Patcher/Loader (como em Ragnarok)!

 

Os spriters seriam os mais requisitados para os OTServs, já que seriam eles que garantiriam a sensação máxima de exclusividade ao jogar aquele OTServ!

 

Atualmente isso só não acontece pelo fato de que ficar baixando .dat é bem chato...

 

Ótima idéia Yuji!

Link para o comentário
Compartilhar em outros sites

Essa idéia se bem explorada pode por fim ou mesmo tirar a grande importância de IPChangers e websites.

Para que a transferência de arquivos ocorra, seria necessário que o host rodasse um servidor de download, e para aproveitar isso, este poderia conter outras informações.

 

Veja um exemplo de um "OTPatcher" que opera também como um website básico e IPChanger:

 

otpatcher.png

Link para o comentário
Compartilhar em outros sites

Além do distro e do servidor de download, ainda teria que ter um outro servidor em uma porta XXXX p/ receber requisições para criação de contas, por exemplo, correto?

Link para o comentário
Compartilhar em outros sites

@noobinhu

 

Errado, esse download server pode ser integrado ao game server. Além disso, a requisição de criação de contas por exemplo é só um a mais, não é relevante, mas já que perguntou, ela no caso seria junto ao game server (preferencialmente).

Link para o comentário
Compartilhar em outros sites

O problema é que você vai atualiza somente o executavel, e não os arquivos xml como o items.xml. Além disso, comparação binária pode trazer vários erros como caso um programador já tenha modificado o seu TFS com modificação binária antes do atualizador existir, assim o patcher vai reescrever as partes que foram gravadas nele por outro programador e poderá corromper o software. No tibia existe o patch porque ele não tem código fonte aberto e os únicos que modificam ele em modo binário são os bot's (pessoas que usam softwares para facilitar a jogabilidade) ou crackers.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...