PORTFOLIO (Game developer)

¡Bienvenido/a !

Soy Dani, mi camino en el desarrollo de videojuegos con Unity comenzó en 2018. Desde entonces, mi pasión por esta industria ha crecido constantemente. Mi objetivo profesional es crear experiencias únicas y cautivadoras para los jugadores.

Después de mi experiencia como desarrollador independiente, estoy emocionado por la oportunidad de formar parte de un equipo en una empresa y contribuir a proyectos más grandes. Mi objetivo es combinar mi pasión por la creación de videojuegos con la colaboración en un entorno profesional para lograr resultados aún más impactantes.

Puedes leer este portafolio de dos formas, una más rápida y otra más lenta.

Más rápida

Solamente mira los vídeos desde aquí hacia abajo para tener una idea general de mi nivel sobre el desarrollo de videojuegos con Unity.

Más lenta

Si quieres saber cómo empecé y cómo he crecido hasta hoy, pulsa el siguiente botón para ir al final de esta página y comenzar a leer desde abajo hacia arriba.

Gracias

Ir al final de página

2023

Git/GitHub y Sourcetree

 

A pesar de que ya había usado Github en el pasado y creado más de un repositorio (ver aquí), no había integrado aún en mis herramientas diarias algo muy poderoso: Sourcetree.

 

Un programa realmente útil y necesario, sobretodo si trabajas en equipo, pero también una forma muy segura de trabajar y de controlar todos los cambios que suceden en un proyecto, tanto durante el desarrollo cómo en post producción y control de versiones.

 

He aprendido todo lo necesario para usarlo correctamente y de forma segura, tanto por aplicación cómo a través de la terminal.

Sourcetree se ha convertido en una herramienta indispensable para trabajar de forma segura y controlada en equipo.

2023

Shader Graphs y  3D Bounds Collisions

 

En el último trabajo presentado para Master Devs hemos creado un clon de Subway Surfers.

 

De este trabajo quisiera destacar el shader graph creado para curvar el escenario, dando así dinamismo al nivel, así cómo la detección de collisiones según en que «bound» del collider se produce la colisión, para así ejecutar las animaciones correctas en cada caso.

 

Ejercicio de honestidad: Incluso sabiendo cómo funcionan los shader graphs y habiendo creado más de uno, debo admitir que no soy ningún experto en shaders, es una parte bastante compleja del desarrollo, y al igual que los ECS, dominarlo requiere una cantidad de tiempo considerable, y siendo yo hasta el momento un solo game dev, debo enfocarme para especializarme, en mi caso, abogo y actúo en consecuencia con la programación y el montaje de proyectos y desarrollo general.

Parte 1: Showcase de cómo el personaje reacciona a las colisiones según el lado con el que choque.

Parte 2: Ejemplo del código creado; Calculamos en GetCollisions los «bounds» del collider para establecer los «lados» del mismo.

Parte 3: Finalmente, según el lado con el que hemos chocado, llamamos a la animación correspondiente.

Parte 1: Ejemplo del shader creado.

Parte 2: Script shader Controller con el que curvamos aleatoriamente el nivel cada 3 segundos.

Parte 3: Showcase de las curvaturas mediante el shader en runtime.

Gameplay del clon de Subway Surfers creado.

2023

Más generadores aleatorios y usando la imaginación para obtener cosas interesantes.

 

Tal vez no sea una sorpresa para muchos, pero en mi tiempo libre, también hago uso de Unity y C#.

 

Después de crear el primer generador de escenarios aleatorios, me dió la curiosidad de probar otras formas de hacerlo.

 

Buscando, encontré varias formas y finalmente opté por el clásico Algoritmo de «Random Walk» y el de la  Partición Binaria del Espacio (Binary Space Partitioning).

 

Ha sido una experiencia increíble que he disfrutado mucho. Ver a profesionales experimentados programando fue realmente hermoso. En este punto en el que me encuentro, puedo entender métodos y técnicas que nunca había utilizado antes, y se  ha vuelto más fácil absorber  nuevos y más complejos conocimientos. Finalmente, creé mi propio generador de escenarios aleatorios con todo el conocimiento que adquirí.

 

También, al construir un nuevo player, encontré por mi cuenta una forma interesante de animar personajes 2D, creando una especie de ilusión 3D, mediante un poco de C#.

Este generador de mazmorras aleatorias es muy diferente al último que te mostré.

Me estoy convirtiendo en un experto en este tema y puedo hacerlos altamente personalizables y escalables.

