Astuces dans les mécanismes de jeu pour éviter de traiter la compensation de décalage réseau?

20

La mise en œuvre de la compensation de décalage réseau est difficile, comment l'éviter?

Peut-être qu'il est possible d'utiliser des astuces et de construire des mécanismes de jeu de telle manière que le décalage soit perçu comme un élément non critique ou même naturel du jeu?

Quelles sont ces techniques et existe-t-il des jeux existants (MMORPG, Stratégies, ...) qui utilisent de telles techniques?

MISE À JOUR:

Les jeux au tour par tour ne nécessitent pas de compensation de décalage, mais il serait intéressant de voir des approches en temps réel (ou juste une impression de temps réel, la partie importante - l'utilisateur ne devrait pas être bloqué et forcé d'attendre).

La raison principale pour laquelle j'évite la compensation de décalage est la simplicité.

Alexey Petrushin
la source
1
Ce lien pourrait aider: developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
John McDonald
6
Si vous cherchez à créer un jeu où la latence n'est pas un problème; pensez à construire quelque chose au tour par tour où quelques secondes sont acceptables.
Vaughan Hilts
3
Ce lien Valve concerne les moyens assez complexes de mise en œuvre de la compensation de décalage réseau - c'est donc le contraire de ce que la question pose.
Kylotan
@JohnMcDonald Oui, je connais cet article de Valve, et comme il l'a mentionné - c'est le contraire de ce que je demande :).
Alexey Petrushin
Vous voudrez peut-être aussi jeter un œil à GGPO: ggpo.net
Decency

Réponses:

16

Il est courant que le client implémente une sorte de rétroaction pour informer immédiatement le joueur que l'action choisie a été enregistrée, par exemple:

  • son de l'interface (par exemple, clic sur le bouton)
  • son dans le monde (par exemple, un personnage disant, "à la fois, commandant")
  • animation (p. ex. commencer à balancer une épée)

Ceux-ci peuvent avoir lieu pendant que les informations circulent vers le serveur, de sorte que le joueur ne se rend pas compte que son action n'a pas encore commencé. Tant que le serveur répond rapidement et que l'action commence bientôt, le joueur peut ne pas remarquer le retard.

Ces astuces fonctionnent dans les jeux où les entrées des joueurs sont assez rares et donc le temps que vous passez à attendre qu'une entrée prenne effet est une proportion relativement faible du temps total passé à jouer. Par conséquent, vous voudriez trouver des moyens de structurer le jeu afin que le joueur fasse moins d'entrées. Cela signifie probablement que les actions des joueurs sont plus abstraites et que le jeu implémente le comportement de bas niveau. Exemples:

  • remplacer la mécanique de direction par la mécanique de cheminement
  • remplacer la mécanique de visée par la mécanique de sélection de cible
  • remplacer les instructions de combat tour à tour par des plans plus tactiques ou stratégiques
  • remplacer le gameplay en temps réel / continu par des systèmes discrets / au tour par tour
Kylotan
la source
1
Merci, vous formalisez ce que l'on me demande - utilisez des entrées différées et différées du lecteur. Serait intéressant de voir les jeux réels qui utilisent cela.
Alexey Petrushin
2
Des centaines de jeux utilisent des choses comme celle-ci d'une manière ou d'une autre, mais cela a probablement été fait pour d'autres raisons, avec un retardement masquant un effet secondaire bénéfique.
Kylotan
7

Pensées aléatoires:

  1. triche: utilisez des roquettes . Les roquettes explosent dans un rayon, cachant toute étrangeté.
  2. tricher: prédéterminer le résultat et forcer la condition à se produire visuellement
  3. triche: les attaques prennent du temps , masquent la latence dans la discontinuité atk + anim + result
  4. triche: déconnectez les commentaires locaux des trucs de réseautage
  5. triche: beaucoup d'activités VFX ou d'écran qui couvrent toute bizarrerie.
  6. utiliser une conception action-réaction qui nécessite une résolution avant de continuer

Alors oui, trichez beaucoup.

Patrick Hughes
la source
4

La réponse est assez simple - créez simplement des jeux qui n'ont pas de sections critiques en termes de temps. Vous cherchez à éviter de mettre en œuvre ces types d'interpolations pour une raison spécifique que je prends, ce qui signifie que vous n'êtes pas préoccupé par un gameplay nerveux et rapide. Ceci est parfaitement accessible pour de nombreux jeux, y compris Civilization (qui est un jeu de stratégie). Cependant, comprenez que cela n'est PAS acceptable pour un jeu de stratégie EN TEMPS RÉEL où vous devez transmettre beaucoup de données sur le réseau à des moments variables. Si vous souhaitez concevoir un jeu autour d'un réseau à latence très élevée, tenez compte des points suivants:

  1. Créez des jeux au tour par tour. Dans ces types de jeux, la saisie en temps réel de l'état n'est pas nécessaire et l'autre joueur peut simplement pousser l'état du jeu dans son client quand c'est son tour. Cela réduit la pression sur le réseau et permet des retards allant même jusqu'à quelques secondes si l'on le souhaite. La civilisation est un jeu tourné qui est très populaire et dans la veine de la stratégie.
  2. Limitez au minimum l'impact des décisions des autres joueurs. Si votre jeu est stratégique et ne peut pas jouer au tour par tour, pensez à réduire l'impact des paquets retardés. Le client peut-il faire la plupart de la simulation? Un exemple est un jeu de stratégie qui se joue seul pendant un certain temps puis, disons 16 minutes, est simulé contre un autre joueur (peut-être un jeu de combat où les joueurs envoient des troupes tous les x intervalles et font rapport tous les y intervalles.

J'espère que cela aide au moins un peu; sans connaître vos idées de jeu exactes, c'est difficile. Je suppose que vous avez vos raisons de vouloir créer votre jeu autour d'un tel modèle (simplicité, économie de bande passante, complexité réseau réduite)

Vaughan Hilts
la source
4

Vous pouvez également faire du lag une partie de votre gameplay pour le "réalisme". Supposons que vos joueurs sont censés contrôler certains robots à distance, vous pouvez forcer le décalage à être d'au moins 500 ms ou 1 s (vous devez implémenter un système de rembourrage dynamique).

Arkh
la source
C'est une belle torsion
o0 '.
0

C'est aussi une bonne astuce pour simplement masquer les actions des joueurs. De nombreux jeux FPS font exactement cela. Ils ne montrent aucun visuel de la plupart des balles, seuls les sons sont joués et vous obtenez le résultat sous la forme de dégâts infligés aux joueurs.

J'ai joué à des jeux FPS où des armes de haute précision (tireurs d'élite et autres) avaient des effets visuels très clairs, et vous pouviez réellement voir que l'autre joueur tirait derrière vous, mais à cause de la compensation du décalage, vous avez été tué.

VSZM
la source