SIAJ

Visão Geral

O SIAJ é um dos módulos que constitui a rede GameFoundry, e é executado de uma forma autónoma e independente do GameCore e dos Containers. O SIAJ é responsável pelo processamento dos eventos relativos à interacção entre os diversos utilizadores com o sistema, trabalhando assim em tempo real com grandes fluxos de dados.

A principal responsabilidade do SIAJ é a geração de estatísticas e a execução de processos de Data Mining de forma a encontrar factos relevantes para serem posteriormente disponibilizados através do GameCore.

O sistema está desenhado de forma a processar dados e gerar estatísticas previamente, ficando estes guardados na base de dados do SIAJ. Desta forma, quando um utilizador solicitar um resultado este pode ser imediatamente retornado. Estes resultados são calculados aquando a recepção de dados para análise. Porém, apenas se procede à execução de um processo analítico caso os dados não analisados ultrapassem os 5% da quantidade de dados recebidos.

Estão também a ser utilizadas técnicas de Stream Mining de forma a se poder actualizar os resultados iterativamente em vez de os calcular sempre de raiz. Com estas metodologias consegue-se diminuir drasticamente a carga de processamento inerente às funções do SIAJ e ainda disponibilizar os resultados ao utilizador de uma forma rápida e eficiente.

Arquitectura

siaj_visao_geral

O SIAJ pode ser dividido em três componentes principais:

  • Componente de comunicação, que permite a comunicação com o GameCore e os Containers;
  • Componente analítica, composta por diversos algoritmos e métodos para extracção de estatísticas relevantes;
  • Base de dados, onde são armazenados todos os dados imprescindíveis para o correto funcionamento do SIAJ.

A componente de comunicação e a componente analítica são processos diferentes, sendo que comunicam através de uma Message Queue, utilizando uma implementação de Message Queues da Apache, a Active MQ. A componente de comunicação adiciona “trabalhos” na Message Queue sempre que acredita ser necessário actualizar os resultados, sendo que é ainda verificado se este mesmo trabalho já não está a ser realizado.

Por sua vez, a componente analítica aguarda trabalhos provenientes da Message Queue, executando-os sempre que lhe é possível.

Comunicação intra-Gamefoundry

Tendo em conta que o SIAJ é um módulo independente, podendo ser executado numa máquina diferente do GameCore, foi necessário desenhar e implementar uma interface para que este módulo consiga comunicar com os restantes da rede GameFoundry, o GameCore e os Containers.

Através desta interface é possível para o GameCore realizar a gestão de utilizadores (jogadores e publishers) e jogos, podendo assim o GameCore comunicar ao SIAJ as criações e edições realizadas neste tipo de objectos, mantendo os dados do SIAJ sempre devidamente actualizados. O GameCore pode também solicitar ao SIAJ os resultados que este predispõe, podendo posteriormente divulga-los aos publishers.

Data Ware-House

Tendo em conta a natureza dos dados a armazenar e a dimensão do fluxo de dados esperado, optou-se por utilizar um sistema de bas de dados NoSQL, nomeadamente a implementação MongoDB.

A base de dados do SIAJ guarda a informação considerada relevante para o cálculo de estatísticas, persistindo assim diversos dados sobre os utilizadores (dados demográficos e geográficos), alguns dados sobre a natureza dos jogos e todos os dados referentes à interacção do utilizador com o sistema.

Esta base de dados é também responsável por guardar os resultados que foram calculados pelo sistema, para que estes estejam imediatamente disponíveis quando um utilizador os solicitar.

Data Mining

Quando um pedido de processamento é detectado na Message Queue, e tendo o sistema disponibilidade e capacidade para concretizar esse pedido, o processo analítico é iniciado.

De momento, são extraídos dois tipos de estatísticas dos dados recebidos:

  • Estatísticas sobre os jogadores;
  • Estatísticas básicas sobre a utilização dos jogos.

Para as estatísticas sobre os jogadores, é possível reunir informações bastante interessantes a partir das suas contas Facebook e Google. Recorrendo a estas fontes conseguimos capturar as idades, moradas, crenças religiosas, ideologias políticas, interesses musicais, de leitura, televisivos e até cinematográficos.

Relativamente às estatísticas de utilização dos jogos, é possível reunir e posteriormente apresentar informações como as médias de tempo por partida, as médias de pontos, o dispositivo onde o jogo foi executado e em que distrito foi jogado.

Clustering

Clustering é uma técnica de Data Mining que tem como objectivo agrupar objectos de forma completamente automática, considerando os graus de semelhança desses objectos entre si.

No contexto deste projecto, clustering permite agrupar os utilizadores do sistema automaticamente através de diversos parâmetros, tais como os seus dados demográficos, geográficos e, especialmente, pelas suas características de utilização dos jogos.

Até à data, foram implementados alguns algoritmos de clustering.

Interface com o utilizador

Foi desenvolvida uma simples interface web de forma a ser possível navegar pelas diversas estatísticas actualmente disponíveis no SIAJ.

Esta interface é temporária, servindo apenas para facilitar a consulta de resultados nesta fase intermédia do projecto.

gamefoundry_siaj_interface