Como posso produzir mapas de calor com base nos dados relatados pelo player?


17

Para um bom exemplo do que estou falando, veja como o desenvolvedor da Replica Island se baseia nas mortes de jogadores: http://www.youtube.com/watch?v=7-62tRHLcHk&feature=player_embedded#t= 37m

Como posso produzir mapas de calor com base nos dados que passo?

Halo 3 é outro bom exemplo de uso de mapa de calor nos relatórios de dados de jogos: http://www.bungie.net/Online/Heatmaps.aspx


Respostas:


9

Supondo que você já tenha o conjunto de dados que deseja plotar e o mapa que deseja plotar, você pode começar criando um mapa de intensidade: uma grade de valores de ponto flutuante proporcional aos limites do mapa final (se os mapas são pequenos o suficiente, 1: 1 provavelmente é bom). Inicialize toda a matriz para 0.

Depois, você percorre cada ponto que deseja plotar, mapeie-o no espaço de coordenadas do mapa de intensidade (que normalmente deve ser uma operação simples de escala) e, em seguida, plote um "blip" no mapa de intensidade centralizado nessa posição.

Um "blip" básico pode consistir apenas em aumentar a intensidade no ponto de blip mais algum raio em uma pequena quantidade. Implementações mais complexas podem ler a intensidade existente e usar um raio de queda maior, mais intenso o ponto de blip já é. Você pode experimentar a plotadora de blips para encontrar uma implementação de que você goste.

Depois de ter um mapa de intensidade, você pode usar a intensidade em cada ponto individual como uma pesquisa 1D em um gradiente de cores, o que permitirá obter o impacto visual desejado (é assim que você pode obter os resultados multicoloridos que são mais comumente visto). Você deve fazer essa pesquisa de cores ao transferir o mapa de intensidade para seu gráfico final (redimensionar, obviamente, conforme necessário para levar em conta as diferenças de tamanho no mapa de intensidade versus a imagem final).

Isso deve ser suficiente para uma implementação básica, mas há espaço para otimização. Por exemplo, o mapa de intensidade não será normalizado, portanto, você pode precisar renormalizá-lo (provavelmente lento) ou acompanhar a intensidade máxima ao plotar cada sinal, para poder executar a renormalização de uma intensidade individual ao mesmo tempo. você está fazendo a recolorização. Além disso, é possível que a distribuição de seus valores seja tal que não seja eficiente em termos de memória armazenar todo o espaço de coordenadas do mapa, e convém usar uma solução alternativa que não envolva a pré-alocação de um grande pedaço de memória isso estará quase vazio.

Se você tiver dados suficientes previamente para consultar as intensidades mínimas e máximas que espera ver no conjunto de dados, poderá evitar a renormalização, basicamente se basicamente tiver algum mapa entre (X, Y, Z) e o número de " hits "dos dados plotados que ocorreram naquele momento - é algo que você pode incorporar ao sistema que coleta os dados, o que ajudará a otimizar a parte do mapeamento.

Como o mapa de intensidade é apenas, essencialmente, uma imagem em escala de cinza, é uma maneira muito fácil de criar um protótipo desse tipo de sistema para usar um bitmap para o mapa de intensidade e sua API de desenho preferida (por exemplo, System.Drawingem C #) para plotar círculos parcialmente transparentes para produzir um mapa de intensidade. Não parece o melhor, mas é funcional.


3

O Echo Chamber é uma ferramenta gratuita de registro e visualização feita especificamente para jogos.

Visualize arquivos de dados baseados em SQL que contêm informações geradas por um aplicativo c ++. As informações podem ser declarações de log, chamadas de função, capturas de tela ou listas de parâmetros.

Veja métricas de jogos 2D e 3D, como posições de morte, quais armas são usadas com mais frequência e uso de memória em diferentes partes do nível.

O sistema de log possui uma interface C ++ (que é como uma printf () que gera um banco de dados SQL, opcionalmente em uma rede), mas o Echo Chamber deve poder visualizar qualquer banco de dados SQL (ou deve ser simples criar um banco de dados no o formato esperado pela Echo Chamber). A navegação no site é um pouco obtusa; manual relevante da Echo Chamber e função de registro associada da Raknet .

Infelizmente, não há captura de tela dos mapas de calor em ação, mas o Echo Chamber definitivamente suporta mapas de calor:

insira a descrição da imagem aqui


2

Por exemplo, obtenha coordenadas em um evento designado no jogo. Por exemplo, quando o jogador morre, você obtém coordenadas em seu cenário onde o jogador morreu.

Portanto, depois de ter os valores necessários no seu banco de dados, enumere cada coordenada quantas vezes ele aparecer na sua lista / banco de dados. Você terá uma lista parecida com:

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

ou quaisquer que sejam seus valores. Você terá uma frequência emparelhada com coordenadas como um par de chave-> valor. Você pode quantificar a escala da chave para uma cor. Por exemplo, a chave 0 é preta e a chave máxima que você possui em sua lista de valores-chave é vermelha, e tudo entre é um gradiente entre preto, amarelo do ponto médio e vermelho do ponto máximo. Quantifique cada resultado para uma cor e pronto.


1
Para um jogo em 3D, ou mesmo um sem posições integrais, isso pode ser expandido ainda mais ao renderizar gradientes de círculo ou esfera de algum raio.
traço-tom-bang

2

Não tenho certeza se você está procurando algum tipo de aplicativo ou algoritmo para este. Na verdade, tive o prazer de criar um software de visualização de mapa de calor personalizado e é muito divertido.

Uma pesquisa rápida no Google revelou a API do HeatMap, que poderia ser uma solução apropriada se você não quiser criar sua própria.

Talvez se você explicar exatamente o que está procurando (em termos de aplicativo ou de programação), podemos ajudá-lo melhor?


0

Outra coisa que você pode fazer é enviar os dados relevantes para um arquivo CSV ou algo assim, importá-los com software estatístico (como Microsoft Excel, LibreOffice Calc, R ou GNUPlot) e cuspir um gráfico. Se você conhece um pouco de scripts de shell (ou Lote, se você usa o Windows), provavelmente pode automatizar tudo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.