Comment les MMO gèrent-ils / devraient-ils gérer la déconnexion pendant le PvP?

20

Dans un MMO (pas même nécessairement un MMORPG), quelles sont certaines techniques pour gérer les joueurs se déconnectant au milieu du PvP?

En particulier - comment éviter de nuire aux personnes qui se déconnectent en raison de problèmes de réseau (ou même de la vie réelle), tout en n'affectant pas les personnes qui les engagent?

Et, surtout, comment vous assurez-vous que la déconnexion ne peut pas être utilisée comme méthode de triche?

Andrew Russell
la source

Réponses:

15

Nous avons eu ce problème avec certaines GCC en ligne sur lesquelles j'ai travaillé. Meilleure solution que j'ai vue:

1) Les joueurs DOIVENT se connecter au serveur, pas directement les uns aux autres, et vous ne devez JAMAIS transmettre les adresses IP des adversaires dans les données que vous diffusez aux joueurs. Cela empêche les attaques par déni de service où un joueur force son adversaire hors ligne pour la victoire.

2) Connexion abandonnée = vous perdez, l'adversaire gagne. Nous devons supposer que si vous tombiez, c'était une goutte pour éviter certaines pertes.

3) Les déconnexions tentent de se reconnecter pendant un certain temps, de sorte qu'un léger hoquet net ne vous oblige pas à perdre sans faute de votre part. Idéalement, le temps est suffisamment long pour permettre à quelqu'un de se reconnecter s'il a accidentellement lancé le câble, mais suffisamment court pour que l'adversaire ne soit pas frustré et ne s'endorme pas en attendant. Je pense que nous avons trouvé qu'environ 45 à 60 secondes se sentaient bien.

4) Autoriser les joueurs à signaler leurs adversaires. Il s'agit d'un fourre-tout nécessaire pour empêcher quiconque de trouver un moyen ennuyeux de contourner votre politique. Par exemple, être peut-être tellement violent verbalement que l'adversaire tombe juste pour sortir de là, ou se déconnecter et se reconnecter continuellement pour allonger la durée du jeu, ou obstruction pour éviter une perte, ou autre chose. Vous ne pouvez pas arrêter TOUS les mauvais comportements, mais vous pouvez inclure un mécanisme en jeu pour le signaler, puis laisser votre service d'assistance à la clientèle gérer le reste.

Ian Schreiber
la source
13

MMORPG populaire RuneScape utilise une minuterie de 1 minute. Lorsque vous vous déconnectez, votre personnage reste dans le monde pendant une minute entière, vulnérable aux attaques et autres.

Xeon06
la source
1
Idem pour DAoC. Cela fonctionne très bien, car si vous ne le faites pas, les gens peuvent se déconnecter pour éviter les combats. Auparavant, il y avait une commande «Quitter sur le bureau» / qtd dans DAoC qui faisait que les gens quittaient instantanément, et elle a été supprimée pour cette raison.
Ólafur Waage
8

J'ai dû résoudre ce problème une fois dans un jeu de course en ligne où les joueurs qui perdaient éteignaient souvent leurs consoles pour éviter que la perte n'apparaisse dans leurs records. Cependant, cela s'applique très bien à toute situation PvP.

Ma solution est allée comme ceci:

  1. Au début du match, une fois que tous les joueurs se sont joints et que le jeu est sur le point de commencer, calculez le résultat si notre joueur perd le match. Dans notre jeu de course, «perdu» signifie «arrivé en dernière position» et le résultat habituel serait «moins N points du classement des joueurs».

  2. Enregistrez le résultat dans un emplacement sécurisé (Savegame, leaderboard, zone de données en ligne, etc.).

  3. Parallèlement au résultat, stockez un indicateur «GameStarted». Cela signifie simplement que le jeu a commencé. Nous en aurons besoin plus tard.

  4. Une fois le jeu terminé, calculez le résultat réel et appliquez-le au score / aux statistiques des joueurs. Désactivez le drapeau "GameStarted". Il s'agit du processus normal d'achèvement du jeu.

  5. Cependant, si le joueur se déconnecte, débranche son câble ou s'éteint, il finira par revenir au menu des jeux. Dans le code du menu, nous vérifions le drapeau 'GameStarted'. S'il est défini, nous sommes sûrs que nous avons détecté une déconnexion en jeu plus tôt. Nous pouvons ensuite appliquer le résultat enregistré au score / aux statistiques des joueurs. Ce sera la même chose que si le joueur perd la partie. C'est aussi une bonne idée de lancer une alerte informant le joueur de ce qui se passe. Ensuite, une fois qu'il verra qu'il y a des conséquences à se déconnecter en cours de partie, vous verrez que le comportement commence à changer.

