Sobre mí


Soy Vicent Bellés, nací en Castellón de la Plana el 6 de agosto de 1994.

He cursado el Grado en Ingeniería informática en la Universitat Jaume I de Castelló, del 2012 al 2016, con la especialización de Ingeniería del Software y con un Minor en Computer Vision en la universidad NHL de Leeuwarden, Países Bajos.

Mi primera experiencia en el campo de la programación fue cuando tenía 14 años y mi hermano me introdujo en el lenguaje de programación C. Dos años más tarde amplié mis conocimientos en C gracias a una asignatura de bachillerato, y fue entonces cuando decidí que quería estudiar informática.

Desarrollé el primer proyecto significativo de la carrera, Droids of Mordor, durante el primer semestre de tercer curso. Con la creación de este mini videojuego, mi interés en el sector de los videojuegos aumentó considerablemente, ya que me di cuenta de lo que se podía llegar a conseguir con esfuerzo.

De 2016 a 2018 estuve trabajando en el desarrollo de herramientas informáticas para mejorar la eficiencia en los procesos de gestión de la información en la empresa Transbellés, S.L., sin dejar de lado algunos proyectos personales.

Del 2017 al 2018 cursé el Máster en Creación de Videojuegos de la Universitat Pompeu Fabra. Donde, junto a un equipo multidisciplinar, desarrollamos Momentum.

Tras la finalización del Máster empecé a trabajar en Mirada, como desarrollador de Android, programando principalmente en Kotlin.

Proyectos


Droids of Mordor

Objetivo

Proyecto individual para la evaluación final de la asignatura de Gráficos y multimedia del primer semestre de 3º curso del Grado en Ingeniería Informática. El objetivo del proyecto era crear un entorno 3D con cierta interacción utilizando únicamente C y GLUT.

Como reto personal decidí darle mucha importancia a la interacción con el entorno y el resultado final fue el desarrollo de un mini videojuego.

Tecnologías

La programación del videojuego la realicé en C++, utilizando la librería de OpenGL GLUT y la de carga de imágenes DevIL.

Tanto la cámara, las físicas, el mapa, el fuego y la mayoría de las figuras son implementaciones propias (a excepción de los droides, las naves y el árbol).

Descripción

Cámara

La cámara sigue de forma predeterminada al personaje principal a una distancia ajustable, también tiene la opción de desacoplarse del personaje y volar libre por el mapa para poder analizar mejor el mundo.

La implementación de la cámara fue lo que más tiempo invertí ya que necesité mucho tiempo de investigación y aprender sobre coordenadas polares para poder hacer mi propia implementación.

Mapa

El mapa está creado a partir de una imagen en escala de grises, donde el color de cada pixel corresponde a una altura en cada punto del mapa.

Una vez se obtienen los vértices a partir de la imagen, se calculan las normales para poder aplicarle efectos de iluminación.

Personaje principal R2-D2

Este personaje puede desplazarse por el mapa, saltar, disparar y activar un escudo. Está formado por figuras de revolución, los prismas también son figuras de revolución de 4 caras.

Los disparos pueden colisionar con los enemigos para eliminarlos. El escudo se puede activar en cualquier momento y evita recibir disparos de los enemigos, pero también impide que pueda disparar

Enemigos

Hay dos tipos de enemigos: los androides y los droidekas. Modifiqué las figuras para descomponerlas, cargar las diferentes partes por separado y poder articularlas para caminar.

Los enemigos tienen unos puntos de vida y, al recibir un disparo, durante un instante, cambian de color en función de la vida que les falte.

Los androides mueren al tercer disparo, su punto de reaparición se encuentra en las naves y la torre y vuelven a reagruparse a su posición del escuadrón. Al acercarse te persiguen durante una distancia, cuando te pierden la pista vuelven a su posición.

