Como os MMOs devem / devem lidar com a desconexão durante o PvP?

20

Em um MMO (nem sempre necessariamente em um MMORPG), quais são algumas técnicas para lidar com jogadores que se desconectam no meio do PvP?

Em particular - como você evita afetar negativamente as pessoas que são desconectadas devido a problemas de rede (ou mesmo na vida real), sem afetar negativamente as pessoas que os envolvem?

E, o mais importante, como você garante que a desconexão não possa ser usada como método de trapaça?

Andrew Russell
fonte

Respostas:

15

Tivemos esse problema com alguns CCGs online nos quais trabalhei. Melhor solução que já vi:

1) Os jogadores DEVEM se conectar ao servidor, e não diretamente um ao outro, e NUNCA deve passar endereços IP dos oponentes nos dados que transmitir aos jogadores. Isso evita ataques de negação de serviço em que um jogador força o oponente offline para a vitória.

2) Conexão derrubada = você perde, o oponente vence. Devemos assumir que, se você caiu, foi uma queda para evitar certas perdas.

3) As desconexões tentam se reconectar por um período de tempo, para que um ligeiro soluço líquido não o force a perder sem culpa sua. Idealmente, o tempo é longo o suficiente para permitir que alguém se reconecte se acidentalmente chutar o cabo, mas curto o suficiente para que o oponente não fique frustrado e adormeça enquanto espera. Acho que achamos que 45 a 60 segundos pareciam corretos.

4) Permita que os jogadores denunciem seus oponentes. Este é um conjunto necessário para impedir que alguém encontre uma maneira irritante de contornar sua política. Por exemplo, talvez seja tão verbalmente abusivo que o oponente caia apenas para sair de lá, ou se desconecte e reconecte continuamente para prolongar a duração do jogo, ou fique paralisado para evitar uma perda ou qualquer outra coisa. Você não pode impedir TODO o mau comportamento, mas pode incluir um mecanismo no jogo para denunciá-lo e deixar o departamento de suporte ao cliente cuidar do resto.

Ian Schreiber
fonte
13

MMORPG popular O RuneScape usa um cronômetro de 1 minuto. Quando você se desconecta, seu personagem permanece no mundo por um minuto inteiro, vulnerável a ataques e o que não.

Xeon06
fonte
11
O mesmo para DAoC. Funciona muito bem, pois se você não fizer isso, as pessoas poderão se desconectar para evitar brigas. Costumava haver um comando / Sair da área de trabalho / qtd no DAoC que fazia as pessoas saírem instantaneamente e foi removido por causa disso.
Ólafur Waage
8

Eu tive que resolver esse problema uma vez em um jogo de corrida on-line, onde jogadores que estavam perdendo costumavam desligar seus consoles para evitar que a perda aparecesse em seus registros. No entanto, isso se aplica muito bem a qualquer situação de PvP.

Minha solução foi assim:

  1. No início da partida, quando todos os jogadores se juntarem e o jogo estiver prestes a começar, calcule qual seria o resultado se o jogador perder a partida. Em nosso jogo de corrida, 'perdido' significa 'ficou em último lugar' e o resultado usual seria 'menos N pontos do ranking dos jogadores'.

  2. Salve o resultado em um local seguro (Savegame, placar, área de dados on-line, etc.).

  3. Junto com o resultado, armazene um sinalizador 'GameStarted'. Isso apenas significa que o jogo começou. Precisamos disso mais tarde.

  4. Quando o jogo terminar, calcule o resultado real e aplique-o à pontuação / estatísticas dos jogadores. Desative o sinalizador 'GameStarted'. Este é o processo normal de conclusão do jogo.

  5. No entanto, se o jogador desconectar, puxar o cabo ou desligar, eventualmente eles voltarão ao menu de jogos. No código do menu, fazemos uma verificação do sinalizador 'GameStarted'. Se estiver definido, temos certeza de que detectamos uma desconexão no jogo anterior. Podemos então aplicar o resultado armazenado na pontuação / estatísticas dos jogadores. Será o mesmo que se o jogador perdesse o jogo. Também é uma boa idéia colocar um alerta informando o jogador do que está acontecendo. Então, quando ele perceber que há consequências para se desconectar no meio do jogo, você verá que o comportamento começa a mudar.

JanSolo
fonte
Isso é muito esperto. Obviamente, ele não pode se aplicar igualmente bem a todos os tipos de jogos, mas o conceito de calcular as possíveis consequências antecipadamente é bom.
Kylotan
11
Bastante severo para desconexão acidental, no entanto, poderia usar uma solução nessa área.
Kzqai 28/10/10
5

Eu acho que a única maneira de conseguir isso seria uma questão de estrutura do seu jogo. Existem duas maneiras de tornar a trapaça menos desejável: punição ou recompensa. Portanto, se você não quer punição adversa, pense em maneiras de recompensar o jogador que não caiu.

Em vez de a recompensa de PvP ser o saque do corpo do conquistado (o que torna a queda muito ruim), a vitória concede uma recompensa como exp., Ouro ou algo totalmente diferente (Classificação dos Pontos?). Se um dos jogadores é expulso, o jogador restante recebe a recompensa e o jogador que foi expulso não ganha nada, mas perde nada. A menos que seja um sistema de classificação, nesse caso, o jogador que sair poderá perder alguns pontos no ranking.

Prumo
fonte
Essa é uma análise única, eu gosto.
Kzqai
Isso pode ser explorado por dois jogadores que se conhecem. Eles podem repetir isso quantas vezes quiserem, porque o perdedor não recebe penalidade.
Unor
5