JanSolo
la source
C'est assez rusé. Évidemment, cela ne peut pas s'appliquer aussi bien à tous les types de jeux, mais le concept de calcul des conséquences potentielles à l'avance est une bonne idée.
Kylotan
1
Assez sévère pour une déconnexion accidentelle, cependant, pourrait utiliser une solution dans ce domaine.
Kzqai
5

Je pense que la seule façon d'y parvenir serait une question de structure de votre jeu. Il y a deux façons de rendre la tricherie moins souhaitable: la punition ou la récompense. Donc, si vous ne voulez pas de punition défavorable, pensez à des moyens de récompenser le joueur qui n'a pas abandonné.

Au lieu que la récompense du PvP soit le butin du corps conquis (ce qui rend la chute une très mauvaise chose), gagner confère une récompense comme l'exp., L'or ou autre chose (Points? Classement?). Si l'un des joueurs est expulsé, le joueur restant reçoit la récompense et le joueur qui a été expulsé ne gagne rien mais ne perd rien. À moins qu'il ne s'agisse d'un système de classement, auquel cas le joueur partant pourrait perdre des points de classement.

Bob
la source
C'est une analyse unique, j'aime ça.
Kzqai
Cela pourrait être exploité par deux joueurs qui se connaissent. Ils peuvent répéter cela aussi souvent qu'ils le souhaitent, car le perdant ne reçoit aucune pénalité.
unor
5

