Come posso produrre mappe di calore basate sui dati riportati dal giocatore?


17

Per un ottimo esempio di ciò di cui sto parlando, guarda come lo sviluppatore di Replica Island lo fa in base alla morte dei giocatori: http://www.youtube.com/watch?v=7-62tRHLcHk&feature=player_embedded#t= 37m

Come posso produrre facilmente mappe di calore basate sui dati che trasmetto?

Halo 3 è un altro buon esempio dell'utilizzo della mappa di calore nella segnalazione dei dati di gioco: http://www.bungie.net/Online/Heatmaps.aspx


Risposte:


9

Supponendo di avere già il set di dati che si desidera tracciare e la mappa in cui si desidera tracciarlo, è possibile iniziare creando una mappa di intensità: una griglia di valori in virgola mobile proporzionale ai limiti della mappa finale (se le mappe sono abbastanza piccoli, 1: 1 probabilmente va bene). Inizializza l'intero array su 0.

Quindi si cammina attraverso ogni punto che si desidera tracciare, mapparlo nello spazio di coordinate della mappa di intensità (che dovrebbe essere un'operazione di scala semplice, normalmente), quindi tracciare un "blip" nella mappa di intensità centrata in quella posizione.

Un "blip" di base potrebbe consistere semplicemente nell'aumentare l'intensità nel punto di blip più un certo raggio di una piccola quantità. Implementazioni più complesse potrebbero leggere l'intensità esistente e utilizzare un raggio di caduta maggiore quanto più intenso è già il blip point. Puoi sperimentare con il plotter blip per trovare un'implementazione che ti piace l'aspetto.

Una volta che hai una mappa dell'intensità puoi usare l'intensità in ogni singolo punto come una ricerca 1D in una sfumatura di colore, che ti permetterà di ottenere l'impatto visivo desiderato (ecco come puoi ottenere i risultati multicolori che sono più comunemente visto). Dovresti fare questa ricerca del colore mentre trasferisci la mappa dell'intensità sulla tua trama finale (riscalando, ovviamente, se necessario per tenere conto delle differenze di dimensioni nella mappa dell'intensità rispetto all'immagine finale).

Questo dovrebbe essere sufficiente per un'implementazione di base, ma c'è spazio per l'ottimizzazione. Ad esempio, la mappa dell'intensità non sarà normalizzata, quindi potrebbe essere necessario rinormalizzarla (probabilmente lenta) o tenere traccia dell'intensità massima mentre tracciate ogni blip, in modo da poter eseguire contemporaneamente la rinormalizzazione di un'intensità individuale stai facendo la ricolorazione. Inoltre, è possibile che la distribuzione dei valori sia tale che non sia efficiente in termini di memoria archiviare l'intero spazio delle coordinate della mappa e potrebbe essere utile utilizzare una soluzione alternativa che non comporta il preallocazione di un grosso blocco di memoria sarà per lo più vuoto.

Se hai abbastanza dati in anticipo per interrogare le intensità minime e massime che ti aspetti di vedere nel set di dati puoi evitare di dover rinormalizzare affatto - fondamentalmente se hai una mappa tra (X, Y, Z) al numero di " hit "dei dati tracciati che si sono verificati a quel punto - è qualcosa che puoi incorporare nel sistema che raccoglie i dati che ti aiuteranno a ottimizzare la porzione di mappatura.

Poiché la mappa dell'intensità è solo, essenzialmente, un'immagine in scala di grigi un modo davvero semplice per prototipare questo tipo di sistema per utilizzare una bitmap per la mappa dell'intensità e l'API di disegno preferita (ad esempio, System.Drawingin C #) per tracciare cerchi parzialmente trasparenti per produce una mappa di intensità. Non sembra il migliore, ma è funzionale.


3

Echo Chamber è uno strumento gratuito di registrazione e visualizzazione creato appositamente per i giochi.

Visualizza i file di dati basati su SQL che contengono informazioni generate da un'applicazione c ++. Le informazioni possono essere istruzioni di registro, chiamate di funzioni, schermate o elenchi di parametri.

Visualizza metriche di gioco 2D e 3D come posizioni di morte, quali armi vengono utilizzate più spesso e utilizzo della memoria in diverse parti del livello.

Il sistema di registrazione ha un'interfaccia C ++ (che è come un printf () che emette su un database SQL, opzionalmente attraverso una rete), ma Echo Chamber dovrebbe essere in grado di visualizzare qualsiasi database SQL (o dovrebbe essere semplice creare un database in il formato Echo Chamber si aspetta). La navigazione del sito web è un po 'ottusa; relativo manuale Echo Chamber e relativa funzione di registrazione Raknet .

Sfortunatamente non c'è nessuna schermata delle mappe di calore in azione, ma Echo Chamber supporta sicuramente le mappe di calore:

inserisci qui la descrizione dell'immagine


2

Ad esempio, ottieni le coordinate su un evento designato nel gioco. Ad esempio, quando un giocatore muore, ottieni coordinate nel tuo scenario dove il giocatore è morto.

Quindi, una volta che hai valori che ti servono nel tuo database, enumera ogni coordinata quante volte appare nel tuo elenco / database. Avrai un elenco simile a:

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

o qualunque siano i tuoi valori. Avrai una frequenza abbinata a coordinate come una coppia chiave-> valore. È quindi possibile quantificare la scala della chiave in un colore. Ad esempio, la chiave di 0 è nera e la chiave massima presente nell'elenco dei valori-chiave è rossa e tutto ciò che c'è tra una sfumatura tra nero, punto medio giallo e punto massimo rosso. Quantificare ogni risultato in un colore e il gioco è fatto.


1
Per un gioco 3D, o anche uno senza posizioni integrali, questo può essere ulteriormente espanso rendendo gradienti di cerchio o sfera di un certo raggio.
dash-tom-bang,

2

Non sono sicuro se stai cercando una sorta di app o un algoritmo per questo. In realtà ho avuto il piacere di creare un software di visualizzazione personalizzato delle mappe di calore ed è molto divertente.

Una rapida ricerca su Google ha rivelato l' API HeatMap che potrebbe essere una soluzione appropriata se non vuoi creare il tuo.

Forse se spieghi esattamente cosa stai cercando (dal punto di vista applicativo o programmatico) possiamo aiutarti meglio?


0

Qualcos'altro che potresti fare è semplicemente generare i dati rilevanti in un file CSV o qualcosa del genere, quindi importarli con un software statistico (come Microsoft Excel, LibreOffice Calc, R o GNUPlot) e far sputare un grafico. Se conosci un po 'di script di shell (o Batch se usi Windows), probabilmente potresti automatizzare il tutto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.