So ermitteln Sie eine "Assists" -Statistik

7

Mein Spiel ist ein Top-Down-Multiplayer-Shooter, bei dem Sie einen Space Pod mit 4 verschiedenen Waffen steuern, die unterschiedlichen Schaden verursachen. Wir haben alle üblichen Statistiken wie Tötungen, Todesfälle und zugefügte / erlittene Schäden usw. Die einzige Statistik, mit der wir Probleme hatten, ist jedoch eine Assists-Statistik, hauptsächlich weil wir nicht bestimmen können, was eine Unterstützung darstellen soll.

In unserem Spiel spawnt der Spieler mit 224 Gesundheitspunkten (eine Zufallszahl, die ich kenne), und jede Waffe, mit der er getroffen wird, nimmt eine andere Menge an Gesundheit weg (irgendwo zwischen 11 und 224). Wenn der Spieler einen anderen Spieler tötet, erhält er die verlorene Gesundheit um 40 Punkte zurück.

Wenn ein Spieler nur noch 40 Gesundheitspunkte hat, beginnt seine Kapsel zu rauchen, um seine schlechte Gesundheit anzuzeigen.

Spieler beschweren sich ständig darüber, "vulgiert" zu sein, wo sie einem Spieler 223 Schaden zufügen, nur damit jemand anderes den letzten Schuss bekommt und die Tötung gutschreibt.

Wie würden Sie angesichts dieser Informationen feststellen, wann ein Spieler einen Assist erhält?

Kyle
quelle
Hat jemand Ihre Frage zu Ihrer Zufriedenheit beantwortet? Wenn ja, würde es Ihnen etwas ausmachen, eines abzuhaken?
MentatOfDune

Antworten:

7

Um zu verhindern, dass sich Spieler wie Geier verhalten, sollten Sie darüber nachdenken, dass die Person, die den größten Schaden verursacht, mit dem Kill belohnt wird. Obwohl dieser Ansatz in einer FFA-Umgebung höchstwahrscheinlich nicht funktionieren würde. Zugegeben, Sie sprechen von Vorlagen, also würde ich mir vorstellen, dass dies ein Anschein eines Teamspiels ist. Eine andere Sache, an die ich gerade gedacht habe, würde wahrscheinlich den Zusammenhalt des Teams erhöhen, ist, den individuellen Tötungszähler vollständig zu eliminieren und nur eine Gesamttötungszahl des Teams anzuzeigen. Plötzlich verschiebt sich das Ziel von dem, dass ich der letzte sein muss, der dies trifft, oder ich muss diesen Kill abschneiden, um ihn zu töten, und ich bin froh, dass dieser Typ mir hilft, den Kill für das Team zu sichern. Wenn Sie diesen Ansatz implementiert haben,

Bearbeiten, um Ihre Frage weiter zu beantworten:

Etwas, das Sie bei der Berechnung von Assists berücksichtigen sollten, sind andere Messgrößen als reiner Schaden. Nehmen wir zum Beispiel an, zwei Pods handeln mit Feuer. Wenn die beiden mit gleicher Geschwindigkeit feuern, hängt das Ergebnis davon ab, wer zuerst mit dem Schießen begonnen hat / wer am genauesten ist. Unter der Annahme, dass alle Faktoren gleich sind, fügen Sie der Mischung einen Heiler hinzu. Jetzt hat der Spieler, mit dem er geheilt wurde, die Nase vorn, außer wenn andere eingreifen. Meiner Meinung nach sollte der Spieler, der die Heilung durchführt, eine Unterstützung erhalten. Ohne ihn bekommt der Spieler den Kill nicht. Andere Ideen, die Sie berücksichtigen sollten, sind Debuffs, die auf den Feind angewendet werden, und andere Buffs, die auf den Killer angewendet werden.

