Curriculum

Nombre: Pablo Boullosa García

Fecha nacimiento: 13/08/1996

Email: pablo.boullosa.g@gmail.com

Conocimientos
UNREAL ENGINE 80%
UNITY 85%
DISEÑO DE NIVELES 50%
PYTHON 85%
JAVA 70%
C# 90%
HTML + CSS 95%
JAVASCRIPT 85%
ANGULAR 70%
VUE.JS 60%
DJANGO 85%
DISEÑO DE BASES DE DATOS 75%
SQL 90%
Estudios
Máster Universitario en Diseño, Desarrollo y Comercialización de Videojuegos

Especialidad en programación y aplicaciones avanzadas

120 créditos - Universidade da Coruña - 2020

Grado en Ingeniería Informática

Especialidad en tecnologias de la información

240 créditos - Universidade da Coruña - 2018

Experiencia
Prácticas curriculares 250 horas

CINFO CONTENIDOS INFORMÁTICOS PERSONALIZADOS
14 febrero - 27 abril 2018

Premios
Santander Explorer - 2021

2º premio con el proyecto Ferias FEDI - más información

HACKatHOME - 2020

Hackathon online de la Xunta de Galicia - más información

Meninas Jam - 2020

Game Jam online organizada por la UDC - más información

Portafolio

Proyectos de videojuegos que he realizado o en los que he participado.

Beat The Beats

Videojuego / Septiembre 2020

Shipulse

Videojuego / Julio 2020

Canadian Hole

Videojuego / Febrero 2020

Nivel Survival Game

Trabajo de clase / Enero 2020

Cattaca

Videojuego / Noviembre 2019

Simple Endless Runner Game

Trabajo de clase / Mayo 2019

Simple battle tank game

Trabajo de clase / Diciembre 2018

Space Invaders

Trabajo de clase / Diciembre 2018

Crazy Alien

Trabajo de clase / Diciembre 2018

Gifts by the Fireplaces

Videojuego / Diciembre 2014

Planet to Planet

Videojuego / Septiembre 2014

Ferias FEDI

Proyecto personal - desarrollo de software

Ferias FEDI es un proyecto que empredí en junio del 2020 con dos compañeros. Nuestro equipo nació para participar en un Hackathon organizado por la Xunta de Galicia y que tenía como objetivo aportar soluciones para daptar el tejido empresarial a la situación de la pandemia. Por eso tuvimos la idea de hacer una aplicación de ferias virtuales.

Descripción:

Desde el principio teníamos muy claro que queríamos hacer una aplicación "self-service" y lo más estandar posible, para que fuera adaptable a cualquier sector y permitiera la realización de ferias virtuales con un coste muy reducido. Intentamos conseguir una estética 3D, visualmente atractiva y que ofrezca una mayor inmersión que las soluciones web clásicas, todo ello sin renunciar a la facilidad de uso. No queremos parecernos a los videojuegos, ni que los usuarios tengan que manejar un avatar, todo se puede controlar con el ratón haciendo clic.

Mockup - Estadísticas de jugador
FEDI - Herramienta de visita

Mi aportación:

Dentro de este proyecto de ferias FEDI yo me he encargado de toda la programación de las herramientas 3D, la iluminación y parde de la decoración de los escenarios. Además he colaborado en el diseño y el desarrollo de parte de la aplicación web de gestión de los eventos.

Este proyecto me ha servido para mejorar mis conocimiento de Unity 3D, teniendo por primera vez la oportunidad de enfrentarme a un proyecto de larga duración utilizando esta herramienta. Esta es una aplicación muy completa donde se tocan diferentes apartados importantes. Las herramientas 3D se comunican con el servidor utilizando una API REST que se utiliza para gestionar la persistencia de datos del editor de puestos y para obtener información como los videos, carteles y documentos que tienen los puestos o la información de contacto de un expositor.

El mayor reto de las aplicaciones 3D ha sido el rendimiento. Nuestro objetivo es que la aplicación funcione en un navegador y, en la medida de lo posible, en equipos de bajas prestaciones. Por este motivo tuvimos que realizar un gran trabajo de optimización. La mejora más significativa la conseguimos al aplicar una técnica llamada "static batching", que consiste en juntar modelos 3D en un modelo más grande y así reducir en gran medida el número de llamadas al API gráfica, pero tambien utilizamos otras técnicas que nos ayudaron en menor medida.

Para más información podeis visitar la web del proyecto: feriasfedi.com

TFG

Trabajo Fin de Grado - Ingeniería Informática

En esta sección quiero hablar de mi Trabajo de Fin de Grado. Esta es la aplicacióm más grande que he desarrollado hasta ahora y me ha permitido aprender muchas cosas.

Descripción:

