Як я можу створювати теплові карти на основі даних, повідомлених про програвач?


17

По-справжньому хороший приклад того, про що я говорю, подивіться, як розробник Replica Island робить це на основі смерті гравця: http://www.youtube.com/watch?v=7-62tRHLcHk&feature=player_embedded#t= 37м

Як я можу легко створювати теплові карти на основі даних, які я передаю?

Halo 3 - ще один хороший приклад використання теплової карти у звіті про дані гри: http://www.bungie.net/Online/Heatmaps.aspx


Відповіді:


9

Якщо припустити, що у вас є вже встановлений набір даних, який ви хочете побудувати, і карту, на яку ви хочете побудувати його, ви можете почати, створивши карту інтенсивності: сітку значень з плаваючою комою, пропорційну в межах до кінцевої карти (якщо карти досить малі, 1: 1, мабуть, добре). Ініціалізуйте весь масив до 0.

Потім ви проходите через кожну точку, яку ви хочете побудувати, нанесіть її на координатний простір карти інтенсивності (що, як правило, має бути простою операцією зі шкалою), а потім побудуйте "блип" у карті інтенсивності, зосередженій у цьому положенні.

Основний "блип" може просто полягати в збільшенні інтенсивності в точці ковзання плюс деякому радіусі на невелику кількість. Більш складні реалізації можуть зчитувати наявну інтенсивність, і використовувати більший радіус випадання, тим інтенсивніше вже точка зсуву. Ви можете поекспериментувати з графічним графіком, щоб знайти реалізацію, яка вам подобається.

Коли ви маєте карту інтенсивності, ви можете використовувати інтенсивність у кожній окремій точці як 1D пошук у кольоровий градієнт, який дозволить вам досягти бажаного візуального впливу (саме так ви можете отримати різнобарвні результати, які є найчастіше спостерігається). Ви повинні зробити цей пошук кольорів під час перенесення карти інтенсивності на остаточний графік (очевидно, масштабування, як це необхідно для врахування різниці розмірів у карті інтенсивності порівняно з кінцевим зображенням).

Цього має бути достатньо для базової реалізації, але є можливість для оптимізації. Наприклад, карта інтенсивності не буде нормалізована, тому вам може знадобитися перенормувати її (можливо, повільно) або відслідковувати максимальну інтенсивність під час складання кожного пропуску, щоб ви могли одночасно виконати перенормування індивідуальної інтенсивності ви робите реколоризацію. Крім того, можливо, що розподіл ваших значень такий, що зберігати весь простір координат карти неефективно, і ви можете скористатися альтернативним рішенням, яке не передбачає попереднього розміщення великого куса пам'яті. що буде здебільшого порожнім.

Якщо заздалегідь у вас є достатня кількість даних для запиту мінімальної та максимальної інтенсивності, яку ви очікуєте побачити в наборі даних, ви можете уникнути необхідності взагалі перенорматизувати - в основному, якщо у вас є деяка карта між (X, Y, Z) на кількість " звернень "до намічених даних, які відбулися в цей момент, - це те, що ви можете вбудувати в систему, яка збирає дані, які допоможуть вам оптимізувати частину карти.

Оскільки карта інтенсивності - це, по суті, зображення сірого масштабу - це дуже простий спосіб прототипувати подібну систему, щоб використовувати растрову карту для інтенсивності карти та вашого вибору API вибору (наприклад, System.Drawingу C #) для побудови графіків частково прозорих кіл скласти карту інтенсивності. Це виглядає не найкраще, але його функціонал.


3

Echo Chamber - це безкоштовний інструмент для ведення журналів та візуалізації, спеціально створений для ігор.

Візуалізуйте файли даних на основі SQL, які містять інформацію, сформовану програмою c ++. Інформацією можуть бути заяви журналу, виклики функцій, скріншоти або списки параметрів.

Переглядайте 2D та 3D ігрові метрики, такі як позиції смерті, для яких зброя використовується найчастіше та використання пам'яті в різних частинах рівня.

Система ведення журналів має інтерфейс C ++ (який схожий на printf (), який видає базу даних SQL, необов'язково через мережу), але Echo Chamber повинен мати можливість візуалізувати будь-яку базу даних SQL (або створити базу даних у простому формат Echo Chamber очікує). Навігація на веб-сайті трохи тупа; відповідне посібник Echo Chamber і пов'язана з ним функція реєстрації Raknet .

На жаль, не існує знімків екрану теплових карт в дії, але Echo Chamber, безумовно, підтримує теплові карти:

введіть тут опис зображення


2

Наприклад, отримайте координати для визначеної події в грі. Наприклад, коли гравець помирає, ви отримуєте координати на сцені, де загинув гравець.

Отже, як тільки у вашій базі значень потрібні значення, перераховуйте кожну координату, скільки разів вона відображається у вашому списку / базі даних. У вас з’явиться список на кшталт:

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

або будь-які ваші цінності. У вас буде частота, сполучена з координатою, як пара значень ключ>. Потім можна кількісно визначити ключову шкалу до кольору. Наприклад, ключ 0 - чорний, а максимальний ключ у вашому списку значень ключів - червоний, а все між - це градієнт між чорним, середньою точкою жовтим та максимальною червоною точкою. Кількісно визначте кожен результат за кольором і там його ви маєте.


1
Для 3D-гри, або навіть тієї, що не має цілісних позицій, це можна додатково розширити, відображаючи градієнти кола або сфери деякого радіуса.
Даш-Том-Банг

2

Я не впевнений, чи шукаєте ви якусь програму чи алгоритм для цього. Я фактично мав задоволення будувати програмне забезпечення для візуалізації тепла на карті, і це дуже весело.

Швидкий пошук в Google виявив API HeatMap, який може бути підходящим рішенням, якщо ви не хочете прокладати свій власний.

Можливо, якщо ви точно поясните, що ви шукаєте (для програм або програм), ми можемо допомогти вам краще?


0

Ще щось, що ви можете зробити, це просто вивести відповідні дані у файл CSV або щось інше, а потім імпортувати їх за допомогою статистичного програмного забезпечення (наприклад, Microsoft Excel, LibreOffice Calc, R або GNUPlot) і дозволити йому виплюнути графік. Якщо ви знаєте трохи сценаріїв оболонок (або Batch, якщо ви використовуєте Windows), ви, ймовірно, могли автоматизувати все.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.