Funcionamento de um socket de servidor de jogo

2 respostas
yschmitzz

e ae pessoal
esse topico nao é bem uma duvida, é uma curioidade que eu tenho xD
estava olhando alguns materiais referente a socket, client / server e etc me veio uma duvida, um jogo como mu, tibia, ragnarok, lineage etc
como o servidor sabe oq esta recebendo, por exemplo
um usuario começa a ganhar level, ele vai enviar para o servidor o novo level dele o servidor vai receber e armazernar no banco de dados
mas agora ele nao esta ganhando level, esta comprando itens o client vai enviar para o servidor qual item q ele compro, quanto de dinheiro ele perddeu e isso sera armazenado no banco de dados, numa tabela diferente da anterior, e em colunas diferentes, como o servidor sabe qual informação ele ta recebendo, como ele sabe se deve armazer na tabela de itens, ou na tabela de level? seria um buffer de transferencia para cada situação, como ele sabe qual usuario que ganho o level, qual uuario que perdeu dinheiro, é um buffer tbm pra cada usuario?

vlw galera

2 Respostas

ViniGodoy

Existe uma mensagem diferente para cada tipo de operação que o cliente irá realizar. Quem define o que vai na mensagem é o programador. O conjunto de regras que definem a comunicação de um programa é chamado de protocolo de comunicação. Cada jogo terá o seu (leia minha msg sobre protocolo aqui):

Entretanto, há uma coisa errada na sua lógica. Em jogos de rede, quem informa o cliente de que o nível subiu, de quanta experiência ganhou, de que o item foi comprado, etc… é o servidor. Assim, o servidor pode validar as ações dos clientes, e garantir que nenhum game modificado vá premiar um jogador com itens, níveis ou superpoderes.

O cliente é responsável apenas por desenhar o mundo e informar os comandos que o jogador enviou. O jogador, por exemplo, vai atacar um inimigo. O cliente envia “Atacou com o poder X o inimigo Y”.

O servidor então valida:

  • O poder X poderia ser atacado? (Ele pode não pertencer ao jogador, o jogador pode estar sem mana, ou o poder pode estar em cooldown).
  • O inimigo Y está vivo e no alcance?

Após isso, o servidor calcula o dano em cima do monstro e envia esse resultado para o jogador.
Só então o cliente desenha que o monstro levou dano.

Se o monstro morrer, o servidor envia quanta EXP o jogador ganhou e, se isso causar uma passagem de nível, uma mensagem para o nível subir.

yschmitzz

Po cara vlw, muito bom seu port sobre protocolo, entao o servidor sabe do que se trata e de quem se trata atravez do protocolo

Criado 20 de julho de 2012
Ultima resposta 20 de jul. de 2012
Respostas 2
Participantes 2