Lineage II le fait comme ceci:

  • Vous ne pouvez pas quitter le client du jeu pendant un combat - n'importe quel combat commence, peu importe si vous avez attaqué, attaqué ou guéri un coéquipier qui se bat et que vous êtes en position de combat, qui dure 15 secondes après la dernière de ces actions. a été fait.
  • Si vous vous déconnectez quand même ou que votre jeu plante, votre personnage reste dans le jeu pendant 15 secondes avant de disparaître. Il continue même d'attaquer automatiquement tout ce qu'il attaquait, mais n'utilise pas de compétences - comme si vous alliez en AFK.
  • Il existe cependant un moyen de se déconnecter instantanément en se reconnectant au même compte avec un autre client. Ceci est considéré comme une triche limite par la communauté lorsqu'il est fait en PvP, et certains outils de triche ont une option pour l'utiliser également, donc il n'est pas beaucoup utilisé là-bas. Cependant, lorsqu'ils mordent trop pour mâcher en PvE, certaines personnes utilisent toujours cette astuce pour éviter des morts inutiles (bien qu'il existe des objets en jeu qui permettent presque la même chose, à savoir les "rouleaux bénis d'évasion").
  • La reconnexion à une zone marquée JcJ (terrain du château pendant un siège, par exemple) et à certaines zones de boss épiques non instanciées spécifiques déplace le personnage vers la ville la plus proche (zone de sécurité). Ainsi, se déconnecter pour éviter de "perdre" entraîne une pénalité pour votre équipe, ce qui signifie qu'elle est fortement découragée par les normes sociales du jeu.

Personnellement, je le ferais de la même manière, autoriser uniquement les joueurs à prédéfinir les actions que leur personnage entreprend lors de la déconnexion (rester et se battre, courir vers la zone de sécurité la plus proche en évitant l'aggro, utiliser un parchemin régulier d'évasion, utiliser un parchemin béni de échapper, ...) et faire persister les personnages dans le monde du jeu même si le joueur n'est pas connecté.

Martin Sojka
la source
Agréable! Je l'aime! :)
Cliquez sur Ok
3

Celui qui s'est déconnecté mourra une fois qu'il aura été suffisamment poignardé, et l'autre sera crédité du meurtre. Tout ce qui est plus indulgent sera exploité.

Généralement, il y a une minuterie de 1 à 5 minutes avant que votre corps ne quitte le monde.

ZorbaTHut
la source
3

Il n'y a aucun moyen de déterminer la cause de la déconnexion (le courant a-t-il été coupé? Ai-je mis ma machine en colère contre un mur?), Vous ne pouvez donc que supposer que l'utilisateur essaie (ou essaierait) de tricher et de le rendre vulnérable pendant X minutes.

Bryan Denny
la source
3

La façon dont cela est géré par EVE Online est la suivante:

  • Le vaisseau commence à engager la déformation 15 secondes après la déconnexion. S'il est déformé, le vaisseau ne se déformera pas. (Le vaisseau de votre personnage commencera à "s'enfuir" après 15 secondes, à moins qu'il ne soit "piégé" par un autre joueur)

  • Le chronomètre PVP (temps jusqu'à ce que le joueur "s'enfuit" lorsqu'il est engagé dans un combat PvP) est réglé sur 3 minutes. (C'est pour contrer un certain nombre d'autres minuteries).

  • Le minuteur NPC reste à 1 minute, mais le vaisseau se déforme après 15 secondes à moins que la chaîne ne soit brouillée par le NPC.

  • Lorsqu'un navire est une cible verrouillée par le joueur, il doit passer au minuteur pvp (pour le contrer en utilisant le minuteur 1 min s'il se déconnecte dans des circonstances où il ne peut pas être ciblé jusqu'à ce que le minuteur soit réglé).

Sean James
la source
2

Si vous avez un moyen de modéliser les schémas habituels des joueurs au combat, vous pouvez les envoyer en mode AI jusqu'à ce qu'ils se reconnectent ou que la bataille se termine selon la première éventualité. Mais ne leur donnez aucune récompense (exp, objets, etc.) pour la bataille à moins qu'ils ne reviennent dans X temps.

lathomas64
la source
0

J'implémenterais une sorte d'hystérésis. Vous pouvez utiliser la carotte et le bâton. Mais choisir lequel utiliser peut être basé sur les antécédents (vous pouvez également faire une analyse de leur connexion et de leur "capacité de gain" actuelle et l'utiliser). C'est comme ça que vous le feriez en personne, espérons-le. Modèle simple:

  • Si je suis "mauvais" et que je DC je reçois le bâton. Je suis maintenant plus mauvais.
  • Si je suis "mauvais" et que je termine, je ne reçois pas le bâton mais je ne reçois pas non plus la récompense. Je suis maintenant plus près d'être bon.
  • Si je suis "bon" et que je ne reçois pas de bâton, je n'obtiens pas non plus de récompense. Je suis maintenant plus près d'être mauvais.
  • Si je suis bon et complet, j'obtiens la récompense. Je suis maintenant plus bon.

Vous pouvez en abuser oui. Mais cela pourrait prendre plus d'efforts que de simplement mordre la balle. (S'il a fallu 2 DD pour être mauvais par exemple, vous pourriez techniquement vous débarrasser de la moitié de vos pertes. Mais cela atténue certains abus et dans le cas de joueurs moins qu'intelligents tous abusent).

Accordé en utilisant cela signifie que les tableaux de bord ne totaliseront pas 100%. Puisque vous pouvez DC tout en étant bon et ne pas enregistrer de perte. Mais l'autre bon joueur peut enregistrer une victoire. Le fait de ne pas additionner à 100% signifie que 2 joueurs peuvent coopérer en éteignant le joueur DC pour empiler les gains.

Donc, pas infaillible, mais une analyse bayésienne supplémentaire de la connexion gamestate + pourrait probablement détecter le funkiness et rendre ce schéma à l'épreuve des balles. (Vous pouvez vaincre l'analyse bayésienne, mais les humains ne sont pas bons pour le faire et les calculs sont hors de portée pour la plupart des gens, sans parler de l'investissement en temps pour "amorcer" un combat pour passer à travers DC étant d'accord).

Noir
la source
Hmmm. Je peux voir un problème non rectifiable ... Si un "mauvais" gain peut se plaindre de ne pas obtenir sa "victoire" à moins que vous ne rendiez le plan très ouvertement documenté. Ce qui bien sûr invite à l'ingérence. Solution possible: Masquer les récompenses jusqu'à la fin d'une "saison" qui consolide au moins le problème ... mais peut conduire à de "mauvais" joueurs abandonnant le temps perdu à "investir". Gagnant-gagnant?
Black