Tony Araujo 282 Postado Abril 25, 2016 Share Postado Abril 25, 2016 [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 More sharing options...
dalvorsn 268 Postado Abril 26, 2016 Share Postado Abril 26, 2016 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 More sharing options...
Tony Araujo 282 Postado Abril 28, 2016 Autor Share Postado Abril 28, 2016 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 More sharing options...
dalvorsn 268 Postado Abril 28, 2016 Share Postado Abril 28, 2016 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: 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. Link para o comentário https://xtibia.com/forum/topic/240562-open-library-simple-packet-structure/#findComment-1692296 Compartilhar em outros sites More sharing options...
Tony Araujo 282 Postado Abril 28, 2016 Autor Share Postado Abril 28, 2016 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: 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 More sharing options...
BananaFight 196 Postado Abril 30, 2016 Share Postado Abril 30, 2016 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 More sharing options...
Felipe Moraes 151 Postado Maio 7, 2016 Share Postado Maio 7, 2016 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 More sharing options...
Posts Recomendados