Con este código, automatizamos el proceso de construcción.

Creamos un código binario según los suelos alrededor de cada casilla, y cada código binario posible se asocia con un tipo de pared (superior, inferior, esquina, etc.).

De esta manera, después de completar la forma básica del mapa, todas las paredes correctas se seleccionan automáticamente según su posición.

Estas animaciones son una combinación del Mecanim Animator y un poco de programación en C#.

Todavía están en desarrollo, pero las posibilidades aquí son realmente interesantes.

Estás viendo cómo identificamos el punto de inicio (posición inicial del jugador) y el final (ruta de salida) del mapa, lo que se puede usar para determinar qué se debe instanciar en cada zona del mapa generado.

Cómo por ejemplo, en la zona amarilla, enemigos de bajo nivel, zona naranja de nivel medio, y en la zona roja los más peligrosos, esto se puede replicar para muchos otros elementos.

Todavía en desarrollo.

Chat GPT

Creo que esto merece una mención, ¿programar con ChatGPT? ¡Absolutamente! Como herramienta, me ayuda a trabajar de manera más eficiente. Por supuesto, es necesario verificar cada afirmación, pero ha demostrado ser bastante útil.

Sé cómo usarlo y escribir las indicaciones adecuadas para obtener lo que quiero de él.

2023

Comenzando a trabajar con un compañero en un nuevo proyecto.

 

Tener un equipo es mejor que estar solo.

 

Esa ha sido mi reflexión desde que construí mi primer juego. Afortunadamente, mientras trabajaba en Amazon, en Madrid, conocí a un desarrollador de Unreal Engine, también modelador y dibujante.

 

Él tenía un equipo, pero no todo el mundo es consciente de la implicación y la constancia requerida para acabar proyectos, finalmente se disolvió. Después de algunas conversaciones, comenzamos a colaborar para crear un juego con Unity.

 

El aprendizaje principal es el trabajo en equipo, y lo estamos haciendo muy bien.

 

El segundo aprendizaje está siendo un mejor proceso de desarrollo. Con todo mi nuevo conocimiento y comprensión de C# y Unity, nuestro proyecto ha alcanzado un nivel mucho más alto de calidad respecto a mis anteriores trabajos.

 

El proyecto aún está en desarrollo, y aunque espero encontrar un trabajo antes de su finalización (mis ahorros no son ilimitados), confío en que este proyecto mejorará mucho mi portfolio.

 

Desafortunadamente, el desarrollo de juegos es un proceso largo, y actualmente estoy trabajando arduamente para demostrar mi valía con lo que puedo mostrar por ahora.

 

Confío en que este portfolio proporcione una representación lo más cercana posible de mis habilidades y conocimientos.

Demostración de mecánicas de juego: nuestro personaje recoge objetos que alteran sus habilidades de disparo.

He desarrollado un Generador de Escenarios Aleatorios desde cero específicamente para este juego.

Optimización básica: cuando usemos parámetros del animator, ahorraremos llamadas a cadenas de texto si usamos Animator.StringToHash, más económico computacionalmente.

Continuando el proceso de prototipado de personajes, actualmente, centrados en refinar los comportamientos de los enemigos y los patrones de los jefes para mejorar la jugabilidad.

2023

ECS (Entity Component System)

 

Nunca me había atrevido a utilizar Entity Component System (ECS) hasta ahora.

ECS es un nuevo paradigma en Unity. Puedes encontrar una mejor explicación [aquí].

 

Trabajando en conjunto con Burst y el  C# Job System, ECS se puede utilizar para construir juegos más poderosos y ambiciosos. Es un sistema más complejo que la Programación Orientada a Objetos (OOP, por sus siglas en inglés) clásica, pero ofrece un rendimiento mucho mejor, ya que cada objeto se trata como una entidad que comparte datos para ser más eficiente.

 

He realizado algunas pruebas básicas con él, ya que convertirse en un experto en ECS requiere tiempo. Actualmente, necesito que mi tiempo sea rentable, lo que significa que cualquier cosa en la que trabaje debe generar ingresos si quiero seguir trabajando como desarrollador. Por lo tanto, espero seguir utilizando ECS en un futuro.

He logrado renderizar y mover con éxito 10,000 «objetos» en la pantalla simultáneamente, alcanzando una media de 125 FPS a lo largo del tiempo.

2023

Ballsvoid 1.1 & Ballsvoid PC

 

