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?
quelle
Antworten:
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.
quelle
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).
quelle
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;
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.
quelle
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.
quelle
Soweit ich das beurteilen kann, hat Tribes: Ascend den folgenden Algorithmus:
quelle
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.
quelle