2010-05-16 5 views
7

Un ami et moi avions une discussion sur la façon dont un serveur FPS met à jour les clients qui y sont connectés. Nous avons regardé un video d'un gars tricher en Battlefield: Bad Company 2 et vu comment il a mis en évidence la position des ennemis sur l'écran et cela nous a fait réfléchir. Il prétendait que le serveur ne mettait à jour le client qu'avec des informations immédiatement pertinentes pour le client. C'est à dire. le serveur n'enverra pas d'informations sur les joueurs ennemis s'ils sont trop éloignés du client ou hors de la ligne de vue du client pour des raisons d'efficacité. Il n'était pas sûr cependant - il a évoqué l'exemple de quelqu'un qui se cache derrière un rocher, incapable de voir qui que ce soit. Si le joueur venait à apparaître soudainement alors qu'il avait trois joueurs dans sa ligne de vue, il y aurait un délai de 50ms avant d'être affiché sur son écran pendant que le serveur transmettait les informations nécessaires. Mon argument était le contraire: que le serveur envoie au client toutes les informations sur chaque joueur et laisse le client trier ce qui est autorisé et ce qui ne l'est pas. Je pensais que ce serait moins coûteux en informatique pour le serveur d'envoyer tout simplement au client et de laisser le client faire le gros du travail, pour ainsi dire. J'ai aussi pensé que c'est ainsi que fonctionnent les programmes de triche: ils interceptent les paquets du serveur, localisent les ennemis, puis les affichent sur la vue du client.Quelles sont les stratégies générales pour le serveur d'un jeu multijoueur FPS pour mettre à jour ses clients?

Donc, la question: Quelles sont les politiques générales ou les stratégies d'un serveur de First Person Shooter moderne pour garder ses clients à jour?

Répondre

11

C'est un compromis entre votre position et la position de votre ami, et chaque jeu prendra une décision légèrement différente sur ceci pour réaliser leur échange désiré. Le serveur peut essayer de ne pas envoyer plus d'informations que nécessaire, par exemple. effectuer la vérification à distance, mais inévitablement enverra certaines informations qui peuvent être exploitées, comme envoyer la position d'un ennemi qui se trouve derrière un rocher, simplement parce qu'il est trop cher pour le serveur de calculer la ligne de vue exacte à chaque fois et aussi pour le problème de latence que vous mentionnez. En règle générale, vous constaterez que les jeux FPS ont tendance à «divulguer» plus d'informations que d'autres, car ils sont plus concernés par une expérience de jeu fluide qui nécessite un taux de mises à jour plus rapide et plus régulier. De plus, contrairement aux MMO, un joueur de FPS est généralement libre de passer à un autre serveur s'il trouve son jeu ruiné par des triches.

Quelques lectures complémentaires:

+0

Avez-vous des ressources en ligne où je peux en apprendre plus à ce sujet? –

+2

J'ai ajouté quelques liens à la réponse. J'apprends beaucoup en lisant le forum Gamedev.net en particulier. – Kylotan

+1

Excellentes ressources; en particulier Source Networking multijoueur. J'allais répondre avec celui-là. +1 – Leftium

3

La règle générale doit être de ne pas faire confiance aux clients, dans le sens où le développeur doit supposer que n'importe qui est capable de réécrire le client à partir de zéro. Cela dit, je pense qu'il est difficile d'éviter d'envoyer ce genre d'informations au client (et d'empêcher ce genre de tricherie). Même s'il n'y a pas de ligne de visée, vous devrez peut-être envoyer des positions (indirectement) puisque les clients voudront utiliser un système de son surround qui nécessite des emplacements 3D de sources sonores, etc.

+1

Malheureusement, * devrait être la terre * est une terre loin, non représentatif de la réalité. ;) –

+1

Le point reste cependant - vous ne devriez pas faire confiance aux clients, car les gens exploitent cette confiance pour tricher.Cela s'applique à la fois à donner à un client plus d'informations qu'il n'est supposé savoir et également à recevoir des commandes précises (par exemple, le client dit au serveur qu'il passe à travers les murs). – Numeron

Questions connexes