Dos cosas importantes sucedieron con mi juego Ballsvoid en 2023:

 

  1. Se actualizaron y mejoraron todos los gráficos, junto con algunas mejoras en el código, y se corrigieron algunos errores menores. La versión 1.1 de Ballsvoid fue lanzada para Android.

  2. Después de actualizar los gráficos, agregué algunas mecánicas nuevas al juego, como las piedras voladoras o los nuevos obstáculos móviles. Además, mejoré los entornos de Ballsvoid y convertí el proyecto en un juego para PC. Completé con éxito el proceso de publicación en Steam, y ahora Ballsvoid PC está disponible en Steam.

2022

Unity Certified User: Programmer

(Puntuación: 900)

 

El programa de Pro Game Developer me brindó la oportunidad de realizar el primer examen de certificación cómo programador de Unity, lo hice y obtuve una puntuación de 900/1000.

 

En el futuro, con una situación económica más estable, me encantaría obtener todas las siguientes certificaciones.

 

https://www.credly.com/badges/11df6c32-a90c-4cfe-9636-fa0e459615b9/public_url

2022

Comenzando a estudiar con Master Devs.

 

Decidí continuar mis estudios para adquirir más experiencia y desarrollar aún más mis habilidades como profesional. El equipo de Master Devs se destaca en el desarrollo de juegos.

 

El nombre del curso es «Pro Game Developer».

Este curso es super completo. He aprendido nuevos trucos, profundizado en C# y he explorado muchas funcionalidades de Unity, componentes, etc.

 

Dado el extenso contenido, destacaré algunas de las nuevas y valiosas habilidades que he estado aplicando en mi trabajo diario de desarrollo de juegos:

 

  • Repositorios de GitHub y control de versiones.
  • Persistencia de datos (StreamWriter/Reader, JSON, Binary Writer/Reader, Binary Formatter).
  • Delegados/Funciones/Eventos.
  • Prioridades de orden de ejecución.
  • Polimorfismo (override, abstract, etc.).
  • Clases de herencia.
  • Namespaces y Structs.
  • Configuraciones de URP/HDRP.
  • Optimización de código, música, assets y más.
  • Uso correcto y avanzado de parámetros para funciones y métodos.
  • Diversas formas de comunicación entre scripts.
  • Configuración correcta de proyectos 2D y 3D, personajes y entornos.
  • Sistemas de animación 2D y 3D con Unity en profundidad.
  • Más sobre shaders.
  • Tipos de conversión de datos.
  • Mecánicas 2D/3D.

Ciudad 3D construida con los assets de Master Devs

(Vista desde el suelo)

Ciudad 3D construida con los assets de Master Devs

(Vista aérea)

He aprendido a configurar  y resolver problemas adecuadamente en un avatar humanoide en 3D.

He obtenido valiosa información sobre optimización, en este ejemplo, en relación con los sonidos.

Prototipo de juego: Pixel Hero.

Minijuego: Catch the Fish.

2022

Proyecto desafío.

 

Me propuse crear un juego en dos días y finalmente, cerca de 30 horas después, creé «Happy Drop», un juego similar a Angry Birds.

 

Aprendizajes:

  • Aprendí varias formas de lanzar un pájaro (una gota de agua en este caso).
  • Aprendí más sobre los shaders de Unity.
  • Aprendí cómo funciona la monetización con anuncios (utilicé Adsense).
  • Aprendí cómo funciona la programación de animaciones de Spine Skeleton (de Spine Pro) en Unity.

Enlace a Happy drop en Google Play

2021/2022

Mi primer juego comercial.

 

Este fue un momento importante, quería ganar dinero con mis juegos y cometí aciertos y errores en el proceso.

Aciertos

  • Pude, una vez más, crear un juego completo para Android con los mínimos  bugs totalmente funcional.
  • Creé Cabranut Studio y todo lo relacionado con él (sitio web, redes sociales, canal de YouTube).
  • Comencé a ganar mis primeros €/$ con mis juegos.

Errores

  • No fui capaz de analizar el mercado para saber lo que demandaban los jugadores. En su lugar, me enfoqué en crear algo diferente (lo cual logré), pero no era lo que los jugadores querían. El juego resultó ser demasiado difícil para lo que el mercado de Android esperaba.
  • La forma de monetización también fue un error relacionado con mi conocimiento sobre el mercado en el que estaba eligiendo vender mi juego. Si pudiera empezar de nuevo, habría elegido otra forma de monetizarlo.

