Ir para conteúdo

Posts Recomendados

[Open-Library] Simple Packet Structure

developer: Tony Araújo (OrochiElf) 

version: 0.1

 

Introdução

Olá pessoal, hoje venho mostrar a vocês uma nova estrutura de um pacote de dados para Visual Basic (vb.Net). 

Então galera, eu estou criando um jogo multi-player e na parte de comunicação (servidor <-> client) eu tive uma dificuldade de escrever e ler em Bytes então eu tive a ideia de criar esta nova estrutura de pacote para facilitar esta comunicação. Bem, eu consegui facilitar essa troca de informações apenas criando um novo pacote, escrevendo as informações, então transformando em bytes e enviando por stream até o destinatário, quando eu recebia as bytes eu as transformava em pacote de novo e iniciava a leitura dos valores.

Breve criarei um novo tutorial de como fazer essa comunicação, e também estou terminando uma nova estrutura de comunicação Socket.

 

Estrutura do pacote

A nova estrutura do pacote consiste em uma variável de texto (string) que armazena os valores separados por "|", com fácil escrita e leitura.

É possível escrever 4 tipos de objetos dentro do pacote, tais como, Integer (valor numérico), String (valor textual), Boolean (valor de verdadeiro ou falso) e por fim o Packet(todos os valores de um novo Packet/Pacote), para quem não entendeu, sim é possível escrever um pacote dentro de um pacote.

 

Funções

A nova estrutura conta com funções de manipulação do pacote, como:

write(_value) -> usada para escrever um novo valor no pacote (Integer, String, Boolean, Packet)read(index) -> retorna um valor de dentro da lista de valores do pacote guiado pela indexreadInteger() -> retorna o próximo valor de acordo com o leitor em formato de IntegerreadString() -> como a função acima, retorna o próximo valor de acordo com o leitor em formato de StringreadBoolean() -> como as demais, em formato de BooleanreadPacket() -> retorna o valor em formato de Packet (pacote)toBytes() -> converte o valor do pacote para bytestoPacket(_bytes) -> converte o valor de bytes para o pacote

 

Project

Tutorial de manipulação

Source Code (v0.1)

Link para o comentário
https://xtibia.com/forum/topic/240562-open-library-simple-packet-structure/
Compartilhar em outros sites

Sintax feia dessa linguagem '-'

Mas quanto ao codigo, tu ta usando separador '|' para diferenciar entre um dado e outro? Isso não é nem um pouco eficiente, o normal quando se trabalha com packets é basear pelos bytes.

Se tu vai ler um int(2bytes), se vai ler uma string tem 2 bytes pro tamanho da string e o restante de acordo com o tamanho indicado pelos dois bytes, char(1byte) e etc

Eu fiz um code pra isso em lua uma vez, faz um tempinho ja mas acho que da pra esclarecer o que eu to tentando te explicar

http://pastebin.com/szkfJYN5

 

 

 

Link para o comentário
https://xtibia.com/forum/topic/240562-open-library-simple-packet-structure/#findComment-1692119
Compartilhar em outros sites


Bom, como eu disse, é um sistema de pacotes bem simples e eu criei ele por conta da dificuldade que eu tive em utilizar os bytes, assim, eu consegui simplificar bastante a comunicação, e para fazer esta comunicação via socket eu transformava o pacote feito em string em bytes, enviava pelo socket e quando recebia no servidor, ele transformava em pacote novamente, assim simplificando muito a minha vida. Tem outros usuários desse meu sistema de pacote e que achou uma forma bem fácil de manipulação também

Link para o comentário
https://xtibia.com/forum/topic/240562-open-library-simple-packet-structure/#findComment-1692275
Compartilhar em outros sites

8 hours ago, OrochiElf said:

Bom, como eu disse, é um sistema de pacotes bem simples e eu criei ele por conta da dificuldade que eu tive em utilizar os bytes, assim, eu consegui simplificar bastante a comunicação, e para fazer esta comunicação via socket eu transformava o pacote feito em string em bytes, enviava pelo socket e quando recebia no servidor, ele transformava em pacote novamente, assim simplificando muito a minha vida. Tem outros usuários desse meu sistema de pacote e que achou uma forma bem fácil de manipulação também

