[Arquivado]Otpatcher

Nostradamus
em Noticias - Arquivo
  • 1
  • 2

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

"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.

[twitter]ThomazYuji[/twitter]

noobinhu

Ex Administrador
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 01/03/06Posts: 1022Gênero: Masculino

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

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker
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.

[twitter]ThomazYuji[/twitter]

noobinhu

Ex Administrador
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 01/03/06Posts: 1022Gênero: Masculino

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.

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker
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.

[twitter]ThomazYuji[/twitter]

noobinhu

Ex Administrador
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 01/03/06Posts: 1022Gênero: Masculino

É 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

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

@noobinhu

Mais uma vez: eu não disse que eu ia fazer, isso é apenas um case study. Como disse, não estou envolvido com OpenTibia mais, a esse nível.

[twitter]ThomazYuji[/twitter]

Kydrai

"Keep Your Mind Wide Open"
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 21/08/06Posts: 250

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.

~ Kydrai
Programador / Scripter

 

sign.png

Diogo

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/03/06Posts: 366

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!

Contato: não entre em contato

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

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

[twitter]ThomazYuji[/twitter]

noobinhu

Ex Administrador
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 01/03/06Posts: 1022Gênero: Masculino

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?

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

@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).

[twitter]ThomazYuji[/twitter]

noobinhu

Ex Administrador
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 01/03/06Posts: 1022Gênero: Masculino

Hmm entendi, então se alguém fosse desenvolver este sistema, teria que comunicar a TFS Team ou outro distro, para desenvolverem juntos?

lucasjockey

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 30/07/07Posts: 101

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.

x[sup]2[/sup]=-1
x=i
:D

  • 1
  • 2