Desarrollo de una plataforma flexible para la construcción de escenarios de videojuegos
Professor Advisor
dc.contributor.advisor
Hitschfeld Kahler, Nancy
Author
dc.contributor.author
Velásquez Valdés, Cristóbal
Associate professor
dc.contributor.other
Barbay, Jérémy
Associate professor
dc.contributor.other
Urzúa Reinoso, José
Admission date
dc.date.accessioned
2020-05-08T18:32:06Z
Available date
dc.date.available
2020-05-08T18:32:06Z
Publication date
dc.date.issued
2019
Identifier
dc.identifier.uri
https://repositorio.uchile.cl/handle/2250/174593
General note
dc.description
Memoria para optar al título de Ingeniero Civil en Computación
es_ES
Abstract
dc.description.abstract
Aprender a programar sobre GPUs (Graphics Processing Units), de manera óptima es
una tarea compleja. Esto motiva al alumno a desarrollar una biblioteca similar a los motores
físicos que existen para desarrollar juegos, con funciones que permitan incluir desde modelos
más simples hasta más complejos, para poder generar escenarios que puedan ser parte de
futuros videojuegos, y al mismo tiempo en el contexto de los cursos de Computación en
GPU y Computación Gráfica, para contar con una biblioteca que ayude a los alumnos a
aprender observando y analizando la implementación de problemas y funcionalidades básicas
que juegos y algunas simulaciones necesitan. La idea es que esta biblioteca sea de código
abierto y fácilmente extensible para que a futuro, alumnos del departamento de ciencias de
la computación, puedan usarla, extenderla y mejorarla.
El desarrollo de esta memoria comenzó con una investigación exhaustiva sobre tecnologías
que cumplieran los requisitos de accesibilidad que calzaran con los objetivos propuestos. Es así
como se eligió Typescript y WebGL para construir la plataforma o mejor denominado motor
de videojuegos en un ambiente web y se utilizó el game engine Unity como inspiración del
diseño de ésta. Se realizó un diseño de clases inicial que fue implementado con las condiciones
que incluyera elementos de enseñanza de algunos de los contenidos de programación GPU y
Computación Gráfica. Una vez implementada la primera versión se realizó un rediseño del
módulo más importante del motor de videojuegos, el de rendering para facilitar su extensión
a futuro, por lo que era importante lograr añadir shaders con facilidad, lo que se logró en la
implementación final del motor de videojuegos.
El motor de videojuegos actual contiene sesenta clases entre las que destacan los módulos
de Rendering, Input, Time, GameObject y Physics, además de una biblioteca matemática.
Con estos elementos se construyó un juego simple que tenía como objetivo probar el desempeño
de la plataforma en términos de procesamiento y en términos de flexibilidad de la interfaz.
El juego posee dieciséis elementos que se calculan sus colisiones, un modelo controlable por
el jugador que simula poseer gravedad y tres tipos de shaders entre los que existe uno con
texturas e iluminación Pong, uno para líneas y uno sin texturas ni iluminación.
Dentro de las posibles mejoras destacan: (i) un módulo para almacenar la información del
juego a desarrollar a través de la serialización de los GameObjects de todas las escenas del
juego que se esté desarrollando, (ii) una extensión del módulo de física para poseer simulación
de física newtoniana, la implementación de la función de raycast, (iii) traspasar los procesos
de alto procesamiento como colisiones y física a GPU para obtener un mejor rendimiento para
múltiples elementos y finalmente (iv) la creación de un módulo de animaciones que permita
reproducir animaciones con rigging, que simulan el esqueleto de un modelo 3D para obtener
animaciones realistas.