Aprendizajes

  • Aprendí bastante sobre el mercado.
  • Mejoré todos mis conocimientos sobre desarrollo de juegos en todos los aspectos necesarios del proceso.
  • Publiqué con éxito en Google Play Store, aprendiendo todo sobre  el proceso, incluyendo la programación adicional para configurar los logros y otros extras.
  • Me dí cuenta de mis propios errores y cómo los desarrolladores de juegos deben adaptarse a lo que funciona en cada mercado.

 

Enlace a Ballsvoid en Google Play

2020/2021

Esforzándome más y haciendo planes

 

En ese momento, ya había tomado la decisión de emprender una carrera en el desarrollo de videojuegos.

 

En consecuencia, continué mi viaje de aprendizaje a través de cursos mientras experimentaba activamente con numerosos prototipos y funcionalidades de Unity para adquirir valiosa experiencia.

 

Al mismo tiempo, comencé a diseñar mejor mi primer proyecto completo, pensando en practicar y aplicar todo lo que había aprendido.

 

Este fue un proceso largo en el que luché contra mis propios diseños, experimenté con varias funcionalidades y en ocasiones, deshice un trabajo significativo. Creo que tales situaciones son una parte común del camino de un desarrollador de juegos, y estas experiencias son muy valiosas para obtener conocimientos y aprender cómo evitar problemas similares en el futuro.

 

Finalmente, había creado mi primer juego completo para dispositivos Android, ¡y no era un juego, eran 5 juegos! Llamado «First Steps: Five Games in One», diseñado y desarrollado al 100% por mí.

 

El juego se lanzó algún tiempo después en Itch.io (también disponible [aquí]).

 

La lista de aprendizajes sería inmensa; puedes hacerte una idea echando un vistazo en los siguientes videos.

Nota: Sé que el arte no es bueno, pero hice lo que pude. Los gráficos eran simplemente algo que necesitaba; lo que quería era configurar un proyecto completo, complejo, funcional y sin errores.

 

 

Nota 2: Fue aquí, en 2021, cuando renuncié a mi trabajo en el sector logístico para dedicarme al 100% al desarrollo de videojuegos

(después de ahorrar algo de dinero, por supuesto).

God Thumbs es el 1º juego de los 5. Gameplay del intro  y del nivel 1

Gameplay God Thumbs – Nivel 2

Gameplay God Thumbs –  Nivel 3

Gameplay Capítulo 2 : On the Road  (el 2º juego de First Steps)

Gameplay Capítulo 3: At dungeon (3º juego de First Steps)

Gameplay Capítulo 4 : Ballsavoid (4º juego de First Steps)

Gameplay Capítulo 4: Random Cards (5º juego de First Steps)

Partidas personalizadas después de completas la campaña

2019/2020

Intento de completar un juego.

 

Estaba emocionado por todo lo que estaba aprendiendo y, como muchos principiantes, cometí el error típico de pensar que podía lograr algo más allá de mi nivel de habilidad en ese momento.

Me embarqué en un proyecto para crear un juego llamado ‘God Thumbs’ para Android.

 

Sin embargo, me encontré con un desafío significativo en el tercer nivel del juego, donde la escena tenía un número excesivo de luces. Cuando agregué este nivel al built, la mayoría de los teléfonos no podían ejecutarlo, y no estaba preparado para solventar  este problema.

 

No obstante, esta experiencia fue valiosa. Me impulsó a comenzar a crear mis propios assets y animaciones utilizando el software Inkscape, y me ayudó a obtener experiencia sobre problemas comunes que surgen durante el desarrollo de videojuegos.

 
 
 

 

El tercer nivel que mencioné tenía un componente de iluminación fundamental.

2019

Fundamentos del desarrollo de juegos y conceptos básicos de construcción.

 

Durante este período, me inscribí en un curso bastante completo en Udemy, que resultó ser una experiencia de aprendizaje muy significativa.

 

Algunos de los puntos clave de este curso incluyeron los aspectos fundamentales del desarrollo de juegos, sistemas de física y colisiones, sistemas de partículas y un conocimiento más profundo de la programación en C#. Adquirí técnicas esenciales y habilidades necesarias para crear juegos en 2D y 3D.

 

Aquí tienes una lista condensada de algunos de los temas cubiertos:

 

  • GameManager (Controlador de Estados)
  • Sistema de inventario
  • Configuración para objetos recolectables
  • Efectos y Coroutines
  • Barras de vida
  • Configuración de enemigos
  • Views in Game
  • Gestión de sonidos y efectos de sonido
  • Efectos de Parallax 
  • Gestión de escenas
  • Mecánicas del juego y del jugador, entre otros