Los droidekas mueren al quinto disparo. Te persiguen por todo el mapa y tienen un escudo que evita todo el daño, lo pueden activar al disparar, pero no lo pueden activar al moverse, por lo que para matarlos hay que separarse de ellos y dispararles desde lejos. Sus puntos de reaparición son las naves y la torre.

Sistema de partículas

Para poder realizar el efecto del fuego y el de la propulsión de R2-D2 al saltar, implementé un sistema de partículas donde cada partícula es un elemento bidimensional enfocado siempre de forma perpendicular a la cámara y tiene un tiempo de vida, un color en función de su vida, una velocidad y dirección.

Otros elementos

Las plantas que se pueden ver por el mapa están formadas partir de dos elementos bidimensionales colocados perpendicularmente de forma que les da sensación de volumen.

La torre con el ojo también está formada a partir de figuras de revolución, el ojo se mueve por todo el mapa con su haz de luz, pero no produce ningún efecto al tocarte.

Conclusiones

Este es el proyecto de la carrera, sin contar el de final de grado, al que más tiempo he dedicado, pero con el que más he aprendido. Invertí muchas horas investigando para lograr reproducir la idea que tenía en la cabeza.

Este proyecto fue mi introducción en el mundo del desarrollo de videojuegos, sobre todo en cuanto a la programación, ya que no hice uso de ninguna librería para darle físicas al mundo ni para animar los elementos.

Tengo pensado rehacer el proyecto, con las tecnologías que conozco ahora y hacerlo multijugador.

Ditch Inspection

Objetivo

El objetivo de este proyecto era crear una simulación de la automatización de la detección de los niveles de vegetación y suciedad sobre el agua de los canales, para poder detectar los puntos que necesitan ser limpiados y evitar que dejen de fluir.

El proyecto es el resultado de 6 meses de trabajo de investigación en la universidad NHL de Leeuwarden, Países Bajos, cursando un Minor en Computer Vision (curso de especialización de 30 créditos), durante mi estancia con beca Erasmus, y que se materializó como proyecto final de grado.

Tecnologías

Para realizar la simulación utilicé el entorno de proceso de imágenes VisionLab. Este entorno permite la automatización de funciones de procesado de imágenes mediante un lenguaje de script que permite llamar a funciones programadas en C++. También utilicé Visual Studio para la extensión de algunas funciones no implementadas.

Descripción

En el video se muestra un dron volando sobre unos canales holandeses. Estas imágenes de muestra forman parte del conjunto del dataset analizado para la detección del canal y sus elementos.

El proceso iterativo que realiza el dron es el siguiente:

  • Elección y posicionamiento de las imágenes en función de la posición del dron
  • Seleccionar el área que cubriría la cámara del dron
  • Binarización de la imagen
  • Obtención del ángulo del canal
  • Cálculo de la nueva posición del dron

La binarización de la imagen consiste en la detección y de los elementos del canal, que son: el agua y la vegetación o suciedad. Este proceso requiere de operaciones matriciales en las que, en función del color y de la forma, discierne si es canal, vegetación o elementos externos al canal.

Bicicas (no oficial)

Objetivo

El servicio público de bicicletas de Castellón Bicicas no tenía una aplicación oficial donde poder ver la disponibilidad de las bicicletas en los diferentes puntos de préstamo. Había una aplicación no oficial pero que no era de mi agrado. Decidí entonces hacer la mía propia.

Meses más tarde salió la aplicación oficial de Bicicas. Al analizarla y preguntar a otros usuarios, me di cuenta de que no estábamos muy satisfechos con su funcionamiento, iba lenta y no se mostraba correctamente en todos los dispositivos, pero tenía alguna funcionalidad que resultaba bastante útil. A partir de la comparación con la aplicación oficial, mejoré mi aplicación y la subí a la Play Store.

Mi aplicación no tiene ningún vínculo comercial con el servicio público de bicicletas de Castellón Bicicas.

Tecnologías

La aplicación está destinada a dispositivos con  sistema operativo Android, por lo que está desarrollada en Java. También he utilizado librerías como  RxJavaRxAndroid y  OkHttp para las peticiones http.

