Wie kann ich Heatmaps erstellen, die auf von Spielern gemeldeten Daten basieren?


17

Ein wirklich gutes Beispiel dafür, wovon ich spreche, finden Sie unter http://www.youtube.com/watch?v=7-62tRHLcHk&feature=player_embedded#t= 37m

Wie kann ich auf einfache Weise Heatmaps erstellen, die auf den von mir übergebenen Daten basieren?

Halo 3 ist ein weiteres gutes Beispiel für die Verwendung von Heatmaps bei der Berichterstattung über Spieldaten: http://www.bungie.net/Online/Heatmaps.aspx


Antworten:


9

Angenommen, Sie haben bereits den Datensatz, den Sie zeichnen möchten, und die Karte, auf die Sie plotten möchten, können Sie mit der Erstellung einer Intensitätskarte beginnen: einem Raster von Gleitkommawerten, das proportional zur endgültigen Karte ist (sofern die Karten vorhanden sind) sind klein genug, 1: 1 ist wohl ok). Initialisieren Sie das gesamte Array auf 0.

Dann gehen Sie durch jeden Punkt, den Sie zeichnen möchten, ordnen ihn dem Koordinatenraum der Intensitätskarte zu (normalerweise sollte dies eine einfache Skalierungsoperation sein) und zeichnen dann einen "Fleck" in der Intensitätskarte, die an dieser Position zentriert ist.

Ein grundlegender "Ausblendeffekt" kann darin bestehen, die Intensität am Ausblendpunkt plus einen gewissen Radius um einen kleinen Betrag zu erhöhen. Komplexere Implementierungen können die vorhandene Intensität auslesen und einen größeren Abnahmeradius verwenden, je intensiver der Blip-Punkt bereits ist. Sie können mit dem Blip-Plotter experimentieren, um eine Implementierung zu finden, die Ihnen gefällt.

Sobald Sie eine Intensitätskarte haben, können Sie die Intensität an jedem einzelnen Punkt als 1D-Nachschlag in einem Farbverlauf verwenden, um die gewünschte visuelle Wirkung zu erzielen am häufigsten gesehen). Sie sollten diese Farbsuche durchführen, während Sie die Intensitätskarte auf Ihr endgültiges Diagramm übertragen (natürlich nach Bedarf neu skalieren, um Größenunterschiede in der Intensitätskarte gegenüber dem endgültigen Bild zu berücksichtigen).

Dies sollte für eine grundlegende Implementierung ausreichen, es besteht jedoch Optimierungsbedarf. Beispielsweise wird die Intensitätskarte nicht normalisiert, sodass Sie sie möglicherweise neu normalisieren müssen (wahrscheinlich langsam) oder die maximale Intensität verfolgen müssen, während Sie jeden Blip zeichnen, damit Sie die Renormalisierung einer einzelnen Intensität gleichzeitig durchführen können Sie machen die Umfärbung. Darüber hinaus ist es möglich, dass die Verteilung Ihrer Werte so ist, dass das Speichern des gesamten Koordinatenraums der Karte nicht speichereffizient ist, und Sie möchten möglicherweise eine alternative Lösung verwenden, bei der kein großer Teil des Speichers vorab zugewiesen wird das wird meist leer sein.

Wenn Sie im Voraus über genügend Daten verfügen, um die minimalen und maximalen Intensitäten abzufragen, die Sie im Datensatz erwarten, können Sie eine Renormierung vermeiden - im Grunde genommen, wenn Sie eine Zuordnung zwischen (X, Y, Z) und der Zahl " Treffer "der zu diesem Zeitpunkt aufgezeichneten Daten - das können Sie in das System integrieren, das die Daten sammelt , um den Mapping-Teil zu optimieren.

