Как я могу создать тепловые карты на основе данных, полученных от игрока?


17

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

Как я могу легко создавать тепловые карты на основе данных, которые я передаю?

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


Ответы:


9

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

Затем вы проходите через каждую точку, которую хотите построить, отображаете ее в координатное пространство карты интенсивности (что обычно должно быть простой операцией масштабирования), а затем наносите «блик» на карту интенсивности с центром в этой позиции.

Базовый «всплеск» может просто состоять из увеличения интенсивности в точке всплеска плюс некоторый радиус на небольшую величину. Более сложные реализации могут считывать существующую интенсивность и использовать больший радиус спада, чем интенсивнее точка уже. Вы можете поэкспериментировать с блип-плоттером, чтобы найти реализацию, которая вам нравится.

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

Этого должно быть достаточно для базовой реализации, но есть место для оптимизации. Например, карта интенсивности не будет нормализована, поэтому вам может потребоваться перенормировать ее (возможно, медленно) или отслеживать максимальную интенсивность при построении каждого всплеска, чтобы можно было одновременно перенормировать индивидуальную интенсивность Вы делаете перекраску. Кроме того, возможно, что распределение ваших значений таково, что неэффективно хранение памяти для хранения всего координатного пространства карты, и вы можете использовать альтернативное решение, которое не предполагает предварительного выделения большого фрагмента памяти. это будет в основном пустым.

Если у вас есть достаточно данных заранее, чтобы запросить минимальную и максимальную интенсивности, которые вы ожидаете увидеть в наборе данных, вы можете вообще избежать перенормировки - в основном, если у вас есть какая-то карта между (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
В трехмерной игре или даже в игре без интегральных позиций это может быть дополнительно расширено путем рендеринга градиентов окружности или сферы некоторого радиуса.
dash-tom-bang

2

Я не уверен, что вы ищете какое-то приложение или алгоритм для этого. Я на самом деле имел удовольствие создавать собственное программное обеспечение для визуализации тепловых карт, и это очень весело.

Быстрый поиск в Google показал API-интерфейс HeatMap который может быть подходящим решением, если вы не хотите создавать свои собственные.

Может быть, если вы объясните, что именно вы ищете (в приложениях или в программировании), мы поможем вам лучше?


0

Что-то еще, что вы можете сделать, это просто вывести соответствующие данные в файл CSV или что-то еще, а затем импортировать их с помощью статистического программного обеспечения (например, Microsoft Excel, LibreOffice Calc, R или GNUPlot) и заставить его выплевывать график. Если вы знаете немного сценариев оболочки (или пакетного, если вы используете Windows), вы, вероятно, можете автоматизировать все это.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.