• Nenhum resultado encontrado

Game Analytics: Mineração de Dados para Desenvolvimento e Avaliação de Jogos

N/A
N/A
Protected

Academic year: 2021

Share "Game Analytics: Mineração de Dados para Desenvolvimento e Avaliação de Jogos"

Copied!
20
0
0

Texto

(1)

1

Capítulo

4

Game Analytics: Mineração de Dados para

Desenvolvimento e Avaliação de Jogos

Luciano Silva

Laboratório de Processamento Gráfico e Mídias Digitais

Faculdade de Computação e Informática, Universidade Presbiteriana Mackenzie

Abstract

Data mining is a set of techniques and algorithms based on clustering or classification, which allows knowledge discovering in large volumes of raw data. Given the large volume of data generated by games like, eg, user actions, Physics and Artificial Intelligence events, data mining has proved to be a very feasible tool for both game development and analysis. Within this context, this work aims to present the foundations of data mining for games, as well as structuring a environment to support both clustering and classification inside the game engine Unity3D, via GameAnalytics plugin.

Keywords: Data Mining Games, Clustering, Classification, Data Mining, Digital

Games.

Resumo

Mineração de Dados corresponde a um conjunto de técnicas e algoritmos que, baseados em agrupamento ou classificação, permitem descobrir conhecimento internalizado em grandes volumes de dados brutos. Dado o grande volume de dados gerados por jogos como, por exemplo, ações de usuários, eventos de Física e de Inteligência Artificial, dentre outros, Mineração de Dados tem se revelado uma ferramenta bastante viável tanto para desenvolvimento de jogos, quanto para análise. Dentro deste contexto, este trabalho tem como objetivo apresentar as bases de Mineração de Dados para Jogos, assim como estruturar um ambiente de suporte tanto para agrupamento quanto para classificação dentro do game engine Unity3D, via plugin GameAnalytics.

Palavras-chave: Mineração de Dados em Jogos, Agrupamento, Classificação,

(2)

2

4.1. Introdução

Mineração de Dados corresponde a um conjunto de técnicas e algoritmos que permitem analisar dados brutos, através de agrupamentos ou classificações, de tal forma a descobrir conhecimento internalizados nestes dados (HAN et al., 2011).

Há diversos ambientes onde técnicas de Mineração de Dados já têm se revelado de grande importância como, por exemplo, ambientes como redes sociais ou mesmo a própria Web. Tanto redes sociais, quanto a própria Web, exibem uma característica comum: um grande volume de dados. Neste contexto, vários tipos de conhecimentos podem estar internalizados e passíveis de serem descobertos. Por exemplo, perfis de usuários, perfis de compra, hábitos de consulta, dentre outros. Estes padrões, que não estão explícitos nos dados, podem ser descobertos por agrupamento (usando operações estatísticas bem definidas) ou por classificação (usando filtros bem definidos).

Recentemente, a área de jogos também começou a despertar interesse de pesquisadores em Mineração de Dados, dado o grande volume de dados gerados. Por exemplo, cada ação desenvolvida por um jogador dentro de um nível de um jogo, eventos de erros, evento simulações físicas ou de Inteligência Artificial, todos podem ser vistos como dados oriundos do jogo. Assim, a análise destes dados pode ser bastante importante tanto para direcionar o desenvolvimento do próprio jogo, quanto da sua análise para identificar, por exemplo, perfis de jogadores.

Dentro deste contexto, o objetivo deste texto é introduzir as técnicas fundamentais de Mineração de Dados para jogos, tendo como base uma visão bastante prática com o plugin GameAnalytics, que permite trabalhar com Mineração de Dados conjuntamente com o game engine Unity3D.

O texto está organizado da seguinte forma:

• a Seção 4.2 apresenta os fundamentos de Mineração de Dados, explicitando as duas operações comuns: agrupamento e classificação; • a Seção 4.3 detalha o uso do plugin GameAnalytics para a Unity3D;

• finalmente, a Seção 4.4 apresenta o fechamento do capítulo e, em seguida, são apresentadas algumas sugestões de referências bibliográficas.

(3)

3

4.2. Fundamentos de Mineração de Dados

A Mineração de Dados (Data Mining) é o elo entre um dado bruto dentro de uma base de dados e o dado útil para ser interpretado e usado para uma tomada de decisão (HAN et al., 2011). Um dos objetivos centrais da Mineração de Dados é a extração de conhecimento a partir de dados brutos.

Para a extração de conhecimento, existem várias técnicas e algoritmos: redes neuronais, árvores de decisão, descoberta de regras de associação, dentre outros (HAN

et al., 2011). A decisão pelo uso de uma destas estratégias de extração varia de acordo