MentatOfDune
quelle
Das ist eine interessante Idee. Das Spiel gibt es schon eine Weile, daher bin ich mir nicht sicher, ob eine solche Änderung für die Community reibungslos verlaufen würde oder nicht. Wir haben den Schaden bereits implementiert. Es wird neben dem Kill-Status angezeigt. Die meisten Leute schätzen es mehr als den Kill-Status, aber es gibt immer noch diejenigen, die ohne Grund töten.
Kyle
@MotiveKyle Ich würde das Wasser testen, wenn ich du wäre. Wenn Sie eine aktive Community haben, schießen Sie ihnen die Idee und sehen Sie, wie sie darauf reagieren. Wenn sie empfänglich sind, benötigen Sie eine sehr kleine Änderung an Ihrem Code, um ihn zu implementieren (eher zu entfernen). Ich wünschte, es gäbe eine Möglichkeit, die League of Legends dazu zu bringen, aber das Gold, das Sie pro Kill erhalten, ist ein Hindernis. Ich denke, dies würde die Teamkohärenz von zufälligen Teams in Teamspielen wie MOBAs und FPS-Teammodi drastisch verbessern. Verdammt, jetzt muss ich einen MOBA entwerfen!
MentatOfDune
IMHO ist es eine schlechte Idee, Leute zu würdigen, die den größten Schaden in einem Shooter-Spiel anrichten. Es wird offensichtlich, dass jemand, der den letzten Schuss abgefeuert hat, nicht getötet wurde. Es ist besser, wenn die Leute wütend aufeinander sind, weil sie "Kills gestohlen" haben, als wenn das Spiel "unfair" ist.
Dreta
1
In WoW kümmert sich niemand um die Anzahl der Tötungen auf Schlachtfeldern, weil sie überhaupt nicht erhöht ist, sie ist da, aber niemand kümmert sich jemals darum, entweder Sie bekommen die Flagge in WSG oder halten einen Schmied in AB (und anderen) oder Sie verlieren, denkt niemand über das Spiel darüber hinaus und ich denke, das ist etwas, von dem alle Moba-Spiele lernen könnten, niemand sagt jemals "Hör auf, Omfg zu sterben", die Leute denken mehr in Bezug auf "Wir brauchen Verteidigung gegen Holzmilch", WoW, ich bin positiv, nicht wahr? Ich werde nie als Strategiespiel bezeichnet, aber irgendwie verdrängt es mehr Strategie von den Leuten als DotA
dreta
2
Anstatt demjenigen, der den größten Schaden angerichtet hat, Kills direkt zuzuschreiben, machen Sie einfach einen Assist, der mehr "Punkte" wert ist, wenn mehr Schaden angerichtet wird. Die Tötung sollte offensichtlich an denjenigen gehen, der den Tötungsschuss hatte, denn das ist eine Tötung. Aber was auch immer basierend auf der Leistung des Spielers berechnet wird (Punkte, Geld usw.), kann gewichtet werden. Wenn also ein Spieler 225 von 250 HP entfernt und jemand anderes den Feind erledigt, endet die Assistenzgewichtung damit, dass der schwere Schaden mehr Punkte / Geld erhalten hat.
Tristan Crockett
4

Ich würde mit etwas Einfachem beginnen. Alle Spieler, die einem Spieler, der dann getötet wird, bevor dieser Spieler einen anderen tötet, eine Mindestschadenschwelle zufügen, erhalten eine Unterstützung. Erweitern Sie es dann von dort aus, wenn sich das Testen als problematisch herausstellt (dh wenn Sie vor dem anderen Spieler sterben, verlieren Sie die Unterstützung).

Tetrad
quelle
1
Eine weitere Einschränkung, auf die Sie bei Ihren Tests stoßen können, ist der Umgang mit Assists, wenn die Spieler wieder gesund werden. Denkanstöße :)
SpartanDonut
3

Dies ist etwas schwierig, da es möglich ist, dass jemand in einer langen Zeitspanne beschädigt wird und wenn jemand ihn endlich schlagen kann, wird er wirklich enttäuscht sein, wenn er nicht dafür ausgezeichnet wird.

Um dies zu lösen, würde ich so etwas versuchen;

  • Verfolgen Sie jedes Mal, wenn jemand getroffen wird, wer den Schaden angerichtet hat und wie viel.
  • Im Falle einer Tötung geben Sie Auszeichnungen basierend auf dem gesammelten Schaden.
  • Fügen Sie den verfolgten Werten eine Abklingzeit hinzu. Wenn der Schaden 60 Sekunden alt ist, zählt er überhaupt nicht.

Ob Sie jeden vergeben möchten, der noch gültigen Schaden verursacht hat, oder nur den Mörder und denjenigen, der den meisten Schaden (oder den zweithäufigsten) verursacht hat, liegt bei Ihnen.

