Como viável seria uma rede P2P autônoma totalmente / semi para jogos multiplayer ser?

StackOverflow https://stackoverflow.com/questions/597303

  •  11-09-2019
  •  | 
  •  

Pergunta

Eu estive refletindo sobre como um iria sobre a criação de um sistema P2P (como o BitTorrent é para arquivos) para jogos multiplayer. A ideia é remover o servidor tradicional da arquitetura multiplayer. Eu entendo que algum tipo de servidor pode ser necessário para iniciar as comunicações e envio mundo atualizações etc, mas eu estou interessado em como você iria reduzir as pressões de carga e de largura de banda no servidor.

A propósito, isso vale para qualquer jogo de tamanho, a partir de um jogo de damas dois jogadores até um FPS com mais de 30 jogadores.

Am I louco?

Foi útil?

Solução

Eu estive pensando sobre a mesma coisa. Eu tenho um prejuízo de longa data que os sistemas distribuídos deveria ser distribuída , sem a necessidade de um controlador central. O problema com um jogo MMO ou similar é que cada jogador deve ser capaz de ver o mesmo "mundo". Você acaba com um problema semelhante ao de Einstein-ian Relatividade e "simultaneidade." - quanto mais distante você estiver, mais a sua visão dos difere mundo

Em geral, a solução é que você tem que ser capaz de propagar informações para outros clientes em sua vizinhança imediata - no espaço in-jogador, não o espaço necessariamente física - rápido o suficiente para que atualizações aparecem em simultâneo a todos os locais jogadores.

Eu suspeito que a resposta é ter um "servidor" ou modelo de mundo por jogador, em vez de representar os jogadores como vetores em um servidor mundo.

Outras dicas

O grande problema não é bandiwdth ou latência ou distribuir alterações para o estado do jogo. O grande problema é a confiança.

Se eu te disser que eu matei um monstro, como você verificar que eu realmente fez isso? Como você verificar que estou realmente nível 45? Como você verificar que eu não estou teleportar ao redor do mundo? Lembre-se que você não pode verificar o servidor para cada pequeno detalhe: isso é o que estamos tentando evitar

Você precisa de jogadores assistindo jogadores e mesmo assim eles podem trabalhar juntos para enganar. Eu realmente duvido que alguém vai engendrar um confiável p2p MMO em breve.

Há muitas coisas a considerar na sua pergunta:

1) mestre Distributed - que começa o jogo, então? onde posso encontrar o primeiro nó? E se todo mundo decide fechar seu cliente P2P ao mesmo tempo? faz o fim do mundo?

2) as regras distrubuted - que podem confirmar que o jogador 77 de 102235 matou um monstro em x, y, z? Eu vejo problemas GRANDES em hacking / traindo com um "chefe no comando" ...

3) Latência - quando tem um cliente recebeu todos os dados? que se a Internet quebrar? ou em um jogo LAN, e se as matrizes harddrive -? isso vai louca do jogo para todos os outros

Eu acredito que o pensamento P2P é interessante, mas como em todas as competições, acredito que vamos precisar de um "juiz" que pode lidar com as regras, porque quando você está competindo contra "pessoas anônimas", então o seu "problema em batota" um monte pensa.

Eu acho que algum tipo de computação em grade pode ser o caminho para fazê-lo, mas, novamente, se alguns na grade cai para fora ou são demasiado lento para renderizar mundo e envio de resultados de volta .. então temos todo o jogo "atrasada " ... = jogo terrível para todos ... isso já é visto em muitos jogos FPS com um mestre-servidor. Se a alça de protocolo de rede doesnt ficam muito bem, está ficando mais difícil de acertar uma pessoa correndo ou eles aparecem do nada atirando-lhe na cara.

Uma solução cara poderia ser a de ter "subservers" (proxy-game-servidores) onde você tem alguns dos dados mais perto dos jogadores. Creio que essa seria necessário que você tem acesso a uma grande quantidade de serverfarms em todo o mundo (como a Blizzard faz com WOW) ou você vai ter que inventar algum tipo de "host P2P" inteligente que irá atualizar-se a "subserver" quando, em seguida, a largura de banda é suficiente e bastante grandes jogadores estão perto em proxsamity dele (sempre verificando o atraso de seu ponto de vista ...) ... agora vamos dizer que era possível .. e se a linha é quebrada entre este subserver eo gameloop principal globalmente novamente?

LOL ... isto poderia continuar ... parece cada vez mais como o problema geral com a Internet: -)

Happy codificação ...!

Eu sou certamente nenhum perito, mas soa um pouco louco para mim. Na minha experiência, você precisa de servidores de jogos dedicados por causa da largura de banda e desempenho. Com P2P você perderia ambas as coisas. Na minha opinião, P2P é bom para algumas coisas. Distribuição de arquivos e pesquisa estão entre eles. No entanto, esses 2 coisas não precisa de dados em tempo real. Se você teve algum tipo de mundo de jogo multiplayer, então você provavelmente poderia usar P2P para distribuir arquivos do jogo, e talvez mesmo número descarregar trituração.

Eu diria que há possibilidades, mas o número deles parecem limitados, embora potencialmente poderosa.

Eu acho que esta é provavelmente possível em teoria, mas ainda é um longo caminho.

Como observado em outros lugares, a latência pode ser mantido baixo, garantindo apenas atualizações para outros jogadores que estão nas proximidades. Isso tem sido feito por muitos anos em jogos distribuídos.

A perda de dados pode ser mantido em níveis toleráveis, permitindo que vários nós de ser responsável por cada pedaço de dados.

Em relação ao problema de confiança, seria possível ter um protocolo em que um jogador poderia "desafio" outro jogador a fazer batota uncover. Ou seja, o desafiante iria duplicar alguma parte da computação outros jogadores e pedir para comparar os resultados. Já existem protocolos criptográficos que fazem esse tipo de coisa, mas eu não sei os detalhes ou se elas são viáveis ??na prática.

O verdadeiro problema que eu vejo é que há pouca razão para desenvolver tais como o sistema. O custo seria alto e adicionar complexidade, mas a experiência de jogo (o produto) não seria significativamente melhorada. A atividade de economia de dinheiro deve economizar mais dinheiro do que custa, a fim de ser viável.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top