com o tipo de base de dados e com o tipo de conhecimento que se queira extrair. Porém, independente da estratégia usada, existem duas tarefas comuns: agrupamento e classificação. A Figura 1 ilustra a classificação de jogadores em um jogo do gênero FPS:

Figura 1: Classificação de jogadores.

(4)

4 O agrupamento ou busca não-supervisionada (WITTEN, 2011) consiste numa organização de padrões em grupos, baseada em alguma similaridade. Dados que pertencem a um determinado padrão são mais similares entre si do que os dados pertencentes a outro grupo.

A classificação ou busca supervisionada (WITTEN, 2011) exige a definição de um conjunto de rótulos, dentro dos quais o conhecimento poderá ser classificado. Os dados também são organizados em padrões definidos pelos rótulos. No exemplo da Figura 1, temos os seguintes rótulos para jogadores: shooters, explorers, beginners,

hilkers e others. Assim, os jogadores são classificados de acordo com as características

apresentadas por cada um destes rótulos.

É importante observar que, no agrupamento, deixa-se a tarefa de descoberta de possíveis grupos existentes entre os padrões de dados a cargo do algoritmo de mineração. Por outro lado, na classificação, há um direcionamento prévio do algoritmos sobre os critérios para agrupamento segundo os rótulos definidos (ZAKI e MEIRA, 2014).

Tanto o agrupamento quando a classificação podem ser utilizados como ferramentas para Mineração de Dados nos processos de desenvolvimento e avaliação de jogos:

! para desenvolvimento, o jogo é instrumentado e observa-se diversas ações realizadas por jogadores e outros elementos do jogo. Esta observação pode ser feita utilizando agrupamentos segundo critérios estatísticos ou classificação, segundo padrões pré-definidos;

! para avaliação, o jogos também e instrumentado e um objetivo comum é descobrir comportamentos de jogadores ou classes de jogadores, a partir de recursos indiretos como arquivos de log de ações. Estas ações podem podem indicar desde comportamentos físicos até aqueles relacionados com perfil de compra, quanto o jogo é monetizado.

(5)

5

4.3.

Mineração de Dados em Jogos

A Mineração de Dados tem se revelado uma ferramenta bastante importante para o processo de desenvolvimento de jogos, pois permite instrumentar diversos elementos de um jogo (jogador, NPCs, itens, dentre outros) e realizar o seu rastreamento, produzindo relatórios bastante úteis para extração de conhecimento sobre o comportamento destes elementos durante a execução do jogo (EL-NASR, 2013). Diversos ambientes de desenvolvimento de jogos já disponibilizam ferramentas para se incluir Mineração de Dados dentro dos cenários dos jogos. Neste trabalho, será utilizada o ambiente Unity 3D (UNITY3D, 2014), que possui o plugin GameAnalytics (GAMEANALYTICS, 2014) para esta tarefa. Este plugin é gratuito e, seguir, são indicados os passos para instalação, configuração e uso.

4.3.1. Instalação e Configuração

Uma vez que plugin tenha sido obtido do endereço acima, faz-se a sua importação via Assets>Import Package>Custom Package. Além dos códigos para o editor e a monitoração em si, este plugin também disponibiliza um exemplo de código, conforme mostrado na Figura 2:

(6)

6 Depois da importação do pacote, deve-se configurar uma conta em www.gameanalytics.com, para armazenamentos dos dados e geração de gráficos de análise. Dentro de determinados limites, esta conta é gratuita. Para a criação da conta, acessa-se a opção mostrada na Figura 3:

Figura 3: Configuração inicial do GameAnalytics.

Para cada jogo a ser monitorado, é necessária uma chave, que pode ser gerada gratuitamente no site www.gameanalytics.com. Cada jogo irá possuir duas chaves: Game Key e Secret Key. Como a comunicação com o servidor www.gameanalytics.com é segura, há a necessidade da chave secreta. As duas chaves têm o formato mostrado na Figura 4:

(7)

7 Estas duas chaves devem ser fornecidas na toda vez que se selecionar a opção GA Setup Wizard, conforme mostrado na Figura 5:

Figura 5: Configuração das chaves de jogo e secreta no GameAnalytics.

Estas chaves também podem ser configuradas selecionando-se a opção GA Settings, conforme mostrado na Figura 6:

(8)

8

4.3.2. Princípio de Funcionamento do GameAnalytics

O princípio de funcionamento do GameAnalytics é bem simples, com dois passos bem claros de implementação:

1. define-se qual elemento deverá se monitorado

