Limitações dos jogos multiplayer p2p vs cliente-servidor [fechado]

12

Estou lendo sobre a arquitetura de jogos multiplayer.

Até agora, a maioria dos artigos que encontrei lidam com o modelo cliente-servidor.

Gostaria de saber quais são as limitações para usar uma arquitetura p2p? que "classe" de jogos é possível (ou mais comum) implementar usando-a? quais não são? e, em geral, quais são suas principais diferenças e limitações em relação ao modelo cliente-servidor.

spaceOwl
fonte
relacionada gamedev.stackexchange.com/questions/3887/...
Ciro Santilli冠状病毒审查六四事件法轮功
Para um exemplo de um verdadeiro jogo P2P, você pode ver Gunz: The Duel, que tem grandes problemas no modo multiplayer e com hackers por causa disso.
precisa saber é o seguinte

Respostas:

11

Aqui estão meus dois centavos:

P2P :

  • Prós:
    • Não há necessidade de um servidor central : isso o torna muito mais barato e mais viável para jogos independentes de baixo orçamento.
    • Escala muito bem (até certo ponto, quando o cliente médio simplesmente não consegue lidar com a largura de banda).
    • Muito bom para distribuição de dados : serve para jogos nos quais o conteúdo criado pelo usuário é sincronizado dinamicamente (por exemplo, torrents).
    • Mais estável: nunca pode acontecer que o servidor esteja com problemas e ninguém possa jogar (depende da implementação).
  • Contras:
    • Difícil de implementar : muito mais difícil criar uma arquitetura P2P sólida do que um servidor-cliente.
    • É muito difícil evitar trapaças em um sistema assim, a menos que você designe um par autoritário (o que prejudicará quaisquer benefícios do dimensionamento bem do P2P).
    • É difícil conseguir segurança.
    • A conexão de internet de um cliente também pode influenciar o jogo para outros.
    • A latência geralmente é muito maior (embora possa ser melhor ao ingressar em um jogo na Internet com várias pessoas de uma rede LAN, por exemplo).
    • Pode exigir encaminhamento de porta : o P2P pela Internet requer encaminhamento de porta, e nem todo mundo é tecnicamente inclinado o suficiente para fazer isso. Além disso, o ISP pode impedir o encaminhamento de porta e aumenta a barreira à entrada.

Servidor-Cliente :

  • Prós:
    • Fácil de implementar: é o mais simples possível.
    • Se bem implementado, dimensiona extremamente bem (se o trabalho puder ser distribuído por vários servidores).
    • Trapaças podem ser evitadas facilmente (em comparação com P2P).
    • Latência mais baixa : se o servidor tiver uma conexão sólida, a latência poderá ser extremamente baixa.
    • A conexão de internet de um jogador nunca afeta o jogo de outro.
  • Contras:
    • Custa dinheiro para executar os servidores : definitivamente não é adequado para um jogo gratuito (a menos que você permita que os jogadores configurem um servidor dedicado, mas isso pode ser um problema de segurança).
    • Se o servidor tiver problemas, todos terão.

Eu consideraria o P2P uma boa opção, porque a conexão média à Internet está ficando cada vez melhor; no futuro, a latência do P2P pode não ser um problema. Também muito do P2P depende da implementação específica.

Existem também algumas arquiteturas que combinam P2P com servidor-cliente.

akaltar
fonte
P2P Con: Matchmaking, a menos que seja um jogo da LAN, você não sabe como encontrar seu par. CS: Latência mais baixa não ocorre quando um jogador, digamos, na Alemanha, e outro na Austrália. Ainda é um problema 6y depois. CS: Não custa muito dinheiro , na verdade. Servidores se tornam bastante baratos. Além disso, você pode começar hospedando o jogo em seu próprio PC usando algum proxy da Web para apontá-lo.
badunius 24/01
2

Um grande risco de jogos ponto a ponto é que, sem uma autoridade central na forma de um servidor neutro, não há como evitar trapaças. Cada cliente pode interpretar o resultado do jogo como quiser. Alguns jogos declaram que um dos clientes é o host e o julgam, mas quando esse cliente é um trapaceiro, eles decidem o resultado de todo o jogo.

Em jogos que exigem baixa latência e alta largura de banda, como qualquer jogo que exige uma reação rápida dos jogadores, você também tem o problema de o host estar apenas usando uma conexão de Internet de nível consumidor, não sentado em um datacenter com um backbone de alto desempenho conexão. Isso significa que a experiência do usuário sofrerá. Isso não é um grande problema em jogos mais "estratégicos" e mais lentos.

Philipp
fonte
Usando um modelo de consenso, trapacear não é mais um problema do que seria em um modelo cliente-servidor.
Jeroen
1

A implementação de jogos multiplayer ponto a ponto não é fácil e não é aplicável no momento.

O problema é que nenhum dos pares conhece todos os outros para que você tenha vários saltos para cada mensagem, o que resulta em uma latência mais alta em comparação com um modelo de servidor cliente. Consulte este documento para obter detalhes adicionais.

Os jogos baseados em rodadas podem facilmente usar esse protocolo, pois não dependem muito da latência. Além disso, eles normalmente têm apenas alguns hosts em uma sessão, para que um possa transmitir todas as mensagens para todos os outros jogadores.

Outros jogos que usam ponto a ponto apenas escolhem um dos pares dinamicamente para hospedar o jogo (ou seja, CoD MW2), o que resulta em problemas como migração de host se o host se desconectar.

Horstinator
fonte
3
O que você quer dizer com "não aplicável no momento"? Existem muitos jogos que usam P2P para redes. Além disso, "nenhum dos pares conhece todos os outros pares" está errado. Embora, na prática, os relés precisem ser suportados para melhorar a robustez, é perfeitamente possível ter uma topologia de rede perfeita de todos para todos, especialmente com pequenas contagens de pares ou na LAN, onde não há roteadores NAT interferindo.
Tapio
@Tapio Obviamente, é possível construir uma rede p2p para jogos, mas seria limitada em termos de latência, número de usuários ou ambiente em que é usada. Por esse motivo, a maioria dos jogos não usa uma abordagem p2p.
Horstinator
@Horstinator Eu sei de um jogo que usa P2P para um jogo FPS, é solidamente suporta 50-100 jogadores sem quaisquer problemas de latência de qualquer natureza (Seu chamado guerra stickman para quem se preocupa).
akaltar
@akaltar É de código aberto? Eu gostaria de ver como eles fazem isso.
Horstinator
@ Horstinator Muito ruim, mas até onde eu sei, não é. Você pode perguntar ao criador do fórum (é um projeto muito pequeno, para que alguém responda).
akaltar