• Nenhum resultado encontrado

Ferramenta de avaliação

No documento Vídeo jogos evolutivos (páginas 114-118)

Capítulo 4 Trabalho realizado

4.3 Implementação

4.3.3 Ferramenta de avaliação

A ferramenta de avaliação foi desenvolvida com o objetivo de avaliar de forma fiável o desempenho e consumo de memória do sistema de navegação desenvolvido. Como requisito desta ferramenta, deve possibilitar a execução de testes automáticos (sem intervenção do ser humano) recebendo como argumento de entrada um ficheiro de configuração e retornando como output o resultado dos testes efetuados. Apesar da ferramenta de prova de conceito permitir observar o consumo de memória e o tempo de resposta do sistema, não se trata de uma avaliação fiável. Por outro lado, a componente gráfica que lhe está associada é “desnecessária” para a recolha de dados, estando esta associada a um grande consumo de recursos o que influência os resultados obtidos e dificulta a rapidez e replicação dos testes.

Tal como acontece na ferramenta de prova de conceito, a execução da ferramenta de avaliação baseia-se em ficheiros de configuração no formato XML. O ficheiro de entrada contêm diversas entradas, cada entrada representa uma situação de

Ilustração 31 - Simulação de 600 NPC’s com esquema de divisão baseado em Grelha e algoritmo de procura A*.

Ilustração 32 - Simulação de 2 NPC’s com o esquema de divisão baseado em quadtree e algoritmo de procura Fringe Search.

90

teste. Uma entrada é composta por diversos parâmetros que correspondem a um ficheiro XML.

Parâmetros Descrição Valores possíveis

Id Identificação da simulação. -

Esquema de divisão

Esquema de divisão a ser aplicado ao ambiente de jogo.

Baseado em grelha ou em quadtree

Algoritmo de procura em grafos

Algoritmo de procura em grafos usado para a resolução de caminhos

A* ou Fringe Search

Dimensão do terreno

Tamanho do terreno onde será aplicado o esquema de divisão.

Pequena, média ou grande

Procedimentos Lista de procedimentos a aplicar ao ambiente de jogo especificado nos parâmetros anteriores.

-

Número de repetições

Número de vezes que os procedimentos serão repetidos

-

Tabela 27 - Parâmetros que compõe uma entrada do ficheiro XML.

A divisão de cada simulação em parâmetros promove a modularização e a reutilização dos ficheiros XML.

Os ficheiros de procedimentos são constituídos por diversas entradas, cada entrada corresponde a uma operação que é executada de forma linear sendo registado o tempo de processamento e memória utilizada na sua execução. Atualmente as operações suportadas são:

Operação Descrição

InitNavigationGraph Inicialização do grafo de navegação.

Inicialização do algoritmo de procura.

AddObstacleAtLoad Adição de vários obstáculos durante a inicialização do grafo de navegação e no final atualização do grafo de navegação.

AddObstacle Adição de um obstáculo e atualização do grafo de navegação.

PrintSearchSpace Obtém a dimensão do espaço de procura.

ToNode Quantização, ocorre a conversão de uma localização do ambiente de jogo num nó do grafo de navegação.

91

de jogo.

ConnectNeighbours Procede à conexão de vizinhos.

FindePath Determina o caminho entre dois pontos.

FinishTest Finaliza o teste.

Tabela 28 - Operações suportadas pela ferramenta de avaliação.

Cada ficheiro de procedimento deve possuir no mínimo três procedimentos: InitNavigationGraph, InitNavigationGraph e FinishTest. Para cada procedimento de uma simulação executado é criado um ficheiro de output com o Id da simulação e o processamento.

Comparando a implementação da ferramenta de prova de conceito e a ferramenta de avaliação existem três grandes diferenças:

 não é usada a técnica de programação de inversão de controlo uma vez que a biblioteca usada na ferramenta de prova de conceito é específica para o Unity 3D e o ambiente de execução da ferramenta de avaliação é inteiramente em C#;

 os objetos e entidades assim como a sua descrição em XML diferem entre ferramentas. Esta opção tem por objetivo poupar memória uma vez que na ferramenta de avaliação não é necessário tantos atributos para descrever os objetos e entidades;

 a criação dos objetos não recorre a fábricas.

Embora estas diferenças tenham obrigado a uma nova implementação da camada “business” do jogo de vídeo, devido à arquitetura do sistema de navegação ser centrada em objetos tratou-se de uma tarefa relativamente simples.

A nível de funcionamento destacam-se duas diferenças entre as duas ferramentas:  na ferramenta de avaliação não existe uma camada locomoção, os pedidos

realizados à camada de procura em grafos são feitos de forma linear à medida que os procedimentos vão sendo executados

 existem dois modos de execução. O primeiro modo de execução consiste no uso de apenas uma instância do algoritmo de procura em grafos, existindo apenas a thread principal da ferramenta. O gestor não recorre à threadpool para lançar novas instâncias, sendo as chamadas ao método responsável pela procura de caminho síncronas, lineares e bloqueantes. O segundo modo de execução é semelhante à ferramenta de prova de conceito, em que o gestor recorre à threadpool para

92

armazenar e consumir pedidos através de uma ou mais threads. A existência de dois modos de execução tem por objetivo permitir avaliar melhor a arquitetura desenvolvida.

A avaliação do tempo de processamento de cada operação é feita através do biblioteca do C# System.Diagnostics que disponibiliza um conjunto de métodos (nomeadamente o Stopwatch) que permitem medir de forma precisa o tempo decorrido. Desta forma, é obtido o tempo antes da chamada à função e depois da chamada à função, sendo o último tempo subtraído pelo primeiro tempo.

Para a avaliação da memória usada na execução do método, é obtida a memória total do sistema antes da chamada à função e depois da chamada à função. Sendo a quantidade de memória avaliada depois da chamada à função subtraída à quantidade de memória avaliada antes da chamada à função. Antes da obtenção da memória total do sistema é chamado o método Thread.MemoryBarrier uma vez que a máquina usada em testes dispõe de um sistema multiprocessador e a chamada a este método sincroniza o acesso à memória, fazendo com que o processador não faça reordenamento de instruções.

4.4 Sumário

Neste capítulo é descrito o trabalho técnico realizado para alcançar os objetivos propostos.

Na primeira secção é feita a análise do problema com vista aos objetivos traçados no capítulo 1.2 e à pesquisa bibliogafia feita no Capítulo 2.

Depois da conceptualização dos problemas que este estudo procura resolver, na secção seguinte é descrito o desenho da solução com base nos requisitos e problemas identificados anteriormente.

A secção final tem por objetivo especificar a implementação do desenho da solução, nesta secção é detalhado a implementação do sistema de navegação e das duas ferramentas criadas para a explorar.

93

Capítulo 5

No documento Vídeo jogos evolutivos (páginas 114-118)

Documentos relacionados