Disponible en Google Play

BrickedSky

Objetivo

Se trata de un juego sencillo para Android creado con Libgdx que permite probar tu agilidad oculo manual.

El objetivoprincipal del proyecto era probar nuevas tecnologías, así como implementar el proceso de monetizar la aplicación.

Tecnologías

El juego está programado en Libgdx, framework de Java multiplataforma y está publicado en la Play Store de Google.

Disponible en Google Play

Hackathon Castellón 2016

Objetivo

Un Hackathon es un concurso, destinado principalmente a informáticos, en el que se plantean diferentes retos a resolver durante el concurso.  En el concurso de Castellón dispusimos de 3 días para resolver un reto.

Participamos un grupo de 5 compañeros de la carrera y el reto que elegimos consistió en crear una aplicación que ayudase al usuario a conocer una ciudad de forma interactiva. Para ello, desarrollamos una aplicación multiplataforma sincronizada con una base de datos remota.

Tecnologías

Desarrollamos la aplicación con Ionic 2, que utiliza el framework Angular 2 y permite la creación de aplicaciones multiplataforma mediante Typescript.

Esta aplicación tiene integrado el mapa de Google, para poder mostrar al usuario la ciudad.

Utilizamos Firebase como base de datos remota para poder guardar la puntuación del jugador y los retos, de forma que se pueden actualizar, añadiendo nuevos retos o incluso añadiendo nuevas ciudades donde pueda participar el usuario.

La aplicación está publicada en la Play Store de Google.

Disponible en Google Play

Descripción

El usuario tiene que crearse una cuenta o iniciar sesión con su cuenta de Google.

La aplicación tiene como vista principal el mapa de la ciudad y tiene marcadores con los retos disponibles.

Hay diferentes tipos de retos, en algunos tienes que contestar preguntas sobre cosas de interés de la zona del reto, en otros deberás encontrar un código QR en la zona y escanearlo para completarlo.

La aplicación está preparada para varias ciudades, el usuario puede seleccionar en qué ciudad quiere participar y va acumulando puntos al superar los retos.

Datathon Cajamar 2017

Objetivo

En el Datathon de Cajamar elegimos un reto que consistía en la visualización de datos. El objetivo del reto era crear una aplicación para mostrar de forma interactiva los datos generados por las compras con tarjeta de los clientes de Cajamar de la provincia de Valencia en comercios de la ciudad de Valencia. Participamos 3 compañeros de la carrera.

El dataset contenía el código postal del cliente o clientes y del comercio, el sector del comercio, la fecha, la franja horaria, el importe y el número de operaciones.

Para obtener mejor puntuación en el reto, era necesario añadir fuentes externas de datos. Añadimos la climatología y la población por código postal de la provincia de Valencia.

Tecnologías

Las tecnologías utilizadas son Tableau, un software de visualización de datos, que nos permitió generar un dashboard completo con mapas y filtros para la visualización del dataset.

Para enriquecer el dataset con datos externos utilizamos Knime, que además nos permitió realizar un análisis de los datos.

Descripción

El dashboard permite filtrar sobre dos mapas, el de la izquierda para los clientes y el de la derecha para los comercios, todos los datos que contenía en el dataset y los que integramos nosotros. Los mapas también sirven de filtro, pudiendo seleccionar el o los códigos postales de interés para analizar.

El proyecto generado con Tableau lo publicamos mediante Firebase en formato web de forma pública, mostrando además un tutorial de cómo utilizar todas las funciones del dashboard.

Momentum

Momentum

Objetivo

Videojuego desarollado durante en el Máster en Creación de Videojuegos de la Universitat Pompeu Fabra con un equipo multidisciplinar utilizando un motor propio.

Tecnologías

Tanto el motor como el videojuego están desarollados en C++ y DirectX. Más información del proyecto en noego.gamejolt.io