Eu entendi, e ja inclusive usei coisas semelhantes, em baixa escala não tem problema nenhum usar. Agora se for uma aplicação grande, que troque muitos dados ou que tenha muitos usuarios isso ja começa a dara diferença, porque pra cada tipo de dado tu tem um byte pelo menos a mais, nos tipos numéricos então, vou só fazer um comparativo pra tu entender a diferença de uso de bytes:

 

 

                                                 Captura de tela de 2016-04-28 09:17:54.png                                                  Captura de tela de 2016-04-28 09:13:41.png

 

Como eu disse, em baixa escala não faz diferença, mas em larga escala faz uma diferença absurda. Não leve isso como algo pejorativo, meu intuito é somente atribuir uma informação que julgo ser importante.

5722003532510_Capturadetelade2016-04-28091754.png.d214333c743b2ae396ab60a031d5e052.png

5722003bb61b6_Capturadetelade2016-04-28091341.png.79d2058f2c215096d5c7c78be04e0b91.png

Link para o comentário
https://xtibia.com/forum/topic/240562-open-library-simple-packet-structure/#findComment-1692296
Compartilhar em outros sites

7 horas atrás, dalvorsn disse:

Eu entendi, e ja inclusive usei coisas semelhantes, em baixa escala não tem problema nenhum usar. Agora se for uma aplicação grande, que troque muitos dados ou que tenha muitos usuarios isso ja começa a dara diferença, porque pra cada tipo de dado tu tem um byte pelo menos a mais, nos tipos numéricos então, vou só fazer um comparativo pra tu entender a diferença de uso de bytes:

 

 

                                                 Captura de tela de 2016-04-28 09:17:54.png                                                  Captura de tela de 2016-04-28 09:13:41.png

 

Como eu disse, em baixa escala não faz diferença, mas em larga escala faz uma diferença absurda. Não leve isso como algo pejorativo, meu intuito é somente atribuir uma informação que julgo ser importante.

Sim brother, eu entendi a idéia que passou, aliás, eu curti bastante. Eu vou recriar esse sistema usando o chamado "jeito certo da coisa". Obrigado ^^

Link para o comentário
https://xtibia.com/forum/topic/240562-open-library-simple-packet-structure/#findComment-1692319
Compartilhar em outros sites

 

Você deveria usar o seu conhecimento sobre o tibia como base para fazer um novo jogo, Entender como um server se comunica com o client deve ser fácil para você, é como o dalv falou, seu jeito em grande escala vai causar muito processamento.

 

 

 

 

 

Uma dica, fugir de algo porque ele é complicado não é algo produtivo, você deve enfrentar as dificuldades com a cabeça erguida e vontade, assim você passa por elas mas não precisa fazer seu trabalho duas vezes, acho que se você pular o aprendizado sobre bytes depois ficar sem entender o porque dos seus programas usarem muito recurso da maquina. 

 

 

 

 

 

Boa sorte com o projeto.

 

 

Link para o comentário
https://xtibia.com/forum/topic/240562-open-library-simple-packet-structure/#findComment-1692461
Compartilhar em outros sites

Aproveitando o assunto, mas não falando especificadamente de você... Parece que hoje em dia uma boa parte dos programadores não se preocupam mais com a performance dos sistemas. Depois que o fluxo de dados cresce e começa o gargalo, apenas dizem para aumentar o poder de hardware.

Lembro vagamente de uma época onde recursos de hardware eram mais escassos, e os programadores tinham que se preocupar com cada linha de seu código a fim de gerenciar melhor seu desempenho.

Mas fico feliz que ainda exista aqueles que se preocupam com uma boa performance para seus sistemas.

 

---

Sobre o tópico, embora não tenha visto o código, acho sempre válido ajudar a comunidade. Espero que continue assim.

Parabéns e obrigado por compartilhar.

 

 

Link para o comentário
https://xtibia.com/forum/topic/240562-open-library-simple-packet-structure/#findComment-1692883
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...