2. define-se quais eventos de monitoração serão enviados ao servidor www.gameanalytics.com

3. gera-se heatmaps (elementos visuais nos cenários) ou gráficos de eventos (dashboard)

Os elementos que podem monitorados são divididos em quatro grandes categorias: eventos de usuário, eventos de projeto, eventos de erro e eventos de negócios. Para os objetivos de desenvolvimento, normalmente interessam os eventos de usuário, de projeto e de erro. Para efeito de análise de jogo, normalmente se utilizam os eventos de usuário e de negócios.

A monitoração pode ser feita tanto de forma global (System) quanto de forma localizada (Object). No padrão System, há uma coleção de eventos pré-definidos para monitoração (transições de níveis e mensagens de erro, por exemplo) e não há necessidade de se inserir código de programação. Já no padrão Object, associa-se eventos específicos a uma objetos e há a necessidade de código de programação. A criação destes dois elementos de monitoração é feita por uma das opções mostradas na Figura 7:

(9)

9 A saída dos elementos monitorados pode ser feita por meio de heatmaps ou gráficos (dashboard), além dos próprios arquivos de log correspondentes. Tanto os heatmaps quanto os gráficos indicam, geralmente, o número de ocorrências de um determinado evento. Na Figura 7, tem-se um exemplo de dashboard:

Figura 8: Dashboard mostrando diversas informações de jogadores e versões instaladas de um jogo.

Enquanto o dashboard é uma opção orientada a gráficos (lineares, pizzas, dentre outros), os heatmaps permitem a exibição de dados de monitoração de eventos diretamente nos cenários dos jogos, conforme mostrado na Figura 8:

(10)

10 As cores associadas aos heatmaps estão diretamente ligados à quantidade de eventos que ocorrem em algum nível do jogo. Os níveis de cores podem ser configurados diretamente pelo programador.

Heatmaps têm um grande vantagem em relação aos gráficos dos dashboards:

além da informação qualitativa disponibilizada pela cor, eles são localizados espacialmente. Assim, para processos de desenvolvimento, saber a localização onde determinado tipo de evento ocorre é de grande importância, pois pode-se detectar erros constantes nestes locais, além da produção esquemas diferenciados que propiciem alto desempenho nestes locais como, por exemplo, em implementação de esquemas de Física ou Inteligência Artificial.

4.3.3. Monitoração de Eventos de Usuário

O plugin GameAnalytics, por padrão, permite o envio dos seguintes dados referentes a usuários: ! user_id ! android_id/ios_id ! platform ! dispositivo ! os_minor ! os_major ! sdk_version

Além destes dados, é possível de enviar qualquer outro dado de usuário previsto nos campos de estruturas de usuários: http://support.gameanalytics.com /hc/en-us/articles /200841526-User-event-structure.

(11)

11 Para se enviar qualquer um destes campos, utiliza-se um código semelhante ao mostrado na Figura 10:

Figura 10: Configuração de novo usuário com gênero, ano de nascimento e número de amigos.

Assim, com esta configuração, há um interesse somente pela informação de sexo, data de nascimento e número de amigos de um determinado usuário.

4.3.4. Monitoração de Eventos de Projeto

Eventos de projeto são os mais genéricos que podem ocorrer dentro de um jogo. Por exemplo, se houve a colisão entre objetos em um nível ou se uma determinada personagem foi morta em um ponto específico do nível, ambas poderão ser tratadas como eventos de projeto.

Eventos de projeto são sempre definidos por três informações: nome do evento, valor do evento e posição. Assim, todos os eventos de projeto são geo-referenciados no nível. A sintaxe geral de um evento de projeto é mostrada na Figura 11:

(12)

12 A seguir, tem-se um exemplo de lançamento de monitoração de um evento de morte de uma personagem:

Figura 12: Monitoração de um evento de morte de personagem.

Eventos de projeto são altamente indicados para monitoração de objetos. A associação entre objetos e os códigos do GameAnalytics é feita através das propriedades do objeto, conforme mostrado na Figura 13:

Figura 13: Associação entre um objeto e o evento de projeto.

Conforme mostrado na Figura 12, a associação com a geração do evento para mineração de dados pode ocorrer dentro de outros eventos já gerados no jogo.

(13)

13 Para facilitar a visualização de quais objetos estão relacionados a códigos de monitoração, o plugin renderiza o nome GA na superfície (quanto possível) da cada um deles, conforme mostrado na Figura 14:

Figura 14: Objeto associado a um código de monitoração em GameAnalytics.

4.3.5. Monitoração de Eventos de Erro

