Ich habe darüber nachgedacht, Stealth in einem Multiplayer-Spiel zu implementieren. Es ist ein Spiel im MOBA-Stil, denken Sie also an League of Legends (LoL) und Heroes of the Storm (HotS). Mehrere Clients stellen eine Verbindung zu einem einzelnen Server her, der den Spielstatus an alle Clients überträgt. Clients senden ihre Eingabedaten an den Server, der sie möglicherweise ablehnt, wenn sie auf ungültige Befehle stoßen, wodurch Betrug (theoretisch) unmöglich wird.
Nun, ich erwähne diese Spiele absichtlich, weil beide Stealth unterschiedlich implementiert haben. LoL hat Stealth mit zwei möglichen Zuständen: Sie sind entweder vollständig sichtbar oder vollständig unsichtbar. HotS hingegen implementiert Stealth auf eine Weise, die Sie an einem Schimmer in der Luft erkennen können:
Ich denke, dies ist ein ordentlicher Mechaniker, da er die Aufmerksamkeit auf Ihre Umgebung fördert / belohnt. Da es sich jedoch um ein Multiplayer-Spiel handelt, wurde mir klar, dass sich dies als leicht ausnutzbar erweisen könnte.
Wenn Sie Stealth auf 'die LoL'-Art implementieren, können Sie einfach das Senden von Spielerkoordinaten an die anderen Clients beenden. Wenn der Charakter des Spielers Stealth bricht, kann der Server den Standort erneut übertragen. Beim HotS-Modell ist jedoch ein Schimmer in der Luft zu sehen, in der sich die Figur bewegt. Dies bedeutet, dass der Server den Standort des Players an die anderen Clients senden muss. Das bedeutet, dass Spieler, die die Textur oder das Modell oder sogar den Spielcode selbst ändern, die Umhangmechanik unbrauchbar machen können. Hier ist ein Thread auf den HotS-Boards darüber.
Meine Frage ist, ob es eine Möglichkeit gibt , das Cloaking (mit einem Schimmer à la HotS) zu implementieren, ohne das Problem zu haben, dass geschickte Spieler das Spiel (die Daten) modifizieren und das System schlagen können. Ist das möglich und wenn nicht, wie gehen andere Multiplayer-Spiele mit diesem Mechanismus damit um? Ist nur der LoL-Stil der Unsichtbarkeit nicht zu übertreffen?
Ich habe darüber nachgedacht, dass der Server von Zeit zu Zeit falsche "Umhang" -Standorte sendet, aber das schadet auch fairen Spielern, die nur aufpassen, und das geht nicht.
quelle
Antworten:
Sie können einen Schimmer-Effekt nicht implementieren, ohne ihn einfach auszunutzen. Aber was wäre, wenn Sie auf indirekte Weise zeigen würden, dass jemand in der Nähe ist? Ein Mittel, das auch für sichtbare Spieler gilt?
Was passiert zum Beispiel, wenn Spieler Fußspuren hinterlassen und "Fußspuren" -Nachrichten unabhängig vom Standort des Spielers vom Server gesendet werden? Jeder Spieler hinterlässt Fußabdrücke, sodass Sie das Fußabdruckmodell nicht sichtbarer machen können, ohne die Arena in ihnen abzudecken und jeden einzelnen Abdruck weniger auffällig zu machen. Wenn ein Spieler jedoch einen Fußabdruck ohne sichtbaren Charakter sieht, weiß er, dass jemand da ist.
Sie können auch Dinge tun, wie z. B. kleine Steine, die herumgeschlagen werden, Gras rascheln, wenn jemand durch das Wasser läuft, oder Wellen, die auftreten, wenn sich jemand durch das Wasser bewegt. Wenn "Zeichen" nur für bestimmte Orte oder Materialien gelten, kann dies zu einer zusätzlichen Strategie führen, die unsichtbare Charaktere dazu zwingt, sich vorsichtig zu bewegen und Dinge zu vermeiden, die ihre Position verraten.
quelle
without making it easy to exploit
-> Dies gilt für alle Spielmechaniken, nicht nur für diese.Wenn Sie sich die unzähligen anderen Fragen über das Verhindern von Betrug in Multiplayer-Spielen ansehen, die sich auf dieser Website befinden, werden Sie leicht erkennen, dass es wirklich keine technische Maßnahme gibt, um clientseitiges Betrügen zu verhindern.
Alles, was Sie tun können, ist, weniger Informationen über die getarnte Entität bereitzustellen . Alles, was der Kunde wissen muss, um den Verzerrungseffekt wiederzugeben, ist, dass sich an dieser Position etwas verhüllt hat. Aber es muss nichts Spezifisches darüber wissen, wie genau es ist, wie viel Gesundheit es übrig hat und was es gerade tut. Abhängig von Ihrem Spiel kann dies allein ein entscheidendes Informationsdefizit für den Spieler sein.
quelle
Ja, alle Informationen, die Sie an den Kunden senden, können offensichtlicher als beabsichtigt angezeigt werden. Aber hier ist der Trick:
Mildern Sie die Auswirkungen
Sicher, der Client verfügt möglicherweise über einige Informationen, aber wenn Sie genau überlegen, welche Informationen Sie bereit sind, zu teilen, und welche Aktionen die Spieler ausführen können, können Sie die Auswirkungen von Client-Hacks zumindest abschwächen.
1. Was beobachtet der Spieler?
ein. Sie sehen etwas, aber es ist nicht an Ort und Stelle (Brücke oder Busch bewegt sich, aber es ist groß, sodass Sie nicht wissen, wohin Sie zielen sollen; Schritte werden erst mit einer Verzögerung von 2 Sekunden sichtbar): In diesem Fall weiß der Kunde nur, dass es etwas gibt etwas, aber nicht wo / was genau.
b. Sie beobachten etwas auf andere Weise (Geräusch, wenn sich etwas in der Nähe befindet; Anzeige der Nähe wie ein Radar mit oder ohne Richtung)
Der Screenshot in der Frage scheint zwischen 1 und 2 zu liegen, da er wahrscheinlich auf begrenzten Informationen basiert, aber Sie sehen immer noch den Umriss, der einige Informationen verraten könnte.
2. Was kann der Spieler tun?
Angenommen, Sie glauben, jemand befindet sich an der Koordinate XY. Was können Sie tun? Hier sind einige typische Optionen:
Angreifen
Ziehen um
Wenn die Routenauswahl normalerweise clientseitig erfolgt
quelle
Der Ripple-Effekt könnte durch Shader-Code erfolgen. In diesem Modus können Sie die Texturverwendung deaktivieren, sodass die einfache Texturänderung kein Problem mehr darstellt.
Wenn in 3D das Modell zum Einsatz kommt, können Sie den Shader einfach in einen Shader ändern, der die Brechung simuliert. Dabei wird nur die Oberfläche des Modells verwendet und die Farbe verworfen. Auch wenn das Modell irgendwie ausgetauscht wird, bleibt der Effekt bestehen.
Das Modifizieren von vorkompiliertem Shader ist so schwierig wie das Modifizieren von Spielcode, und ich denke, es ist eine Stufe schwieriger als das Nachschlagen von Texturen in Spieledateien.
quelle
Which means that players that change the texture or model or even the game code itself could render the cloak mechanic useless
. Und ich verstehe nicht, warum ich die Frage verpasst habewhether 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: Es wirbt mit Schimmer, B: Es ist schwieriger zu modifizieren als einfache Texturänderungen. WO eigentlich zu rendern ist eine andere Seite. Wenn die Position das einzige ist, was wir brauchen, um den Ripple-Effekt anzuwenden, sollten es die einzigen Daten sein, die an den Spieler gesendet werden.