Informações Principais
     Resumo
     Abstract
     Introdução
     Conclusão
     Download
  
  
  
 
Conclusão
 
 
Acadêmico(a): Gabriel Zanluca
Título: TOWELJS: ENGINE 3D EM JAVASCRIPT USANDO ARQUITETURA BASEADA EM COMPONENTES
 
Conclusão:
Este trabalho apresentou o desenvolvimento de um motor de jogos utilizando JavaScript, WebGL e arquitetura baseada em componentes. Dentre as dificuldades durante o desenvolvimento vale o destaque para a forma como foram implementadas as transformações geométricas e as luzes. Para evitar-se processamento desnecessário do recalculo da matriz de transformação do objeto a cada vez que desenhasse-o optou-se por recalcula-la somente quando realmente houve-se alguma alteração nos seus valores. Com isso as transformações funcionam de forma relativa e não absoluta, isso pode causar uma pequena confusão no início ao utilizar o motor. A dificuldade com relação as luzes, se deve ao fato de que inicialmente haviam sido validadas apenas para os cubos. Quando se incluiu as esferas haviam detalhes referente aos vetores normais que só foram reparados nesse momento. Mesmo com essas dificuldades o motor cumpriu seu objetivo como ferramenta para facilitar e abstrair certas partes no desenvolvimento de aplicações gráficas em JavaScript. O uso da arquitetura baseada em componentes se mostrou eficiente para ser utilizado num motor de jogos. Por alcançar-se um baixo nível de acoplamento e um grande grau de reutilização dos componentes. Contudo ainda é preciso analisar melhor as questões referentes ao desempenho, para que quando haja muitos objetos em cena ou processos mais complexos entre cada frame o FPS não seja afetado. Contemplando o primeiro objetivo específicos disponibilizou-se junto ao trabalho dois componentes exclusivos para analisar a performance. O primeiro chamado de FPSComponent tem a função de contabilizar os FPS na cena. O segundo denominado de MemoryUsageComponent tem por sua vez a função de exibir a memória que a aplicação atual está utilizando. Durante os testes de usabilidade do motor de jogos desenvolvido por outro desenvolvedor, percebeu-se que o tutorial criado para que os auxiliasse, no uso do motor, precisava de melhoria. A principal dificuldade estava no entendimento da criação e manipulação dos componentes. Após melhorias no tutorial o motor se mostrou como uma ferramenta com potencial para ser usado por pessoas que não tenham um conhecimento tão aprofundado em computação gráfica. Visto que um nível de abstração conseguiu ser alcançado graças ao encapsulamento do código responsável pelo desenho e comportamento dos gameObject dentro dos seus respectivos componentes. Por esta ser a primeira versão do motor implementada ele conta com algumas limitações como: não possuir uma classe System para tratar os eventos do mouse presentes no navegador. Logo dessa forma também não permite a seleção de objetos ou manipulação de objetos pelo mouse. Outro ponto limitado é o fato de contar apenas com duas opções de gameObject (cubo e esfera). Algo que deixa o motor desenvolvido longe das opções usadas comercialmente e o fato de não permitir a aplicação de textura nos objetos. Isso faz com que a aparência seja limitada por cores solidas ou a interpolação feita pelo próprio WebGL entre as cores de cada vértice. Os testes feitos em comparação ao Three.js mostraram resultados satisfatórios considerando que o mesmo é usado comercialmente e com muito mais tempo de desenvolvimento. Mesmo que em sua maioria o motor desenvolvido tem tido um resultado inferior. Esses resultados não se mostraram tão distantes com relação ao FPS. No quesito uso de memória o motor desenvolvido teve um resultado melhor muito provável pela sua simplicidade maior em comparação ao Three.js. Já o tempo de criação dos cenários foi onde ocorreu a maior diferença mostrando que o componente de desenho precisa ser melhor analisado. Por fim, o motor desenvolvido ser mais simples e limitado comparado as opções comerciais pode-se mostrar como uma vantagem para ser usado em sala de aula. Isso deve-se a exatamente ao fato de ser mais simples e limitado, pois dessa forma pode se tornar mais fácil seu entendimento ao mesmo tempo que ajuda no entendimento de conceitos básicos de computação gráfica. Não necessitando de conhecimentos profundos nessa área visto que motor encapsulou os principais códigos necessários para isso.