O processo de monitoração de eventos de erros é bastante semelhante aos monitoramentos anteriores. Descreve-se o tipo do evento de erro (severidade e mensagem de erro), associando-o a uma geo-referência dentro do jogo. Este tipo de monitoração, normalmente, é feita de forma global (System). Porém, é possível também associá-lo a objetos.

(14)

14 Eventos de erros podem ser monitorados via um dos procedimentos mostrados na Figura 15:

Figura 15: Monitoração de eventos de erro em GameAnalytics.

O atributo severity pode assumir um dos seguintes valores: critical, debug,

error, info e warning. Já o atributo message, normalmente, utiliza o mesmo texto de

erro fornecido pelo erro detectado. Normalmente, utiliza-se a geração de eventos de erro dentro de blocos do tipo try-catch, conforme mostrado na Figura 16:

Figura 16: Posicionamento de monitoração de evento de erro em GameAnalytics.

Para um mesmo erro detectado, pode-se lançar quantos eventos de erros forem necessários. É comum, também, após o lançamento de erro no GameAnalytics, relançar o erro para o seu efetivo tratamento. Neste contexto, o GameAnalytics funciona apenas como um filtro para fazer as anotações de erros para futuros processos de mineração de dados.

(15)

15

4.3.6. Monitoração de Eventos de Negócio

Finalmente, é possível monetizar partes de um jogo. Por exemplo, pode-se associar a consecução de um objetivo ao ganho de valores reais em uma determinada moeda real (dólar, por exemplo). Assim, quando os valores associados a eventos incluem valores financeiros em moeda, é comum se usar eventos de negócios para monitoração.

A sintaxe para eventos de negócio no Game Analytics é mostrada na Figura 17:

Figura 17: Operações para monitoração de eventos de negócio em GameAnalytics.

A Figura 18 ilustra um outro exemplo de monetização usando eventos de negócio, onde a um botão é associado o evento de compra de uma arma (RocketLaucher) em dólares:

(16)

16

4.3.7. Apresentação de Resultados via Heatmaps

Para apresentação dos dados via Heatmaps, é necessário trazer dados do servidor www.gameanalytics.com para o ambiente de desenvolvimento da Unity3D. Para isto, inicialmente, será necessário usar a chave Game Key, mostrada nas Figuras 4 e 5. Dependendo do tempo de monitoração, o tempo de download de um heatmap pode demorar consideravelmente.

Pode-se recuperar manualmente os dados de um heatmap através de alguns passos básicos:

1. Obter as informações de áreas que foram monitoradas no jogo. Para isto, normalmente utiliza-se uma requisição http, conforme mostrado na Figura 19:

Figura 19: Obtenção de áreas monitoradas.

A resposta típica de um servidor para esta requisição é mostrada na Figura 20:

Figura 20: Resposta típica de uma consulta de área no GameAnalytics.

2. A partir das informações das áreas, obter os dados dos heatmaps associados a estas áreas. A Figura 21 ilustra um exemplo típico de recuperação de heatmaps:

(17)

17 A resposta típica de um servidor para esta requisição de heatmaps é mostrada na Figura 22:

Figura 22: Dados obtidos numa requisição de heatmaps.

Para cada coordenada (x,y,z), há um valor associado para o evento em value. A partir destes vetores de dados, podem ser aplicados algoritmos tanto de agrupamento quanto de classificação de dados. Isto é feito através de filtros que podem ser incorporados no formato de novos plugins ou mesmo usando filtros automáticos já disponibilizados pela Unity3D.

Além do processos manual, é possui automatizar o processo de obtenção dos

heatmaps, aplicação de filtros e renderização dos resultados. Para isto, deve-se

inicialmente criar um heatmap dentro de um nível, escolhendo-se a opção Create GA_Heatmap, conforme mostrado na Figura 23:

Figura 23: Criação de heatmaps.

Esta opção irá criar um controle dentro do nível e, a partir deste objeto de controle, pode-se especificar o filtro de mineração desejado.

(18)

18 O filtro de mineração é especificado com uma das propriedades do objeto

heatmap inserido no nível, conforme mostrado na Figura 24:

Figura 24: Associação entre filtro de mineração e heatmap.

Na aplicação do filtro de mineração, além do código em si, pode-se especificar qual o domínio onde o filtro atuará:

! área de interesse dentro do nível ! evento de interesse dentro do nível ! data inicial dos eventos

! data final dos eventos

O download de cada heatmap pode ser efetuado uma única vez ou, caso necessário, a cada nova operação de build de jogo, pode-se efetuar uma nova carga de dados do servidor www.gamenalytics.com. Normalmente, a primeira opção é a mais comum pois, dependendo do volume de dados gerados na monitoração pode ser bastante grande para downloads sucessivos.

