Jak mogę tworzyć mapy cieplne na podstawie danych zgłoszonych przez gracza?


17

Naprawdę dobry przykład tego, o czym mówię, zobacz, jak robi to deweloper Replica Island na podstawie śmierci graczy: http://www.youtube.com/watch?v=7-62tRHLcHk&feature=player_embedded#t= 37m

Jak mogę łatwo tworzyć mapy cieplne na podstawie danych, które przekazuję?

Halo 3 to kolejny dobry przykład użycia mapy termicznej w raportowaniu danych gry: http://www.bungie.net/Online/Heatmaps.aspx


Odpowiedzi:


9

Zakładając, że masz zestaw danych, który chcesz już narysować, i mapę, na której chcesz narysować, możesz zacząć od utworzenia mapy intensywności: siatki wartości zmiennoprzecinkowych, która jest proporcjonalna w granicach do ostatecznej mapy (jeśli mapy są wystarczająco małe, 1: 1 jest prawdopodobnie w porządku). Zainicjuj całą tablicę na 0.

Następnie przechodzisz przez każdy punkt, który chcesz narysować, odwzorowujesz go w przestrzeni współrzędnych mapy intensywności (co zwykle powinno być prostą operacją skalowania), a następnie wykreślasz „blip” na mapie intensywności wyśrodkowany w tej pozycji.

Podstawowy „blip” może po prostu polegać na zwiększeniu natężenia w punkcie blipu o pewien promień o niewielką wartość. Bardziej złożone implementacje mogą odczytać istniejącą intensywność i zastosować większy promień opadania, tym bardziej intensywny jest już punkt załamania. Możesz eksperymentować z ploterem Blip, aby znaleźć implementację, która Ci się podoba.

Po utworzeniu mapy intensywności można użyć intensywności w każdym punkcie jako efektu 1D w gradiencie kolorów, co pozwoli osiągnąć pożądany efekt wizualny (w ten sposób można uzyskać wielokolorowe wyniki, które są najczęściej spotykane). Powinieneś wykonać to wyszukiwanie kolorów, przenosząc mapę intensywności na ostateczny wykres (przeskalowanie, oczywiście, jeśli jest to konieczne, aby uwzględnić różnice wielkości na mapie intensywności w porównaniu z ostatecznym obrazem).

To powinno wystarczyć do podstawowej implementacji, ale jest miejsce na optymalizację. Na przykład mapa intensywności nie zostanie znormalizowana, więc może być konieczne jej ponowne znormalizowanie (prawdopodobnie powolne) lub śledzenie maksymalnej intensywności podczas kreślenia każdego blipu, aby można było przeprowadzić renormalizację indywidualnej intensywności w tym samym czasie wykonujesz ponowne kolorowanie. Ponadto możliwe jest, że rozkład twoich wartości jest taki, że przechowywanie całej przestrzeni współrzędnych mapy nie jest efektywne pod względem pamięci i możesz użyć alternatywnego rozwiązania, które nie wymaga wstępnego przydzielenia dużej części pamięci które będą w większości puste.

Jeśli masz już wystarczająco dużo danych, aby zapytać o minimalną i maksymalną intensywność, jakiej spodziewasz się w zestawie danych, możesz w ogóle uniknąć ponownej normalizacji - w zasadzie, jeśli masz mapę między (X, Y, Z) do liczby „ trafienia ”wykreślonych danych, które wystąpiły w tym momencie - jest to coś, co można wbudować w system, który zbiera dane, które pomogą zoptymalizować część mapowania.

Ponieważ mapa intensywności jest po prostu obrazem w skali szarości, jest to naprawdę łatwy sposób na stworzenie prototypu tego rodzaju systemu w celu użycia mapy bitowej dla mapy intensywności i wybranego interfejsu API rysowania (na przykład System.Drawingw języku C #) do wykreślenia częściowo przezroczystych kół stworzyć mapę intensywności. Nie wygląda najlepiej, ale jest funkcjonalny.


3

Echo Chamber to bezpłatne narzędzie do logowania i wizualizacji specjalnie zaprojektowane do gier.

Wizualizuj pliki danych oparte na SQL, które zawierają informacje generowane przez aplikację c ++. Informacje mogą być instrukcjami dziennika, wywołaniami funkcji, zrzutami ekranu lub listami parametrów.

Zobacz wskaźniki gier 2D i 3D, takie jak pozycje śmierci, która broń jest najczęściej używana, oraz użycie pamięci w różnych częściach poziomu.

System rejestrowania ma interfejs C ++ (który jest podobny do printf (), który wysyła dane do bazy danych SQL, opcjonalnie przez sieć), ale Echo Chamber powinna mieć możliwość wizualizacji dowolnej bazy danych SQL (lub utworzenie bazy danych powinno być proste format, jakiego oczekuje Echo Chamber). Nawigacja strony internetowej jest nieco tępa; odpowiednia instrukcja obsługi komory echa i powiązana funkcja logowania Raknet .

Niestety w akcji nie ma zrzutu ekranu map cieplnych, ale Komora Echo zdecydowanie obsługuje mapy cieplne:

wprowadź opis zdjęcia tutaj


2

Na przykład uzyskaj współrzędne wyznaczonego wydarzenia w grze. Na przykład, gdy gracz umiera, dostajesz współrzędne w scenariuszu, w którym umarł gracz.

Więc kiedy będziesz mieć potrzebne wartości w swojej bazie danych, wyliczyć każdą współrzędną, ile razy pojawia się ona na liście / bazie danych. Będziesz mieć listę coś takiego:

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

czy jakie są twoje wartości. Częstotliwość zostanie sparowana ze współrzędną jak para klucz-> wartość. Następnie można skwantyfikować skalę kluczową do koloru. Na przykład klucz 0 jest czarny, a maksymalny klucz, który masz na liście klucz-wartość, jest czerwony, a wszystko między nim jest gradientem między czernią, środkowym punktem żółtym i maksymalnym punktem czerwonym. Obliczyć każdy wynik według koloru i masz go.


1
W przypadku gry 3D, a nawet bez integralnych pozycji, można ją dodatkowo rozszerzyć, renderując gradienty okręgu lub kuli o pewnym promieniu.
dash-tom-bang

2

Nie jestem pewien, czy szukasz jakiejś aplikacji lub algorytmu dla tego. Miałem przyjemność tworzyć niestandardowe oprogramowanie do wizualizacji map cieplnych i jest to świetna zabawa.

Szybkie wyszukiwanie w Google ujawniło API HeatMap, które może być odpowiednim rozwiązaniem, jeśli nie chcesz tworzyć własnych.

Może jeśli dokładnie wyjaśnisz, czego szukasz (pod względem aplikacji lub programowania), możemy Ci pomóc lepiej?


0

Coś innego, co możesz zrobić, to po prostu wyprowadzić odpowiednie dane do pliku CSV lub coś, a następnie zaimportować je za pomocą oprogramowania statystycznego (takiego jak Microsoft Excel, LibreOffice Calc, R lub GNUPlot) i wyrzucić go z wykresu. Jeśli znasz trochę skryptów powłoki (lub Batch, jeśli używasz systemu Windows), prawdopodobnie możesz zautomatyzować całą sprawę.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.