El trabajo consiste en desarrollar una aplicación capaz de recopilar datos sobre partidas del videojuego League of Legends, procesarlas y mostrar estadísticas que puedan ayudar a los jugadores a tomar decisiones. En este juego, la estrategia es fundamental; es muy importante que los jugadores elijan un personaje adecuado para cada partida y compren los objetos apropiados. La aplicación también facilita información a los jugadores sobre sus propias partidas, permitiendoles así saber en qué aspectos tienen que mejorar y ofreciendoles una herramienta para comparar sus aptitudes con la media de los jugadores de diferentes ligas.

La página web tiene 4 secciones:

  • Portada: se puede ver un resumen de las estadísticas más importantes y sirve como enlace para entrar en otras páginas.
  • Estadísticas: esta página consiste en un tabla con estadísticas detalladas de los diferentes personajes del juego, seleccionando una liga o una posición concreta si lo desean.
  • Página de personaje: se pueden ver estadísticas concretas de un personaje, eligiendo una posición y una liga. Algunas destacables son: el conjunto de runas más usado, el conjunto de objetos con más porcentaje de victoria, el orden de habilidades más común, etc.
  • Jugador: los jugadores pueden ver estadísticas personalizadas. Pueden ver cual es el personaje que mejor se les da, cual es la posición en la que consiguen mejores resultados, etc.
Mockup - Estadísticas de jugador
Mockup - Estadísticas de jugador
Arquitectura de la aplicación
Arquitectura de la aplicación

Arquitectura de la aplicación:

La aplicación sigue un diseño por capas, lo que hace que tenga una gran flexibilidad para implementar nuevas funcionalidades y además tenga una escalabilidad horizontal muy amplia. Como aplicación distribuida es más robusta que otro tipo de aplicaciones y el mantenimiento es más sencillo.

La aplicación tiene 3 capas y un módulo adicional de recopilación de partidas:

  • Módulo de recopilación: se encarga de obtener partidas del API de League of Legends, las procesa para darles un formato adecuado y las inserta en el modelo de datos. Está formado por un script de recopilación de partidas, que obtiene información constantemente del API del juego y la introduce sin procesar en una base de datos NoSQL; y por un script que recoge esa información, la procesa, le da el formato adecuado y la introduce en la tabla de hechos del modelo de datos.
  • Modelo de datos: se ocupa de la persistencia de los datos de la aplicación. Está formada por un gestor de bases de datos que se comunica con el servidor para suministrarle los datos. En esta aplicación, el modelo de datos solo recibe peticiones de lectura por parte del servidor.
  • Servidor REST: es el encargado de calcular las estadísticas y de exponer los resultados para que puedan ser consultados por el cliente web. El calculo de estas estadísticas se realiza con sentencias SQL ejecutadas contra la base de datos multidimensional. A esta información se le añaden direcciones de elementos estáticos alojados en Amazon S3 como imágenes o descripciones de objetos.
  • Aplicación web: es un cliente web cuya función consiste en pedir información al servidor REST y mostrarla con un formato amigable para los usuarios finales.

Base de datos multidimensional:

En este proyecto se usa una base de datos con un modelo dimensional porque está centrado en un historial de hechos: las partidas de League of Legends.

En los modelos dimensionales hay una tabla de hechos central que está relacionada con diferentes dimensiones. Un hecho es un suceso, una acción o una actividad de interés. En un hecho intervienen diferentes elementos y circunstancias, en este caso que el jugador juegue una partida es un hecho. Además, el usuario juega en unas determinadas circunstancias: juega en una posición, escoge un personaje concreto, compra unos objetos concretos, etc. Las circunstancias bajo las que se produce un hecho son las dimensiones.

La tabla de hechos representa un conjunto de datos cuantificables o métricas que permiten medir el hecho. Por ejemplo: el oro que consigue el jugador en una partida, el número de veces que se muere, el número de torres que destruye, etc.

Para entender mejor el funcionamiento de estas bases de datos, se suelen representar en forma de cubos OLAP. El cubo, en su totalidad, representa todas las entradas en la tabla de hechos. Cada subdivisión o "subcubo" que se puede ver en las figuras, representa las entradas de la tabla de hechos que tienen en común un valor en las 3 dimensiones.

Este diseño facilita el filtrado de datos, pudiendo fijar una o varias de las dimensiones para hacer "cortes" en el cubo y solo quedarse con un subconjunto de la tabla de hechos para calcular estadísticas.

La base de datos utilizada en este trabajo tiene muchas más dimensiones, que es dificil representar en una figura. Puedes ver el diseño de la base de datos completa aquí.

Tecnologías utilizadas:

MySQL, MongoDB, Django, Angular, Bootstrap, Python, TypeScript, HTML, CSS, SQL, Docker.