Quelles sont les stratégies générales pour le serveur d'un jeu FPS multijoueur mettre à jour ses clients?

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

Question

Un ami et moi avons eu une discussion sur la façon dont un serveur met à jour les FPS clients qui y sont connectés. Nous avons regardé un vidéo d'une tricherie gars dans Battlefield:. Bad Company 2 et vu comment il a mis en évidence la position des ennemis à l'écran et il nous fait penser

Il a prétendu que le serveur met à jour que le client avec des informations qui sont immédiatement pertinentes au client. C'est à dire. le serveur n'envoyer des informations sur les joueurs ennemis s'ils sont trop loin du client ou de la ligne du client de vue pour des raisons d'efficacité. Il ne savait pas bien - il a évoqué l'exemple de quelqu'un se cacher derrière un rocher, ne peut voir personne. Si le joueur était tout à coup apparaître où il avait trois joueurs dans sa ligne de mire, il y aurait un 50ms délai avant qu'ils ont été rendus sur son écran alors que le serveur transmet les informations nécessaires.

Mon argument était le contraire: que le serveur envoie au client toutes les informations sur chaque joueur et laisse le genre de client ce qui est permis et ce qui est pas. Je pensais que ce serait en fait informatiquement moins cher pour le serveur à tout juste d'envoyer au client et laisser le client faire le levage de charges lourdes, pour ainsi dire. Je me suis aussi c'est de savoir comment les programmes triche travail -. Interceptent les paquets de serveur, obtenir l'emplacement des ennemis, puis les montrer sur le point de vue du client

La question: Quelles sont certaines politiques ou stratégies générales un premier serveur de jeu de tir subjectif moderne utilise pour garder ses clients mis à jour

Était-ce utile?

La solution

Il 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 ce pour atteindre leur compromis souhaité. Le serveur peut essayer de ne pas envoyer plus d'informations que nécessaire, par exemple. effectuer le contrôle à distance, mais envoie inévitablement des informations qui peuvent être exploitées, comme l'envoi de la position d'un ennemi qui se cache derrière un rocher, tout simplement à la fois parce qu'il est trop cher pour le serveur pour calculer la ligne exacte de la vue à chaque fois et aussi pour la question de la latence que vous mentionnez.

En règle générale, vous trouverez que les jeux FPS tendent à une « fuite » plus d'informations que d'autres parce qu'ils sont plus préoccupés par une expérience de jeu lisse qui nécessite un rythme plus rapide et plus régulière des mises à jour. En outre, contrairement à MMOs, un joueur FPS est généralement libre de passer à un autre serveur s'ils trouvent leur jeu ruiné par les tricheurs.

Quelques lectures complémentaires:

Autres conseils

La politique générale doit être ne pas faire confiance aux clients , dans le sens que le développeur doit supposer que tout le monde 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'information au client (et éviter ce genre de tricherie). Même s'il n'y a pas la ligne de mire, vous pouvez toujours besoin d'envoyer des postes (indirectement) puisque les clients peuvent vouloir utiliser un système son surround qui nécessite 3D emplacements des sources sonores, etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top