Comment puis-je produire des cartes thermiques basées sur les données rapportées par les joueurs?


17

Pour un très bon exemple de ce dont je parle, voyez comment le développeur de Replica Island le fait en fonction des décès de joueurs: http://www.youtube.com/watch?v=7-62tRHLcHk&feature=player_embedded#t= 37m

Comment puis-je facilement produire des cartes thermiques à partir des données que je transmets?

Halo 3 est un autre bon exemple d'utilisation de la carte thermique dans les rapports de données de jeu: http://www.bungie.net/Online/Heatmaps.aspx


Réponses:


9

En supposant que vous disposez déjà de l'ensemble de données que vous souhaitez tracer et de la carte sur laquelle vous souhaitez tracer, vous pouvez commencer par créer une carte d'intensité: une grille de valeurs à virgule flottante proportionnelle aux limites de la carte finale (si les cartes sont assez petits, 1: 1 est probablement très bien). Initialisez le tableau entier à 0.

Ensuite, vous parcourez chaque point que vous souhaitez tracer, le mappez dans l'espace de coordonnées de la carte d'intensité (qui devrait normalement être une opération d'échelle simple), puis tracez un "blip" dans la carte d'intensité centrée à cette position.

Un "blip" de base pourrait simplement consister à augmenter légèrement l'intensité au point de blip plus un certain rayon. Des implémentations plus complexes pourraient lire l'intensité existante et utiliser un rayon de chute plus grand, plus le point de coupure est intense. Vous pouvez expérimenter avec le traceur de blip pour trouver une implémentation qui vous ressemble.

Une fois que vous avez une carte d'intensité, vous pouvez utiliser l'intensité à chaque point individuel comme une recherche 1D dans un dégradé de couleurs, ce qui vous permettra d'obtenir l'impact visuel souhaité (c'est ainsi que vous pouvez obtenir les résultats multicolores qui sont le plus souvent vu). Vous devez effectuer cette recherche de couleurs lorsque vous transférez la carte d'intensité vers votre tracé final (redimensionnement, évidemment, si nécessaire pour tenir compte des différences de taille dans la carte d'intensité par rapport à l'image finale).

Cela devrait suffire pour une implémentation de base, mais il y a place pour l'optimisation. Par exemple, la carte d'intensité ne sera pas normalisée, vous devrez donc peut-être la renormaliser (probablement lentement) ou garder une trace de l'intensité maximale lorsque vous tracez chaque blip, afin de pouvoir effectuer la renormalisation d'une intensité individuelle en même temps vous faites la recoloration. En outre, il est possible que la distribution de vos valeurs soit telle qu'il ne soit pas efficace en mémoire de stocker l'intégralité de l'espace de coordonnées de la carte, et vous souhaiterez peut-être utiliser une solution alternative qui n'implique pas de préallouer une grande partie de la mémoire ce sera presque vide.

Si vous avez suffisamment de données à l'avance pour interroger les intensités minimale et maximale que vous prévoyez de voir dans l'ensemble de données, vous pouvez éviter d'avoir à renormaliser du tout - en gros, si vous avez une carte entre (X, Y, Z) et le nombre de " hits "des données tracées qui se sont produites à ce moment - c'est quelque chose que vous pouvez intégrer dans le système qui recueille les données qui vous aidera à optimiser la partie de mappage.

Étant donné que la carte d'intensité est juste, essentiellement, une image en niveaux de gris, un moyen très simple de prototyper ce type de système pour utiliser une bitmap pour la carte d'intensité et votre API de dessin de choix (par exemple, System.Drawingen C #) pour tracer des cercles partiellement transparents à produire une carte d'intensité. Il n'a pas l'air le meilleur, mais il est fonctionnel.


3

Echo Chamber est un outil gratuit de journalisation et de visualisation spécialement conçu pour les jeux.

Visualisez les fichiers de données basés sur SQL qui contiennent des informations générées par une application c ++. Les informations peuvent être des instructions de journal, des appels de fonction, des captures d'écran ou des listes de paramètres.

Affichez les métriques de jeu 2D et 3D telles que les positions de mort, les armes les plus utilisées et l'utilisation de la mémoire sur différentes parties du niveau.

Le système de journalisation a une interface C ++ (qui est comme un printf () qui génère une sortie vers une base de données SQL, éventuellement sur un réseau), mais Echo Chamber devrait être capable de visualiser n'importe quelle base de données SQL (ou il devrait être simple de créer une base de données dans le format attendu par Echo Chamber). La navigation sur le site Web est un peu obtuse; manuel Echo Chamber approprié et fonction de journalisation Raknet associée .

Malheureusement, il n'y a pas de capture d'écran des cartes de chaleur en action, mais Echo Chamber prend définitivement en charge les cartes de chaleur:

entrez la description de l'image ici


2

Par exemple, obtenez les coordonnées d'un événement désigné dans le jeu. Par exemple, lorsque le joueur décède, vous obtenez les coordonnées dans votre scénario où le joueur est décédé.

Donc, une fois que vous avez les valeurs dont vous avez besoin dans votre base de données, énumérez chaque coordonnée combien de fois elle apparaît dans votre liste / base de données. Vous aurez une liste quelque chose comme:

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

ou quelles que soient vos valeurs. Vous aurez une fréquence associée à des coordonnées comme une paire clé-> valeur. Vous pouvez ensuite quantifier l'échelle clé à une couleur. Par exemple, la clé de 0 est noire et la clé maximale que vous avez dans votre liste de valeurs-clés est rouge, et tout ce qui se trouve entre est un gradient entre le noir, le point médian jaune et le point max rouge. Quantifiez chaque résultat à une couleur et vous l'avez.


1
Pour un jeu 3D, ou même sans positions intégrales, cela peut être étendu en rendant des gradients de cercle ou de sphère d'un certain rayon.
dash-tom-bang

2

Je ne sais pas si vous cherchez une sorte d'application ou un algorithme pour celle-ci. En fait, j'ai eu le plaisir de créer un logiciel de visualisation de cartes thermiques personnalisé et c'est très amusant.

Une recherche rapide sur Google a révélé l' API HeatMap qui pourrait être une solution appropriée si vous ne souhaitez pas lancer la vôtre.

Peut-être que si vous expliquez exactement ce que vous recherchez (en termes d'application ou de programmation), nous pouvons mieux vous aider?


0

Une autre chose que vous pourriez faire est simplement de sortir les données pertinentes dans un fichier CSV ou quelque chose, puis de les importer avec un logiciel statistique (comme Microsoft Excel, LibreOffice Calc, R ou GNUPlot) et de le faire cracher un graphique. Si vous connaissez un peu les scripts shell (ou Batch si vous utilisez Windows), vous pourriez probablement automatiser le tout.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.