Turn Manager
Gestor de turnos basado en una cola de prioridad con soporte para efectos de estado (veneno, aturdimiento, buffs) que modifican el orden y las acciones disponibles en cada turno.
Unity · RPG · Prototype
Prototipo de combate por turnos inspirado en Expedition 33: sistemas de RPG clásico explorados desde la programación técnica.
Prototipo de juego de rol por turnos inspirado en Expedition 33 y otros referentes del género. El objetivo no era hacer un juego completo, sino entender en profundidad cómo se construyen los sistemas que hacen que este tipo de combate se sienta satisfactorio.
Más allá de la lógica de turnos, el proyecto sirvió para explorar áreas que normalmente quedan fuera del foco en proyectos de equipo: VFX, SFX, cinemáticas con Cinemachine y feedback visual que hace que cada acción tenga peso.
Durante el proceso de planificación y el posterior desarrollo, siempre se tuvo en cuenta la modularidad y escalabilidad de cada elemento introducido en el juego, con la intención de replicar la creación de sistemas que puede tener un estudio profesional.
Prácticamente TODO en este prototipo es editable y escalable, desde los diferentes ataques y habilidades hasta las cinemáticas de cada uno de ellos.
Showcase
Menú de Pausa
UI de combate
Decisiones de arquitectura y los sistemas que dan vida al proyecto.
Gestor de turnos basado en una cola de prioridad con soporte para efectos de estado (veneno, aturdimiento, buffs) que modifican el orden y las acciones disponibles en cada turno.
Arquitectura basada en ScriptableObjects donde cada habilidad define su coste, efectos, animaciones y VFX asociados. Permite añadir nuevas habilidades sin tocar código.
Cinemáticas de ataques y habilidades compuestas con Timeline, utilizando Cinemachine, VFX y SFX propios y de terceros.
Las fases del proyecto: desde la idea hasta el resultado final.
01 — Referentes
Empecé jugando Expedition 33 con una libreta, anotando cada microdetalle del combate: cuándo vibra el mando, qué hace la cámara en cada ataque, cómo cambia la música. Ese análisis definió las prioridades del prototipo.
02 — Core loop
Primero implementé toda la lógica de turnos con cubos de colores. Nada de arte, nada de efectos. Solo la mecánica desnuda para validar que funcionaba antes de añadir capas encima.
03 — Modularity
Mi idea principal era que cualquier elemento que ya existiese en el juego se pudiese crear sin abrir el editor de código. Por lo que cree herramientas dentro de Unity para lograrlo.
04 — Juice
Con la lógica estable, el foco pasó a VFX, SFX y cámara. Esa fase del proyecto es la que más tiempo lleva y la que más impacto tiene en cómo se percibe el combate.
Los obstáculos más interesantes del proyecto y cómo los resolví.
Los efectos de estado encadenados (un personaje envenado que aturde a otro en su turno de daño de veneno) creaban dependencias circulares difíciles de gestionar.
Separé la resolución de efectos en fases: primero se calculan todos los efectos del turno, luego se aplican en orden. Eso elimina las dependencias circulares y hace el sistema predecible.
Hacer cinemáticas generales para cada personaje de manera que se respetasen las posiciones del atacante y del objetivo y la distancia entre ellos.
Creé un sistema que utiliza dos placeholder, 'caster' y 'target'.
Al realizar una acción, se leen los parametros de esta y se sitúan los placeholder en sus respectivos lugares,
se calcula la distancia entre ellos y se normaliza, luego, mediante Signals se llaman a los eventos correspondientes (MakeDamage, Heal, ApplyBuff, etc).
Por ejemplo: se ejecuta una habilidad -> sale el proyectil inicial -> cuando la distancia recorrida del proyectil es un 90% de la total -> crea una explosión en 'target'.
El feedback visual y sonoro no es polish — es una parte central del diseño de combate. Un ataque que no se siente poderoso no es un problema de arte, es un problema de diseño.
Los ScriptableObjects son perfectos para datos de juego, pero hay que definir bien los límites de lo que hacen. Si empiezan a contener lógica, el sistema se complica rápido.
Para un juego de gran escala, crear sistemas que permitan la rápida creación y variabilidad de elementos es crucial para poder dar variedad rápidamente.