Wir hatten dieses Problem mit einigen Online-CCGs, an denen ich gearbeitet habe. Beste Lösung, die ich gesehen habe:
1) Spieler MÜSSEN sich mit dem Server verbinden, nicht direkt miteinander, und Sie sollten NIEMALS IP-Adressen von Gegnern in den Daten, die Sie an die Spieler streamen, weitergeben. Dies verhindert Denial-of-Service-Angriffe, bei denen ein Spieler seinen Gegner zum Sieg zwingt.
2) Verbindung unterbrochen = Sie verlieren, der Gegner gewinnt. Wir müssen davon ausgehen, dass ein Sturz ein Sturz war, um einen gewissen Verlust zu vermeiden.
3) Disconnects versuchen für einige Zeit, die Verbindung wiederherzustellen, damit Sie durch einen leichten Netz-Schluckauf nicht unverschuldet zum Verlieren gezwungen werden. Im Idealfall ist die Zeit lang genug, um es jemandem zu ermöglichen, die Verbindung wiederherzustellen, wenn er versehentlich gegen das Kabel getreten hat, aber kurz genug, damit der Gegner nicht frustriert wird und beim Warten einschlafen kann. Ich denke, wir fanden ungefähr 45 bis 60 Sekunden richtig.
4) Erlaube den Spielern, ihre Gegner zu melden. Dies ist ein notwendiger Haken, um zu verhindern, dass jemand einen nervigen Weg um Ihre Politik findet. Vielleicht ist er so beschimpft, dass der Gegner einfach abbricht, um herauszukommen, oder er trennt sich ständig und stellt die Verbindung wieder her, um die Länge des Spiels zu verlängern, oder er blockiert, um einen Verlust zu vermeiden, oder was auch immer. Sie können ALLES schlechte Benehmen nicht aufhalten, aber Sie können einen Spielmechanismus einbinden, um es zu melden, und dann den Rest Ihrer Kundendienstabteilung überlassen.
Ich musste dieses Problem einmal in einem Online-Rennspiel angehen, in dem Spieler, die verloren hatten, häufig ihre Konsolen ausschalteten, um zu vermeiden, dass der Verlust in ihren Aufzeichnungen auftauchte. Dies gilt jedoch sehr gut für jede PvP-Situation.
Meine Lösung sah so aus:
Wenn zu Beginn des Spiels alle Spieler beigetreten sind und das Spiel beginnen soll, berechnen Sie das Ergebnis, wenn unser Spieler das Spiel verliert. In unserem Rennspiel bedeutet "verloren" "auf den letzten Platz gekommen" und das übliche Ergebnis wäre "minus N Punkte vom Spielerrang".
Speichern Sie das Ergebnis an einem sicheren Ort (Spielstand, Bestenliste, Online-Datenbereich usw.).
Speichern Sie zusammen mit dem Ergebnis ein "GameStarted" -Flag. Dies bedeutet nur, dass das Spiel begonnen hat. Wir werden es später brauchen.
Wenn das Spiel beendet ist, berechne das tatsächliche Ergebnis und wende es auf die Punktzahl / Statistik des Spielers an. Deaktivieren Sie das Flag "GameStarted". Dies ist der normale Vorgang zum Beenden des Spiels.
Wenn der Spieler jedoch die Verbindung trennt, das Kabel abzieht oder das Gerät ausschaltet, kehrt er schließlich zum Spielemenü zurück. Im Menücode prüfen wir, ob das Flag "GameStarted" vorhanden ist. Wenn es gesetzt ist, sind wir sicher, dass wir eine Unterbrechung im Spiel von früher erkannt haben. Wir können dann das gespeicherte Ergebnis auf die Punktzahl / Statistik des Spielers anwenden. Es ist dasselbe, als hätte der Spieler das Spiel verloren. Es ist auch eine gute Idee, einen Alarm auszulösen, der den Spieler über das Geschehen informiert. Sobald er sieht, dass es Konsequenzen für das Trennen der Verbindung während des Spiels gibt, wird sich das Verhalten langsam ändern.
quelle
Ich denke, der einzige Weg, dies zu erreichen, ist eine Frage der Struktur Ihres Spiels. Es gibt zwei Möglichkeiten, Betrug weniger wünschenswert zu machen: Bestrafung oder Belohnung. Wenn Sie also keine negative Bestrafung wollen, überlegen Sie, wie Sie den Spieler belohnen können, der nicht gefallen ist.
Anstatt dass die Belohnung aus dem PvP die Beute des Körpers des Eroberers ist (was das Fallenlassen zu einer sehr schlechten Sache macht), wird durch das Gewinnen eine Belohnung wie Exp., Gold oder etwas ganz anderes verliehen (Punkte? Rangliste?). Wenn einer der Spieler abgesetzt wird, erhält der verbleibende Spieler die Belohnung und der Spieler, der abgesetzt wurde, erhält nichts, verliert aber nichts. Es sei denn, es handelt sich um ein Ranglistensystem. In diesem Fall kann der Spieler, der das Spiel verlässt, einige Ranglistenpunkte verlieren.
quelle
Lineage II macht das so:
Persönlich würde ich es ähnlich machen und den Spielern nur erlauben, die Aktionen, die ihr Charakter bei einer Trennung ausführt, vorab zu definieren (bleiben und kämpfen, zur nächsten sicheren Zone laufen, Aggro vermeiden, eine normale Fluchtrolle verwenden, eine gesegnete Rolle von verwenden) entkomme, ...) und lasse die Charaktere in der Spielwelt bleiben, auch wenn der Spieler nicht eingeloggt ist.
quelle
Derjenige, der die Verbindung getrennt hat, wird sterben, sobald er genug erstochen wurde, und der andere wird für die Tötung gutgeschrieben. Alles, was milder ist, wird ausgenutzt.
In der Regel dauert es 1 bis 5 Minuten, bis Ihr Körper die Welt verlässt.
quelle
Es gibt keine Möglichkeit zu bestimmen, warum die Verbindung getrennt wurde (ist der Strom ausgefallen? Habe ich meine Maschine wütend gegen eine Wand geworfen?), Sodass Sie nur davon ausgehen können, dass der Benutzer versucht (oder versuchen würde), sie zu betrügen und anfällig zu machen für X Minuten.
quelle
So geht EVE Online vor:
Das Schiff beginnt 15 Sekunden nach dem Trennen mit dem Warpen. Wenn es Warp-Scrambling ist, wird sich das Schiff nicht wegwinden. (Das Schiff deines Charakters beginnt nach 15 Sekunden zu "rennen", es sei denn, es wird von einem anderen Spieler "gefangen".)
Der PvP-Timer (Zeit bis zum "Weglaufen" des Spielers im PvP-Kampf) ist auf 3 Minuten eingestellt. (Dies dient zum Zählen einer Reihe anderer Timer).
Der NPC-Timer bleibt bei 1 Minute, aber das Schiff verzieht sich nach 15 Sekunden, es sei denn, der NPC verschlüsselt den Warp.
Wenn ein Schiff vom Spieler als Ziel gesperrt ist, sollte es auf den PvP-Timer umschalten (um dem mit dem 1-Minuten-Timer entgegenzuwirken, wenn die Verbindung unter Umständen unterbrochen wird, bei denen es nicht als Ziel ausgewählt werden kann, bis der Timer eingestellt ist).
quelle
Wenn Sie die üblichen Muster der Spieler im Kampf modellieren können, können Sie sie in einen KI-Modus versetzen, bis sie sich wieder verbinden oder der Kampf beendet ist, je nachdem, was zuerst eintritt. Aber gib ihnen keine Belohnungen (Belichtung, Gegenstände usw.) für den Kampf, es sei denn, sie kehren innerhalb von X Sekunden zurück.
quelle
Ich würde eine Art Hysterese implementieren. Sie können die Karotte und die Peitsche verwenden. Die Auswahl der zu verwendenden Elemente kann jedoch auf der Grundlage der Erfolgsbilanz erfolgen (Sie können auch eine Analyse der Verbindung und der aktuellen "Win-Fähigkeit" durchführen und diese verwenden.). So würden Sie es hoffentlich persönlich machen. Einfaches Modell:
Sie können es ja missbrauchen. Dies könnte jedoch mehr Aufwand bedeuten, als nur in die Kugel zu beißen. (Wenn es 2 DCs nimmt schlecht zum Beispiel könnte man technisch loswerden Hälfte der Verluste bekommen. Aber es tut mildert einige Missbräuche und im Fall von weniger als geschickten Spielern all Missbrauch).
Wenn dies verwendet wird, summieren sich die Anzeigetafeln nicht zu 100%. Da kann man zwar gut gleich und keinen Verlust verzeichnen. Aber der andere gute Spieler kann einen Sieg verbuchen. Wenn die Summe nicht 100% ergibt, können 2 Spieler zusammenarbeiten und den DC-Spieler ausschalten, um Gewinne zu stapeln.
Also nicht narrensicher, aber die Bayes-Analyse von Gamestate + -Verbindung könnte wahrscheinlich Funkiness erkennen und dieses Schema kugelsicher machen. (Sie können die Bayes'sche Analyse besiegen, aber die Menschen sind nicht gut darin, und die Mathematik ist für die meisten Menschen unerreichbar, ganz zu schweigen von der Zeitinvestition, um einen Kampf "vorzubereiten", um damit fertig zu werden, dass DC in Ordnung ist.)
quelle