(19)

19 A exibição dos heatmaps segue, normalmente, o padrão de cor amarela. Porém, logo acima do filtro, é possível de configurar as cores de exibição dos heatmaps no nível de jogo. É possível, a cada nova filtragem, se acumular os diversos mapas dentro do nível. Neste caso, trabalha-se com cores diferenciadas para também se diferenciar a influência de cada um deles.

A estrutura de um filtro á bastante simples, conforme mostrado na Figura 25:

Figura 25: Estrutura básica de um filtro de mineração no GameAnalytics.

No objeto condition, criam-se os filtros iniciais como, por exemplo, data de início de final para o processo de filtragem. A partir disto, obtém-se uma lista uma lista de dados chamados snapshots. Estes snapshots são agrupados, primariamente, através de um filtro inicial (no exemplo acima, level). Neste filtro inicial, podem ser aplicadas operações estatísticas elementares como média, mediana, desvio-padrão, dentre outros.

Operações mais sofisticadas como, por exemplo, mineração pode classificação, podem ser aplicadas diretamente nos snapshots.

(20)

20

4.4. Conclusões e Recomendações Finais

Este pequeno texto introdutório apresentou as bases de Mineração de Dados para jogos, tanto para desenvolvimento, quanto para análise. Os conceitos principais foram ilustrados com o plugin GameAnalytics, disponível para o game engine Unity3D. Além disto, foram estabelecidas as bases de instalação, configuração, exibição de dados e filtragem, que podem ser adaptados tanto para Mineração de Dados com agrupamento quanto por classificação.

O autor espera que este texto sirva de ponto de início para todos os interessados em Mineração de Dados para Jogos. Há grande desafios, tanto do ponto de vista teórico quanto prático, para o projeto e desenvolvimento de soluções de agrupamentos e classificações envolvendo grandes volumes de dados de jogos.

Referências Bibliográficas

EL-NASR, M.S., DRACHEN, A., CANOSSA, A. Game Analytics: Maximizing the

Value of Player Data. New York: Springer, 2013.

GAMEANALYTICS. Game Analytics Unity Package. Disponível em https://www.assetstore. unity3d.com /en/#!/content/6755. Acesso em: 03/08/2014. HAN, J., KAMBER, M., PEI, J. Data Mining: Concepts and Techniques. 3.ed. Morgan Kaufmann, 2011.

RAMIREZ-CANO, D., COLTON, S., BAUMGARTEN, R. Player Classification Using a Meta-Clustering Approach. Proceedings of CGAT Conference 2010. Singapura, Abril, 2010, pp. 20-28.

UNITY3D. Unity3D Game Engine. Disponível em : http://www.unity3d.com. Acesso em: 02/08/2014.

WITTEN, I.H., FRANK, E., HALL, M.A. Data Mining: Practical Machine Learning

Tools and Techniques. 3.ed. New York: Morgan Kaufmann, 2011.

ZAKI, M.J., MEIRA JR., WAGNER. Data Mining and Analysis: Fundamentals,

Referências

Documentos relacionados

Os casos não previstos neste regulamento serão resolvidos em primeira instância pela coorde- nação do Prêmio Morena de Criação Publicitária e, em segunda instância, pelo

Informe dois dos motivos mais comuns para utilização de ponteiros em C... Descreva o conceito e as regras que as estruturas de dados

Membro_Faculdade (Matrícula: Inteiro, Nome: string[50], Carga: Inteiro, IniContrato: data, Curso: string[30], professor: booleano, aluno: booleano). Membro

Mineração de conhecimento interativa em níveis diferentes de abstração: Como é  difícil  prever  o  que  exatamente  pode  ser  descoberto  de  um  banco 

Posteriormente, em Junho de 1999, ingressei no grupo Efacec, onde fui responsável pela elaboração de projetos e propostas para a construção de Estações de Tratamento

(pontuação) relacionada à qualidade de um sistema. Uma nota obtida num aspecto de usabilidade pode evidenciar que tal aspecto está sendo adequadamente atendido

VUOLO, J.H. Fundamentos da Teoria de Erros, Edgard Blucher Ltda, São Paulo, 1992 YIN, R.K. Estudo de caso: planejamento e métodos, Bookman, Porto Alegre, 2005.. Quando a

 Numéricos das das Propriedades Propriedades do do Ar Ar Úmido, Úmido, Cartas Cartas Psicrométricas, Psicrométricas, Processos Processos Psicrométricos, Psicrométricos,