Da es sich bei der Intensitätskarte im Wesentlichen nur um ein Graustufenbild handelt, können Sie diese Art von System auf einfache Weise als Prototyp verwenden, um eine Bitmap für die Intensitätskarte und die Zeichnungs-API Ihrer Wahl (z. B. System.Drawingin C #) zum Plotten von teilweise transparenten Kreisen zu verwenden eine Intensitätskarte erstellen. Es sieht nicht gut aus, ist aber funktional.


3

Echo Chamber ist ein kostenloses Protokollierungs- und Visualisierungstool, das speziell für Spiele entwickelt wurde.

Visualisieren Sie SQL-basierte Datendateien, die Informationen enthalten, die von einer C ++ - Anwendung generiert wurden. Informationen können Protokollanweisungen, Funktionsaufrufe, Screenshots oder Parameterlisten sein.

Zeigen Sie 2D- und 3D-Spielmetriken an, z. B. die Todespositionen, die Waffen, die am häufigsten verwendet werden, und die Speichernutzung für verschiedene Teile des Levels.

Das Protokollierungssystem verfügt über eine C ++ - Schnittstelle (ähnlich einer printf () - Schnittstelle, die optional über ein Netzwerk in eine SQL-Datenbank ausgegeben wird), aber Echo Chamber sollte in der Lage sein, jede SQL-Datenbank zu visualisieren (oder es sollte einfach sein, eine Datenbank in zu erstellen) das Format, das Echo Chamber erwartet). Die Navigation auf der Website ist etwas stumpf. relevantes Echo Chamber Handbuch und zugehörige Raknet Logging Funktion .

Leider gibt es keinen Screenshot der Heatmaps in Aktion, aber Echo Chamber unterstützt definitiv Heatmaps:

Bildbeschreibung hier eingeben


2

Beispielsweise erhalten Sie Koordinaten für ein bestimmtes Ereignis im Spiel. Wenn beispielsweise ein Spieler stirbt, erhalten Sie in Ihrem Szenenbild die Koordinaten, in denen der Spieler gestorben ist.

Wenn Sie also Werte in Ihrer Datenbank haben, die Sie benötigen, listen Sie jede Koordinate auf, wie oft sie in Ihrer Liste / Datenbank erscheint. Sie haben eine Liste wie:

  • 15: 1,5
  • 10: 6.15
  • 3: 27,58

oder was auch immer Ihre Werte sind. Sie haben eine Frequenz, die wie ein Schlüssel-> Wertepaar mit einer Koordinate gepaart ist. Sie können dann die Schlüsselskala zu einer Farbe quantifizieren. Zum Beispiel ist der Schlüssel 0 schwarz und der maximale Schlüssel, den Sie in Ihrer Schlüsselwertliste haben, ist rot, und alles dazwischen ist ein Farbverlauf zwischen Schwarz, Mittelpunkt Gelb und Maximalpunkt Rot. Quantifizieren Sie jedes Ergebnis zu einer Farbe und schon haben Sie es.


1
Für ein 3D-Spiel oder sogar ein Spiel ohne integrale Positionen kann dies weiter erweitert werden, indem Kreis- oder Kugelverläufe mit einem gewissen Radius gerendert werden.
Dash-Tom-Bang

2

Ich bin mir nicht sicher, ob Sie nach einer App oder einem Algorithmus für diese suchen. Ich hatte tatsächlich das Vergnügen, eine benutzerdefinierte Software für die Heatmap-Visualisierung zu entwickeln, und es macht viel Spaß.

Eine schnelle Google-Suche ergab, dass die HeatMap-API eine geeignete Lösung ist, wenn Sie keine eigene rollen möchten.

Vielleicht können wir Ihnen besser helfen, wenn Sie genau erklären, wonach Sie suchen (anwendungs- oder programmtechnisch)?


0

Sie können die relevanten Daten auch in eine CSV-Datei oder Ähnliches ausgeben und sie dann mit einer Statistiksoftware (wie Microsoft Excel, LibreOffice Calc, R oder GNUPlot) importieren und eine Grafik ausspucken lassen. Wenn Sie ein wenig mit Shell-Scripting (oder Batch-Scripting, wenn Sie Windows verwenden) vertraut sind, können Sie wahrscheinlich das Ganze automatisieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.