Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wellbritoo Ua

como funciona uma logica de animaçao em html5/socketTCP...

Recommended Posts

ola galera eu tenho um rpg online em html5 hospedado em casa rodando com servidor node.js socket.io

 

porem me esbarrei em uma logica que se aplica a varios tipos de jogos como escrito em linguagens c, c++, java, delph...

 

a logica parece simples mas esta me encabulando a semanas entao vamos la...

 

eu tenho o jogo e um avatar que quando eu clico em x,y no mapa meu jogador envia para o servidor minhas coordenada x,y entao com uma funçao eu digo para o servidor ir movendo até as cordenadas finais que forao clicadas tanto pra mim quanto para os que estiverem online no mapa.

 

tenho uma imagem com 6 desenho de um avatar que desenha somente um a cada 100 milesegundos criando animaçao , ai fica uma duvida para o outro player ver meus movimentos é preciso que eu envie a cada 100 milesegundo as posiçao x,y do meu background isso nao iria derrubar meu servidor?

 

por exemplo:

 

if[ playerx > mouseclickx] socket.send[backgroudpositionx],100; isso é só um exemplo logico nao é nenhuma programação...

 

 

 

meu player tem esse metodo draw do html5:

context.drawimage(img,posiçaoimg.x,posiçaoimg.y,altura,largura,posiçaomapax,posiçaomapay);

 

 

a pergunta é

como ocorre animaçoes com envio de dados cliente para servidor de servidor para todos online de módo que nao forçe o servidor quando estiver com uns 100 players enviando animaçoes para ele?

 

 

se voce nao entendeu me pergunte que eu edito.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que normalmente ocorre é o cliente enviar para o servidor a ação, o servidor propaga a ação para os clientes e cada cliente faz a animação.

 

Por exemplo:

Jogador A clica na posição X,Y para andar

Jogador A envia dados do click para o servidor

Servidor envia para os Jogares B, C, D que jogador A clicou na posição X,Y para andar

Jogador B faz a animação do Jogador A andando até a posição X,Y

Jogador C faz a animação do Jogador A andando até a posição X,Y

Jogador D faz a animação do Jogador A andando até a posição X,Y

Assim tem apenas 4 troca de informações:

A > Servidor

Servidor > B

Servidor > C

Servidor > D

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que normalmente ocorre é o cliente enviar para o servidor a ação, o servidor propaga a ação para os clientes e cada cliente faz a animação.

 

Por exemplo:

Jogador A clica na posição X,Y para andar

Jogador A envia dados do click para o servidor

Servidor envia para os Jogares B, C, D que jogador A clicou na posição X,Y para andar

Jogador B faz a animação do Jogador A andando até a posição X,Y

Jogador C faz a animação do Jogador A andando até a posição X,Y

Jogador D faz a animação do Jogador A andando até a posição X,Y

Assim tem apenas 4 troca de informações:

A > Servidor

Servidor > B

Servidor > C

Servidor > D

 

 

 

 

desculpa nao ter respondido antes meu provedor deu pau.

 

muito obrigado pelas resposta mais ainda estou meio confuso entenda.

 

se entrar novo jogador no mapa tera que criar automaticamente uma funçao contendo as animaçoes de todos que estao online no jogo? contendo os loops de animaçoes e posiços e nome e o servidor só mandará para mim o estado dos outros tipo inicia loop de animaçao de jogadorx para loop de animaçao de jogadorx ?

 

 

meio confuso né rsrs.

 

resumindo: como funciona o movimento de outro jogador online no jogo ele envia posiçao do seu background ou eu ja crio uma funçao contendo os loops de animaçoes dele no meu cliente automaticamente quando ele entra no jogo?

 

 

[bills] estou vendo seu site agora estou na seçao de spritesheet.

Compartilhar este post


Link para o post
Compartilhar em outros sites

pense no seguinte, o servidor envia apenas informações, por tanto ele não ficará "pesado" a não ser que você tenha muitas informações sendo subidas e baixadas ao mesmo tempo, dai dependendo do quanto robusto seu servidor for, ele pode ter problemas.

 

mas no lado do cliente, todas as funções de controle ja estarão implementadas. Mais ou menos assim:

 

O cliente tem todo o jogo ja funcionando no seu navegador como se fosse um single-player, então os outros avatares dos outros jogadores já estarão disponíveis, quando um outro jogador da rede, fizer alguma ação, seu personagem vai agir e ao mesmo tempo enviar informações para o servidor, que distribuirá para todos os clientes online, aquela ação do primeiro jogador.

 

dai questões como velocidade ou "lag" por haver mtos objetos trocando informação, pode ser fixado apenas delimitando que os clientes só receberão atualizações dos outros players, quando estiverem próximos a ele :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.