Además, me aventuré a crear más entornos 3D, personajes y objetos, así como assets en 2D.

Desarrollé un script básico de controlador de cámara en primera persona, implementé minimapas y perfeccioné mis habilidades en la gestión de prefabs, entre otras cosas.

 

Quiero mencionar y pedir disculpas por la calidad de los videos, ya que estas grabaciones se realizaron con un móvil.

 

Nombre del curso: +100 horas: Curso completo de Videojuegos con Unity 2018 y C# (Por Frogames (Juan Gabriel Gomila)).

Enlace: Ya no está disponible.

Construí este entorno 3D (con PolyBrush) e implementé un controlador básico de cámara en primera persona.

Mini juego: Shadows jumping .

Durante este tiempo, leí el libro «Level Up» de Scott Rogers (500 páginas), lo cual me proporcionó una comprensión más profunda sobre el desarrollo de juegos.

2019

Modelando/UV maps/Texturas/Entornos 3D 

 

Este curso fue esencial para comprender cómo funciona el 3D. Aprendí cómo modelar (entornos, personajes y objetos), mapear, texturizar, usar Polybrush para crear entornos 3D y tuve mi primer contacto con animaciones en 3D y controladores de personajes en tercera persona, así como shaders, técnicas de optimización, un poco de post-procesamiento y utilicé Mixamo por primera vez.

 

Modelé, configuré y texturicé todo lo que ves en los videos (arma, personaje, entorno).

 

Nota: Lamento la calidad del primer video, es el único que tengo sobre este tema y fue grabado con un teléfono.

Nombre del curso: ProCore: Diseña Assets 3D para videojuegos con Unity 3D (Por Master Devs)

Enlace: https://www.udemy.com/course/probuilder-disena-assets-3d-para-videojuegos-con-unity-3d/

He creado, configurado y texturizado este entorno y personaje en 3D. También utilicé algunas técnicas de optimización en 3D, como puedes ver al final del video, donde la esfera cambia el número de polígonos dependiendo de cuan lejos estemos.

Arma futurista en 3D que modelé y texturicé.

Certificado del curso ProCore, con data del 28 de Mayo de 2019.

2019

Profundizando en Unity

 

Mis primeros juegos básicos en Unity, ambos del canal Academia de Videojuegos. El juego «Blocks!» fue mi primer diseño de nivel propio y un «juego completo», con sólo 3 niveles, totalmente funcional en dispositivos Android.

 

Por favor, no preguntes por la música, simplemente elegí algunas canciones al azar.

 

Nombre del curso: Taller – Unity desde cero (10 videos – Canal Academia de Videojuegos)

Enlace: https://www.youtube.com/watch?v=_AF2RXmP4pk&list=PLREdURb87ks05gLztvuSmRtKJ64pl3lyn

Los 2 minijuegos básicos comentados.

2018/2019

Profundizando en la programación C#

 

Creo que tuve suerte de encontrar este curso. Son 40 videos sobre programación en C#, repletos de ejercicios, y fué esencial para tener una buena base de conocimientos sobre C#.

 

Nombre del curso: Curso en español de C# para Unity – Nivel 1 (40 videos – Canal Academia de Videojuegos)

Enlace: https://www.youtube.com/watch?v=RMQKPIjcVP4&list=PLREdURb87ks31G-kvEoI0YBoUwJMfPkzg

El curso mencionado sobre programación en C# fué (y es) muy completo.

2018

Mis primeros pasos en Unity.

 

En mi primer contacto, aprendí sobre las versiones de Unity Hub, la interfaz de usuario, Canvas, navegación, animaciones 2D (Mecanim), configuración de proyecto y programé por primera vez en C# para mover este player, sumar puntos y destruir objetos con la espada.

 

Nombre del curso: Curso Español Unity 3D: de 0 a ti en Youtube (48 videos – Canal de Carlos Serrano Sánchez).

Link: https://www.youtube.com/watch?v=PDBassPMLyc&list=PLwx-aykMAAJn73zkPRBUH_XVSbfuXM8Gs

El primer proyecto que creé en Unity.

Introducción

Comencé a aprender Unity y programación en C# por mi cuenta, aprovechando los recursos que me ofrecía internet.

 

Ten en cuenta que algunos recursos visuales que te muestro pueden estar en un idioma diferente al que estás leyendo.

Volver al principio