J'ai pensé à implémenter la furtivité dans un jeu multijoueur. C'est un jeu de style MOBA, alors pensez à League of Legends (LoL) et Heroes of the Storm (HotS). Plusieurs clients se connectent à un seul serveur, qui diffuse l'état du jeu à tous les clients. Les clients envoient leurs données d'entrée au serveur, ce qui peut les rejeter lorsqu'ils rencontrent des commandes invalides, rendant ainsi la tricherie impossible (enfin, en théorie).
Maintenant, je mentionne ces jeux exprès parce que les deux implémentent la furtivité différemment. LoL a la furtivité avec deux états possibles: vous êtes soit complètement visible soit complètement invisible. HotS, d'autre part, implémente la furtivité de manière à ce que vous puissiez voir par un miroitement dans l'air:
Je pense que c'est un mécanisme soigné, car il favorise / récompense en prêtant attention à votre environnement. Cependant, étant un jeu multijoueur, j'ai réalisé que cela pourrait se révéler facilement exploitable.
Lorsque vous implémentez la furtivité de la manière «LoL», vous pouvez simplement arrêter d'envoyer les coordonnées des joueurs aux autres clients. Lorsque le personnage du joueur rompt furtivement, le serveur peut diffuser à nouveau l'emplacement. Cependant, avec le modèle HotS, un scintillement peut être vu dans l'air où le personnage se déplace. Cela signifie que le serveur doit envoyer l'emplacement du joueur aux autres clients. Ce qui signifie que les joueurs qui modifient la texture ou le modèle ou même le code du jeu lui-même pourraient rendre la mécanique de la cape inutile. Voici un fil sur les cartes HotS à ce sujet.
Ma question est de savoir s'il existe un moyen de mettre en œuvre le camouflage (avec un `` miroitement '', à la HotS), sans que les joueurs astucieux puissent modifier le jeu (données) et `` battre le système ''. Est-ce possible, et sinon, comment les autres jeux multijoueurs avec ce mécanisme traitent-ils cela? Seul le style d'invisibilité LoL est-il imbattable?
J'ai pensé à ce que le serveur envoie de temps en temps de faux emplacements de cape, mais cela nuit également aux joueurs honnêtes qui ne font que prêter attention, donc cela ne fonctionnera pas.
la source
Réponses:
Vous ne pouvez pas implémenter un effet miroitant sans le rendre facile à exploiter ... mais que faire si vous avez utilisé un moyen indirect de montrer que quelqu'un est là, un moyen qui s'applique également aux joueurs visibles?
Par exemple, que se passe-t-il si les joueurs laissent des empreintes et que les messages "empreinte créée" sont envoyés depuis le serveur indépendamment de l'emplacement du joueur? Chaque joueur laisse des empreintes de pas, vous ne pouvez donc pas rendre le modèle d'empreinte plus visible sans couvrir l'arène et rendre chaque impression individuelle moins visible, mais si un joueur voit une empreinte apparaître sans personnage visible, il sait que quelqu'un est là.
Vous pouvez également faire des choses comme avoir de petits cailloux qui sont renversés, du bruissement d'herbe lorsque quelqu'un y marche ou des ondulations qui apparaissent lorsque quelqu'un se déplace dans l'eau. Si les `` signes '' ne s'appliquent qu'à certains emplacements ou matériaux, cela pourrait ajouter une stratégie supplémentaire qui force les personnages invisibles à se déplacer avec précaution et à éviter les choses qui donneront leur position.
la source
without making it easy to exploit
-> Cela s'applique à toutes les mécaniques de jeu, pas seulement à celle-ci.Lorsque vous regardez les innombrables autres questions sur la prévention de la triche dans les jeux multijoueurs qui se trouvent sur ce site, vous verrez facilement qu'il n'y a vraiment aucune mesure technique pour empêcher la tricherie côté client.
Tout ce que vous pouvez faire est de fournir moins d' informations sur l'entité masquée. Tout ce que le client doit savoir pour rendre l'effet de distorsion, c'est qu'il y a quelque chose de masqué à cette position. Mais il n'a pas besoin de savoir quoi que ce soit de spécifique, comme ce que c'est exactement, combien de santé il lui reste et ce qu'il fait en ce moment. Selon votre jeu, cela seul peut être un déficit d'informations qui change la donne pour le joueur.
la source
Oui, toute information que vous envoyez au client peut être plus évidente que vous le souhaitiez. Mais voici l'astuce:
Atténuer l'impact
Bien sûr, le client peut avoir des informations, mais en réfléchissant soigneusement aux informations que vous êtes prêt à partager et à ce que les joueurs peuvent en faire, vous pouvez au moins atténuer l'impact des piratages des clients.
1. Qu'est-ce que le joueur observe?
une. Vous voyez quelque chose mais ce n'est pas sur place (le pont ou la brousse bouge, mais c'est grand pour que vous ne sachiez pas où viser; les pas ne deviennent visibles qu'avec un retard de 2 secondes): dans ce cas, le client sait seulement qu'il y a quelque chose, mais pas où / quoi exactement.
b. Vous observez quelque chose d'une manière différente (son si quelque chose se trouve dans la zone; indication de proximité comme un radar avec ou sans direction)
La capture d'écran de la question semble être comprise entre 1 et 2 car elle est probablement basée sur des informations limitées, mais vous voyez toujours le contour qui pourrait donner des informations.
2. Que peut faire le joueur?
Supposons que vous pensez que quelqu'un est à la coordonnée XY, que pouvez-vous faire? Voici quelques choix typiques:
Attaquer
En mouvement
Si la sélection de l'itinéraire se fait normalement côté client
la source
L'effet d'entraînement pourrait se faire via le code du shader. Vous pouvez désactiver l'utilisation de la texture dans ce mode afin que le simple changement de texture ne soit plus un problème.
En 3D, lorsque le modèle entre en jeu, vous pouvez toujours changer le shader en un qui simule la réfraction, en utilisant uniquement la surface du modèle, en éliminant la couleur. Même lorsque le modèle est remplacé d'une manière ou d'une autre, l'effet demeure.
La modification du shader précompilé serait aussi difficile que la modification du code du jeu et je pense que c'est un niveau plus difficile que la recherche de texture dans les fichiers du jeu.
la source
Which means that players that change the texture or model or even the game code itself could render the cloak mechanic useless
. Et je ne vois pas pourquoi j'ai raté la questionwhether there is some way to implement cloaking (with a 'shimmer', à la HotS), without having the issue that crafty players can modify the game (data)
. A: Il annonce le camouflage avec des reflets, B: il est plus difficile à modifier qu'un simple changement de texture. Où rendre réellement est un autre côté. Si la position est la seule chose dont nous avons besoin pour appliquer un effet d'entraînement, ce devrait être les seules données envoyées au joueur.