Overcrowded Tycoon (Unity, C#, Javascript)
Overcrowded Tycoon es un juego F2P de género tycoon para dispositivos móviles en el que tenemos que gestionar un parque de atracciones. Tiene dos rasgos que lo diferencia de la competencia: comportamiento basado en físicas y los visitantes usan emoticonos con gran diversidad de emociones soportadas. Por tanto, aparte de las mecánicas ya conocidas de expansión, mejora y evolución de parque y atracciones, es clave cómo organizar el parque para optimizar el flujo de visitantes, manteniéndolos siempre lo más felices y cómodos posible, para aumentar el gasto que realizarán en el parque.
Está publicado en Google Play and Apple Store. En este proyecto, en el que estuve algo más de un año como senior/lead, mi trabajo fue:
- Refactorización de la base de código para utilizar un inyector de dependencias para Unity (Zenject).
- Estructurar el código para permitir aislar partes comunes y específicas que permitieran añadir varios parques, así como una configuración escalable.
- Refactorización del sistema de recompensas tratando de mejorar escalabilidad y matenibilidad.
- Integración de sistema de gacha y loot boxes con lógica específica.
- Integración de un BaaS (ChilliConnect) como plataforma de autenticación, gestión de cuentas y backup de datos de usuario.
- Implementación de módulos específicos en servidor (Javascript).
- Integración de librerías de terceros para autenticación: Facebook, Game Center y Google Play Games.
- Soporte de guardado en disco y remoto en varios dispositivos apuntando a la misma cuenta.
- Integración de plataforma de deeplink y referrals (Adjust) para recompensar a usuarios existentes el traer nuevos usuarios al juego.
- Implementación de técnicas de anticheat y analíticas.
- Implementación de features específicas de juego: parque basado en Halloween, reporte de juego, implementación de UI…
- Onboarding y supervisión de nuevos programadores en el proyecto.
- Soporte, mantenimiento y desarrollo desde etapas previas al soft launch hasta el lanzamiento global.
Evo Pop (Unity, C#)
Evo Pop es un juego de puzzle F2P para dispositivos móviles basado físicas y con progresión por niveles. En cada partida, nosotros podemos interactuar con nuestro grupo de «Evo», criaturas con unos poderes especiales, con el objetivo de eliminar a todos los oponentes (deborándolos, siendo de mayor tamaño que ellos, o sacándolos de la superficie del mapa) o consiguiendo que los nuestros se multipliquen siendo loz primeros en alcanzar un número determinado antes del final del nivel. Si no hay ganador cuando acabe el nivel, el que queda con más Evo al final gana.
Está publicado en Google Play y Apple Store. Mi labor en los meses que estuve en el proyecto fue la siguiente:
- Añadir 4 nuevos modos de juego:
- Acid rain: mantener a los Evo a cubierto para que no les afecte una lluvia ácida cada cierto tiempo.
- Drowning: el nivel del agua va subiendo/bajando de forma incontrolada, teniendo que mantener a los Evo alejados del agua.
- Faster: el mana se genera a mucha mayor velocidad en tiempos determinados, generando partidas más rápidas.
- Macedonia: el objetivo pasa a ser alimentar a los Evo con fruta que cae del cielo en posiciones y con tamaño aleatorio. Se sigue manteniendo la norma de que los Evo sólo pueden alimentarse de fruta de dimensiones más reducidas que ellos.
- Optimización del mapa hexagonal: aplicar técnicas de pooling vinculadas a posicionamiento de la cámara para permitir lanzar un mapa infinito.
- Integración de nuevos niveles.
- Soporte y mantenimiento de la aplicación.
Rosie’s Reality (Unity, C#)
Rosie’s Reality es un juego de puzzle familiar incluido como parte del programa de Apple Arcade. Dependiendo de la plataforma, al juego se puede jugar con mandos (todas las plataformas), pantalla táctil (iOS) e includo en realidad aumentada (iOS) usando Apple ARKit sobre Unity ARFoundation. Con modos para un sólo jugador y multijugador, el juego trata de crear una experiencia interactiva para disfrutar en familia. El objetivo es guiar al robot Rosie hacia la meta creando un camino con las casillas que Rosie ejecuta en un orden secuencial.
Mi trabajo principal en este proyecto fue:
- Crear la arquitectura de la aplicación, máquina de estados y módulos para crear código que funcionara multiplataforma para Apple TV, macOS e iOS (Unity y C#)
- Desarrollo de gameplay: comportamiento de personajes, npc, creación de niveles…
- Implementar servicio de backend y persistencia de datos con almacenamiento local y iCloud
- Implementar algunas partes de la interfaz de usuario e integración con librerías de realidad aumentada
- Gestionar diferentes inputs en plataformas: mandos, pantalla táctil y ratón
- Integración de servicios y herramientas para traducción de la aplicación
- Gestión de credenciales y publicar la aplicación en Apple Store Connect para Apple TV, iOS y macOS
- Profiling y test de la aplicación desde el inicio hasta entorno de producción
- Desarrollo de mecánica de gameplay añadida: modo runner
Plataforma Silverwall (C#, Unity)
Se trata de una base de código para cualquier aplicación móvil o web que sigue un patrón de arquitectura modelo-vista-controlador-adaptador (MVCA) separando así los datos y la lógica de negocio de la gestión de la interfaz de usuario y la propia interfaz gráfica. Su cometido principal es disponer de una base de código mantenible, escalable y de la mayor limpieza posible no dependiente del tipo de proyectos a realizar. Implementa el patrón SOLID de diseño de clases, facilitando así la extensión de comportamientos y flexibilidad de uso.
Otras entidades presentes en la plataforma son los servicios, que aglutinan la lógica de un controlador y un modelo para exponerse en una entidad única y empleables de forma independiente; y los módulos, que son entidades que contienen un MVCA con un comportamiento específico pero son reutilizables en diferentes contextos.
MundiJuegos (C#, Unity)
MundiJuegos es un juego F2P del género social casino multiplayer que actúa como contenedor de juegos de casino y de mesa: Bingo, Slots, VideoBingo, BlackJack, Poker, Parchís, Dominó… Al entrar por primera vez dispones de un avatar personalizable y economía compartida entre todos los juegos de la plataforma. Está publicado en Google Play, Huawei AppGallery, Apple Store, Facebook y también dispone de página web.
Mi labor en el desarrollo fue la siguiente:
- Integración de la aplicación en Huawei AppGallery: IAP, autenticación, Ads…
- Desarrollo de tareas y herramientas horizontales usadas por todos los juegos
- Implementación de tutoriales y mejora de FTUE
- Revisar proceso de automatización de builds con Unity Cloud
- Integración de AppsFlyer y uso de sistemas de métricas
- Soporte y mantenimiento de la aplicación y la plataforma para iOS, Android y WebGL
- Soporte para la integración de algunos juegos en la aplicación
- Generación de asset bundles empleando pipelines de Unity basados en Jenkins
- Panel social para juegos web: integración de chat, lista de jugadores y amigos
Monster Mansion Blast (Unity, C#, Javascript)
Monster Mansion Blast es un juego F2P de puzzle para dispositivos móviles hecho en Unity y publicado en Google Play y Apple Store. Ambientado en Halloween, nos adentramos en Monster Town donde conoceremos a divertidos personajes cartoon con temáticas y mecánicas variadas vinculadas a ir aumentando la dificultad y la técnica requerida en los jugadores. Además contiene elementos de customización como decorar una mansión encantada y torneos temporales para motivar a los usuarios.
Mi labor en el desarrollo fue la siguiente:
- Selección, integración y desarrollo sobre servicios externos: IAP, Facebook, PlayFab, CDN, Ads (Unity Ads y AdMob), Google Play Games, Game Center…
- Integración de un gestor de servicios de métricas: de desarrollo propio, Flurry y Unity Analytics
- Desarrollo e integración de un gestor de errores en tiempo de ejecución de la aplicación
- Gestión de credenciales en Google Play y Apple Store,
- Implementación de servicios de autenticación de usuario, encriptación y sincronización de datos cliente-servidor
- Programación y gestión del servidor en PlayFab con Javascript
Pirate Match Adventure (Unity, C#, Javascript, HTML5)
Pirate Match Adventure es un juego F2P de puzzle multiplataforma hecho en Unity y publicado en Google Play, Apple Store y Facebook. Ambientado en la temática pirata y con estilo cartoon, se trata de un juego con progresión basada en niveles con dificultad creciente. De forma progresiva, se introducen nuevas mecánicas a la hora de interactuar con el tablero tratando de conseguir los diferentes objetivos que se van proponiendo.
Mi labor en el desarrollo fue la siguiente:
- Desarrollo de la arquitectura de la aplicación, máquina de estados, servicios e integración con un motor de inyección de dependencias de código (Unity y C#)
- Selección, integración y desarrollo sobre servicios externos: IAP, Facebook, PlayFab, CDN, Ads (Unity Ads y AdMob), Google Play Games, Game Center…
- Integración de gráficos desarrollados por los artistas en el proyecto con gráficos estáticos y animaciones realizadas en Spine
- Desarrollo de la interfaz principal, interacción y programación de la animación de los personajes, así como algunos efectos gráficos como las transiciones de amanecer y anochecer
- Integración de servicio y herramientas para soporte de múltiples idiomas
- Integración de un gestor de servicios de métricas: de desarrollo propio, Flurry y Unity Analytics
- Desarrollo e integración de un gestor de errores en tiempo de ejecución de la aplicación
- Gestión de credenciales y publicación en Google Play, Apple Store, Facebook canvas y Facebook Gameroom
- Implementación de servicios de autenticación de usuario, encriptación y sincronización de datos cliente-servidor
- Programación y gestión del servidor en PlayFab con Javascript
The Great Whale Road (Unity, C#, Javascript)
The Great Whale Road es un juego para PC publicado en la plataforma Steam (recientemente retirado, Gameplay visible en vídeos de análisis en youtube) que mezcla RPG con bastante narrativa, gestión de recursos y combate por turnos. Está ambientado en la edad media de países nórdicos y tiene una progresión de la historia basada en eventos y campañas seleccionables por el usuario que, dependiendo de las decisiones que se tomen, modifican el transcurso del juego. Está diseñado para crecer en profundidad mediante ficheros JSON que componen cada una de las campañas de los personajes y la propia historia.
Colaboré en el desarrollo en los siguientes aspectos:
- Gestión de eventos dinámicos y bajo demanda de usuario
- Mejora e implementación de usabilidad de las cámaras y la interfaz en el combate
- Solución de bugs y condiciones de carrera para completar el ciclo de juego
- Documentación del proyecto mediante análisis de dependencias y de flujo
- Herramienta realizada sobre Google Spreadsheet que permitía exportar los datos que se disponían en columnas en una tabla a un formato JSON en función de una sintaxis (Javascript)
Our Bingo-Video Bingo (AS3, AIR, Java, PHP)
Our Bingo-Video Bingo es un juego F2P de simulación de casino multijugador y multiplataforma publicado en Google Play, Apple Store, Amazon AppStore y Facebook. Está dividido en 3 subjuegos: bingo clásico (multijugador), videobingo o salas temáticas (multijugador) y un módulo de bingo más rápido con características más similares a las tragaperras (para un sólo jugador). Está integrado dentro del portal de juegos Our.com y, por tanto, tiene unos datos de usuarios y economía compartida entre todos los juegos.
Mi trabajo en este proyecto fue:
- Implementación y desarrollo de un framework horizontal para reutilizarlo en todas las aplicaciones móviles que se iban a desarrollar en la empresa (AS3)
- Integración de servicios de terceros para plataformas móviles: IAP, Facebook, Notificaciones push… (AS3, Java, PHP)
- Soporte y validación de compras y recibos de IAP (AS3, Java y PHP)
- Integración de gráficos con Starling y generación de atlas en tiempo real en los dispositivos partiendo de gráficos vectoriales (AS3, AIR)
- Integración de subjuego (VideoBingo) con código compartido web y móvil con integración de motor de inyección de dependencias de código (AS3, RobotLegs)
- Integración de servicios internos ya disponibles previamente en la empresa: autenticación, métricas, gestión de errores…
- Integración de animaciones con Dragon Bones
- Análisis de dependencias y de flujo de módulos del proyecto
- Gestión de credenciales y publicación para Google Play, Apple AppStore, Amazon AppStore y Facebook
Our Vegas-Casino Slots y Our Slots-Tragaperras Casino (AS3)
Our Vegas y Our Slots son ambos juegos F2P de simulación de casino basados en tragaperras y publicados en Google Play, Apple Store, Amazon AppStore y Facebook. Tienen muchísimas temáticas y mecánicas distintas que los hacen atractivos para los usuarios. Our Slots está integrado y comparte datos con el portal de juegos Our.com mientras que Our Vegas es independiente.
- Soporte para uso del framework multiplataforma de la empresa
- Uso de herramientas, servicios y módulos horizontales a los proyectos de la empresa
Proyecto Integra2 UPV (Unity, C#, PHP, MySQL)
Titular de un proyecto para el desarrollo de un Sistema Tutor Inteligente (STI) que ayude a la selección de estudios y vinculación del mismo en el sistema de realidad virtual UPV 3D (modelado y mapeado 3d de todas las dependencias de la UPV: Universidad Politécnica de Valencia). El proyecto se compone de una parte cliente realizada en C# y Unity; mientras que la base de datos del servidor está gestionada en MySQL y PHP. El proyecto se divide en varias fases:
- Autenticación del usuario en el servidor
- Representación de forma visual y atractiva para el usuario de un cuestionario en el que, dependiendo de las opciones elegidas, se le define un perfil, se ponderan y ordenan las carreras universitarias afines a dichos valores
- Integración de las carreras seleccionadas en el mapa 3d de la universidad para que, mediante algoritmos A* y búsqueda de caminos, se optimicen su recorrido en la universidad para visitar las instalaciones de dichas carreras
- Navegación libre del usuario en el mapa 3d de la universidad tutorizada por el recorrido a seguir
IBV: Instituto de Biomecánica de Valencia (C++, Blender, Ogre3d)
En este instituto de investigación realicé proyectos de diversa índole como parte del equipo de desarrolo de sofware.
Desarrollé las siguientes características en algunos proyectos:
- Kinescan IBV 2011
- Animación 3d para el proceso de asignación y visualización de marcadores para procesos de fotogrametría
- Visualización 3d de plataformas de fuerza
- Representación 3d de movimientos humanos mediante la información de marcadores para el sistema de captura de movimiento
- NedCervical, NedLumbar y NedRodilla
- Representación 3d de movimientos humanos en base a la información aportada por marcadores
- Simulación de movimiento humano realista por cinemática inversa
- Integración de cámaras IP en el sistema de captura de movimiento
- Ensayo de conflicto visual
- Modelado, composición, programación y gestión de pruebas para medir la alteración del equilibrio a través de una simulación de realidad virtual
- Programación de unas gafas de visión estereoscópica (gafas de realidad virtual VUZIX)