Jari Komppa
quelle
3

Ich habe in Savage 2 und Heroes of Newerth den gleichen grundlegenden Ansatz gewählt. Es ist ein flexibles System, mit dem Sie die spezifischen Regeln einfach anpassen können.

Jede Entität verfügt über eine Sammlung von Datensätzen, in denen eine Angreifer-ID, ein Punktwert und ein Zeitstempel gespeichert sind. Zu diesem Zeitpunkt können Sie auch das Schadensprotokoll aller Datensätze kürzen, die zu alt sind, um als Unterstützung zu gelten, wenn Sie einen Schwellenwert dafür festlegen. Wenn nicht zu viele Datensätze generiert werden, können Sie auch einfach warten, bis die Entität stirbt. Wenn es stirbt, gehe das Schadensprotokoll durch und erhalte den aufgezeichneten Gesamtschaden sowie den Gesamtschaden, der zu jeder Angreifer-ID gehört. Jetzt können Sie entweder Assists mit einem festen Schwellenwert (dh 20 oder mehr Schadensgewährung als Assist) oder als Prozentsatz (20% oder mehr des gesamten jüngsten Schadens als Assist) gewähren. Dieses System berücksichtigt alle gesundheitlichen Veränderungen wie Heilung oder Gesundheitsverlust außer dem gutgeschriebenen Schaden.

Wenn Sie nicht die Granularität jedes einzelnen Angriffs benötigen, können Sie dies vereinfachen, indem Sie nur einen einzelnen Datensatz für jede Angriffs-ID speichern und deren Punktzahl bei jedem Update akkumulieren. Was Sie verlieren, ist die Möglichkeit, Guthaben zu ignorieren, das ihnen außerhalb des Schwellenwerts für die Unterstützungszeit gewährt wurde, wenn Sie eines haben möchten.

Sie können dieses System auch verwenden, um nicht beschädigte Ereignisse gutzuschreiben. Wenn beispielsweise eine Entität einen Buff auf eine andere anwenden kann, kann jedes Schadensereignis auch Punkte für den Puffer aufzeichnen, entweder mit einer Flatrate oder als Prozentsatz des Schadens der polierten Entität.

Jason Morales
quelle
2

Soweit ich das beurteilen kann, hat Tribes: Ascend den folgenden Algorithmus:

  • Die Person, die den letzten Treffer erzielt hat, erhält den Kill Credit.
  • Wenn jemand außer dieser Person den größten Schaden angerichtet hat, erhält er die Unterstützungsgutschrift.
ZorbaTHut
quelle
0

Einfach ist hier der Schlüssel.

Ich denke, Sie müssen die Unterstützung im Kern definieren. Wenn Sie an Basketball denken, bezieht sich Asset auf gleiche Teile des Spiels bis zum Endergebnis (IMHO). Das heißt, jemand hat den Ball, er gibt den Ball weiter und der Ball wird in den Reifen gelegt. Wenn das Spiel 2 Personen umfasst, erledigen beide Spieler 50% der Arbeit.

Wenn dies gesagt ist, bedeutet gleiche Anteile oder 50% in meinem Beispiel, dass diejenigen unterstützt werden, die näher am gleichen Anteil sind.

Wenn ein Spieler beispielsweise einem anderen Spieler 223 Gesundheitspunkte zufügt, sind das fast 99% der Arbeit. Obwohl der zweite Spieler tötet, erhält derjenige, der den größten Schaden angerichtet hat, die Gutschrift. Optionen für den Spieler, der den Todesstoß tatsächlich ausgeführt hat, sind die Unterstützung.

In einem anderen Beispiel sind das 44% der Arbeit, wenn ein Spieler einem anderen Spieler 100 Gesundheitspunkte zugefügt hat. Wenn der zweite Spieler tötet, wird demjenigen, der 44% getan hat, die Unterstützung gutgeschrieben.

Daher muss eine Linie in den Sand gezogen werden. Etwa 70% oder mehr Schaden werden dem Kill gutgeschrieben, selbst wenn sie nicht getötet haben. Auf diese Weise wird, wenn 5 Personen angreifen, die alle weniger als 70% zum Kill beitragen, dem letzten Angriff immer der Kill gutgeschrieben, und allen anderen Mitwirkenden wird der Assist gutgeschrieben.

Glen Swan
quelle