Entrar
Últimos assuntos
» Retorno da GMBR!!!por theguitarmester Ter 19 Mar 2024, 22:38
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Mudar cor de apenas uma palavra
por lunalol Sex 01 Mar 2024, 13:42
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21
» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39
» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16
» a funçao approach ainda existe?
por PEDRINDEV Ter 26 Dez 2023, 20:05
» Inimigo ataca até por trás! >:(
por saim Sex 22 Dez 2023, 08:55
» [RESOLVIDO]Spawn após morte
por Deception_1999 Dom 17 Dez 2023, 16:39
» Remunerado $$$ - Procuro programador para ajudar a "montar" um jogo
por theguitarmester Sáb 02 Dez 2023, 16:28
» Game maker nao abre
por Cerf Dom 26 Nov 2023, 12:01
Demora por TCP interrompe todas as conexões?
3 participantes
Página 1 de 1
Demora por TCP interrompe todas as conexões?
Bom, eu sei que fazer jogos online por TCP tem um empecilho: o jogo tem grande perigo de dar lag por perda de pacotes enviados que deveriam ser confirmados, mas que como não houve tal confirmação, são enviados desdo início de novo.
Minha dúvida! Se isso acontecer do servidor para um jogador, os outros jogadores são imediatamente afetados ou aquilo atrapalha apenas aquele jogador?
Ou seja, dá só lag com o socket que tá com problema ou faz parar todas as conexões até obter resposta do jogador de conexão "problemática?"
Minha dúvida! Se isso acontecer do servidor para um jogador, os outros jogadores são imediatamente afetados ou aquilo atrapalha apenas aquele jogador?
Ou seja, dá só lag com o socket que tá com problema ou faz parar todas as conexões até obter resposta do jogador de conexão "problemática?"
felipejoys- Data de inscrição : 29/12/2013
Reputação : 1
Número de Mensagens : 56
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Demora por TCP interrompe todas as conexões?
Recomendo que leia esse artigo, que está em inglês, mas é ótimo:
http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/
O melhor a se fazer é usar UDP, porque a segurança do TCP é também uma desvantagem. Com uma boa programação, é possível evitar vários bugs do UDP.
Respondendo a sua pergunta: geralmente só afeta o jogador.
Faz de conta que você é o jogador com perda de pacotes. Você se movimenta e isso não é enviado ao servidor. Aí você para e isso não é enviado ao servidor também. O que vai acontecer é que você vai se movimentar atrasado no jogo dos outros.
O problema que pode afetar outros jogadores é que se houver vários pacotes perdidos de vários jogadores, o servidor precisará processar muitos de uma vez, o que pode diminuir a performance dele. Mas geralmente isso não acontece, porque a taxa de perda é de até 5%. Em jogos pequenos, isso não é muito importante.
http://gafferongames.com/networking-for-game-programmers/udp-vs-tcp/
O melhor a se fazer é usar UDP, porque a segurança do TCP é também uma desvantagem. Com uma boa programação, é possível evitar vários bugs do UDP.
Respondendo a sua pergunta: geralmente só afeta o jogador.
Faz de conta que você é o jogador com perda de pacotes. Você se movimenta e isso não é enviado ao servidor. Aí você para e isso não é enviado ao servidor também. O que vai acontecer é que você vai se movimentar atrasado no jogo dos outros.
O problema que pode afetar outros jogadores é que se houver vários pacotes perdidos de vários jogadores, o servidor precisará processar muitos de uma vez, o que pode diminuir a performance dele. Mas geralmente isso não acontece, porque a taxa de perda é de até 5%. Em jogos pequenos, isso não é muito importante.
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Demora por TCP interrompe todas as conexões?
Se o jogador se movimenta e esse pacote não chega ao servidor, tudo bem, só ele vai congelar a conexão e enviar novamente os dados. Mas se o servidor que não consegue enviar os dados, ele vai esperar uma resposta e só enviar o próximo dado na lista quando o anterior tiver sucesso no envio. Se é o servidor que não obteve resposta, não seria adequado que ele congelasse todas as conexões, já que ele só usa um socket para todos e não tem como o protocolo TCP diferenciar num nível alto assim?
felipejoys- Data de inscrição : 29/12/2013
Reputação : 1
Número de Mensagens : 56
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Demora por TCP interrompe todas as conexões?
O que vai acontecer é:
O servidor envia 10 pacotes para o player 1 e 15 para o player 2.
Ao player 1, chegam 9 pacotes e ao player 2 chegam 14.
No próximo step do servidor, ele envia mais 15 para o player e mais 20 para o player 2. Chegam 14 e 18 respectivamente.
Nesse meio tempo, paralelamente, o PC vê que alguns pacotes faltaram, e tenta reenviá-los. Aí chegam os pacotes com sucesso. Só que tem mais pacotes ainda para serem enviados e mais perdas nos próximos.
O que acontece é que o GM trabalha separado da interface de rede. Ao mesmo tempo que ele está enviando certos pacotes, a interface pode estar enviando antigos perdidos e atuais ao mesmo tempo, para corrigir as perdas.
Nesse caso, se boa parte dos membros não receberem pacotes, outros podem ser afetados. Isso porque haverá congestionamento. Se muitos pacotes forem perdidos, muitos terão que ser reenviados.
O servidor envia 10 pacotes para o player 1 e 15 para o player 2.
Ao player 1, chegam 9 pacotes e ao player 2 chegam 14.
No próximo step do servidor, ele envia mais 15 para o player e mais 20 para o player 2. Chegam 14 e 18 respectivamente.
Nesse meio tempo, paralelamente, o PC vê que alguns pacotes faltaram, e tenta reenviá-los. Aí chegam os pacotes com sucesso. Só que tem mais pacotes ainda para serem enviados e mais perdas nos próximos.
O que acontece é que o GM trabalha separado da interface de rede. Ao mesmo tempo que ele está enviando certos pacotes, a interface pode estar enviando antigos perdidos e atuais ao mesmo tempo, para corrigir as perdas.
Nesse caso, se boa parte dos membros não receberem pacotes, outros podem ser afetados. Isso porque haverá congestionamento. Se muitos pacotes forem perdidos, muitos terão que ser reenviados.
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Demora por TCP interrompe todas as conexões?
Não dá pra ser exatamente assim. TCP envia pacotes garantidos.
TCP: envio um pacote, que chega no jogador, o jogador manda de volta um pacote dizendo "eu recebi" e o servidor manda *de novo* um pacote que agora diz "entendi que você recebi"
Um aperto de mão triplo. O segundo e terceiro são automáticos, coisa de TCP.
O problema é se durante esse triplo aperto de mão um dos pacotes não chega. A conexão congela, enviando mais vezes até que finalmente o pacote volte dizendo que foi recebido na terceira vez.
Daí minha dúvida: Se falhar, congela todas as conexões, ou só entre jogador específico e servidor?
TCP: envio um pacote, que chega no jogador, o jogador manda de volta um pacote dizendo "eu recebi" e o servidor manda *de novo* um pacote que agora diz "entendi que você recebi"
Um aperto de mão triplo. O segundo e terceiro são automáticos, coisa de TCP.
O problema é se durante esse triplo aperto de mão um dos pacotes não chega. A conexão congela, enviando mais vezes até que finalmente o pacote volte dizendo que foi recebido na terceira vez.
Daí minha dúvida: Se falhar, congela todas as conexões, ou só entre jogador específico e servidor?
felipejoys- Data de inscrição : 29/12/2013
Reputação : 1
Número de Mensagens : 56
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Demora por TCP interrompe todas as conexões?
Só entre o jogador e o servidor.
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Demora por TCP interrompe todas as conexões?
Ok... por que diz isso? Qual a lógica de TCP que te faz acreditar nisso?
felipejoys- Data de inscrição : 29/12/2013
Reputação : 1
Número de Mensagens : 56
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Demora por TCP interrompe todas as conexões?
Mais um artigo recomendado: http://gafferongames.com/networking-for-game-programmers/reliability-and-flow-control/
Eu imagino pelo seguinte: quando os packets são perdidos, eles precisam ser reenviados. Isso seria um problema se o servidor não pudesse enviar vários pacotes ao mesmo tempo. Mas os servidores podem. Então o único afetado é o player, que terá seu movimento atrasado e receberá movimentos atrasados.
Se a taxa de perda fosse grande (o que não é verdade) e acontecesse para vários players (improvável), o problema afetaria não só eles, mas a maioria.
Eu imagino pelo seguinte: quando os packets são perdidos, eles precisam ser reenviados. Isso seria um problema se o servidor não pudesse enviar vários pacotes ao mesmo tempo. Mas os servidores podem. Então o único afetado é o player, que terá seu movimento atrasado e receberá movimentos atrasados.
Se a taxa de perda fosse grande (o que não é verdade) e acontecesse para vários players (improvável), o problema afetaria não só eles, mas a maioria.
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Demora por TCP interrompe todas as conexões?
Os artigos que você está mandando estão se baseando em UDP. Eu estou mexendo com TCP. Já li essas páginas há alguns dias.
Aqui vai o que eu estou tentando expressar, direto da wikipedia (que não é uma fonte 500%, mas que quebra o galho aqui):
EDIT: Fui dar uma relida na página que você me mandou, e ela explica exatamente isso:
Aqui vai o que eu estou tentando expressar, direto da wikipedia (que não é uma fonte 500%, mas que quebra o galho aqui):
Wikipedia escreveu:Some network transport protocols such as TCP provide for reliable delivery of packets. In the event of packet loss, the receiver asks for retransmission or the sender automatically resends any segments that have not been acknowledged.[7] Although TCP can recover from packet loss, retransmitting missing packets causes the throughput of the connection to decrease. This drop in throughput is due to the sliding window protocols used for acknowledgment of received packets. In certain variants of TCP, if a transmitted packet is lost, it will be re-sent along with every packet that had been sent after it. This retransmission causes the overall throughput of the connection to drop.
EDIT: Fui dar uma relida na página que você me mandou, e ela explica exatamente isso:
Seu artigo escreveu:The problem with TCP is that it abstracts data delivery as a reliable ordered stream. Because of this, if a packet is lost, TCP has to stop and wait for that packet to be resent.
felipejoys- Data de inscrição : 29/12/2013
Reputação : 1
Número de Mensagens : 56
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Demora por TCP interrompe todas as conexões?
é o seguinte amigo o tcp, vai interromper os outros player sim, mas só se tiver em um loop só:
Exemplo:
loop{
Enviando pacotes player 1;
Enviando pacotes player 2;
Enviando pacotes player 3;
}
Se for TCP, e o pacote do player 1 não for enviado, ele para o loop ali, sendo assim se demorar 10s para enviar os outros player irão ficar parados 10s, oque recomendo fazer é usar thread, para cada player e usar udc para comandos basicos, como por exemplo a posição do player, já que você a envia constantemente.
Exemplo:
loop{
Enviando pacotes player 1;
Enviando pacotes player 2;
Enviando pacotes player 3;
}
Se for TCP, e o pacote do player 1 não for enviado, ele para o loop ali, sendo assim se demorar 10s para enviar os outros player irão ficar parados 10s, oque recomendo fazer é usar thread, para cada player e usar udc para comandos basicos, como por exemplo a posição do player, já que você a envia constantemente.
Kol- Data de inscrição : 11/09/2013
Reputação : 8
Número de Mensagens : 56
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Demora por TCP interrompe todas as conexões?
Nas funções nativas do GM:S você sabe se funciona como um loop só? Nele é um evento especial apenas para networking... Não tenho certeza de como é feito lá
felipejoys- Data de inscrição : 29/12/2013
Reputação : 1
Número de Mensagens : 56
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Demora por TCP interrompe todas as conexões?
O evento existe porque o sistema é assíncrono.
Então fique tranquilo.
Então fique tranquilo.
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Demora por TCP interrompe todas as conexões?
Eu sei que o TCP fica parado até se recuperar se perder um pacote. Quero saber se há como contornar isso e se o GM:S usa uma variante do TCP que não faz isso.
felipejoys- Data de inscrição : 29/12/2013
Reputação : 1
Número de Mensagens : 56
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» [RESOLVIDO]Nao consigo fazer duas conexoes no jogo
» GMS Demora Abrir
» Background demora andar...
» Por menssagems no fórum demora de amis, vamus covnersar via MSN!
» Olá a todos e a todas!
» GMS Demora Abrir
» Background demora andar...
» Por menssagems no fórum demora de amis, vamus covnersar via MSN!
» Olá a todos e a todas!
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|