O Lineage II faz assim:

  • Você não pode sair do cliente do jogo durante uma luta - qualquer luta começa, não importa se você atacou, foi atacado ou curou um companheiro de equipe que está lutando e você está em "posição de luta", que dura 15 segundos após a última ação desse tipo. foi feito.
  • Se você desconectar de qualquer maneira ou seu jogo travar, seu personagem permanecerá no jogo por 15 segundos antes de desaparecer. Ele ainda continua atacando automaticamente o que quer que esteja atacando, mas sem usar habilidades - o mesmo que faria se você fosse ao AFK.
  • Não é uma maneira de desligar instantaneamente, no entanto, reconectando para a mesma conta com outro cliente. Isso é considerado trapaça na comunidade quando feito no PvP, e algumas ferramentas de trapaça também têm uma opção para usá-lo, por isso não está sendo usado muito por lá. Ao morder demais para mastigar no PvE, no entanto, algumas pessoas ainda usam esse truque para evitar mortes desnecessárias (embora existam itens no jogo que permitem quase o mesmo, ou seja, os "rolos abençoados de fuga").
  • Reconectar-se a uma zona sinalizada por PvP (terreno do castelo durante um cerco, por exemplo) e algumas áreas épicas de chefes épicos não instanciados move o personagem para a cidade mais próxima (zona segura). Assim, desconectar-se para evitar "perder" acarreta uma penalidade para o seu time, o que significa que é fortemente desencorajado pelas normas sociais do jogo.

Pessoalmente, eu faria da mesma forma, apenas permitindo que os jogadores pré-definam as ações que seu personagem está realizando ao desconectar-se (fique e lute, corra para a zona segura mais próxima, evitando o aggro, use uma rolagem regular de fuga, use uma rolagem abençoada de escape, ...) e os personagens persistem no mundo do jogo, mesmo que o jogador não esteja logado.

Martin Sojka
fonte
Agradável! Eu gosto disso! :)
Clique em Ok
3

Quem desconectado morrerá assim que for esfaqueado o suficiente, e o outro será creditado pela morte. Qualquer coisa mais branda será explorada.

Geralmente, existe um cronômetro de 1 a 5 minutos antes que seu corpo deixe o mundo.

ZorbaTHut
fonte
3

Não há como determinar o que causou a desconexão (a energia foi desligada? Eu enfureci minha máquina contra uma parede?), Então você pode apenas assumir que o usuário está tentando (ou tentaria) trapacear e torná-lo vulnerável por X minutos.

Bryan Denny
fonte
3

A maneira como isso é tratado pelo EVE Online é a seguinte:

  • O navio começa a se empenar 15 segundos após a desconexão. Se for deformado, o navio não se deforma. (O navio do seu personagem começará a "fugir" após 15 segundos, a menos que seja "preso" por outro jogador)

  • O temporizador PVP (tempo até o jogador "fugir" durante o combate PvP) é definido como 3 minutos. (Isso serve para combater vários outros temporizadores).

  • O temporizador do NPC permanece em 1 minuto, mas o navio se deforma após 15 segundos, a menos que o NPC seja distorcido.

  • Quando um navio é alvo bloqueado pelo jogador, ele deve mudar para o temporizador pvp (para combatê-lo usando o temporizador de 1 minuto, se desconectar em circunstâncias em que não é alvo até o cronômetro ser definido).

Sean James
fonte
2

Se você tiver uma maneira de modelar os padrões habituais dos jogadores em batalha, poderá enviá-los para o modo AI até que reconectem ou a batalha termine, o que ocorrer primeiro. Mas não lhes dê recompensas (exp, itens etc.) pela batalha, a menos que retornem em X por um período de tempo.

lathomas64
fonte
0

Eu implementaria algum tipo de histerese. Você pode usar a cenoura e o palito. Mas escolher qual usar pode ser baseado no histórico (você também pode fazer uma análise da conexão e da "capacidade de vitória" atual e usá-la.). É assim que você faria pessoalmente, esperançosamente. Modelo simples:

  • Se eu sou "ruim" e eu DC, fico com o pau. Agora sou mais ruim.
  • Se eu sou "ruim" e concluo, não recebo o pau, mas também não recebo a recompensa. Agora estou mais perto de ser bom.
  • Se eu sou "bom" e eu DC, eu não entendo, mas também não recebo a recompensa. Agora estou mais perto de ser ruim.
  • Se eu sou bom e completo, recebo a recompensa. Agora sou mais bom

Você pode abusar sim. Mas fazer isso pode exigir mais esforço do que apenas morder a bala. (Se levar 2 CDs ruins, por exemplo, você pode tecnicamente se livrar de metade de suas perdas. Mas isso atenua alguns abusos e, no caso de jogadores menos inteligentes, todos abusam).

Concedido usando isso significa que os placares não serão somados a 100%. Desde que você pode DC enquanto bom e não gravar uma perda. Mas o outro bom jogador pode registrar uma vitória. Além disso, não somar 100% significa que 2 jogadores podem cooperar, desligando o jogador DC para ganhar vitórias.

Portanto, não é infalível, mas a análise bayesiana adicionada da conexão gamestate + provavelmente poderia detectar funkiness e tornar esse esquema à prova de balas. (Você pode derrotar a análise bayesiana, mas os humanos não são bons em fazer isso e a matemática está fora do alcance da maioria das pessoas, sem mencionar o investimento de tempo para "preparar" uma luta para superar o fato de DC estar bem).

Preto
fonte
Hummm. Eu vejo um problema irrepreensível ... Se a vitória "ruim" pode reclamar de não obter a "vitória", a menos que você torne o esquema muito documentado abertamente. O que, obviamente, convida a se intrometer. Solução possível: oculte recompensas até o final de uma "temporada" que pelo menos consolide o problema ... mas pode levar jogadores "ruins" a desistir do "investimento" desperdiçado. Vantajoso para as duas partes?
Preto