Proyecto desarrollado en Unity como práctica de programación multimedia y desarrollo de videojuegos. El repositorio contiene una aplicación/juego 3D por turnos con escenas, personajes, interfaz, audio, animaciones, lógica de combate, sistema de movimiento sobre tiles y configuración orientada a exportación multiplataforma.
El proyecto se encuentra en fase funcional de desarrollo. Incluye varias escenas configuradas, lógica de juego implementada en C#, recursos multimedia integrados y ajustes de proyecto para plataformas de escritorio y móviles.
- Unity 2022.3.18f1.
- C# como lenguaje principal de programación.
- TextMeshPro para textos e interfaz.
- Unity UI / uGUI para botones, imágenes, indicadores y pantallas.
- Sistema de escenas de Unity.
- Físicas y raycasts de Unity para selección, movimiento y detección.
- ScriptableObjects para configuración de estadísticas de personajes.
- Audio, animaciones, prefabs, materiales y recursos 3D integrados en el proyecto.
- Configuración de proyecto compatible con módulos Android, iOS, XR, vídeo, audio y UI incluidos en Unity.
Este proyecto permite trabajar contenidos relacionados con el desarrollo multimedia y móvil:
- Análisis y uso de un motor de juegos como entorno de desarrollo.
- Integración de recursos gráficos, modelos, texturas, audio y animaciones.
- Desarrollo de interfaces de usuario interactivas.
- Gestión de escenas, estados de juego y flujo entre pantallas.
- Configuración de proyecto para distintos dispositivos y resoluciones.
- Uso de módulos de Unity para Android, iOS, audio, vídeo, UI, XR y renderizado.
- Adaptación de una aplicación multimedia a un entorno exportable a plataformas móviles.
Assets/
Resources/
Animator/
Audio/
Characters/
Scenes/
Main Menu.unity
Intro.unity
Tutorial.unity
Battle.unity
Scripts/
CharacterStatsSO.cs
CharacterStatsSnapshot.cs
CombatManager.cs
NPCMove.cs
PlayerMove.cs
TacticsMove.cs
Tile.cs
TurnManager.cs
UIManager.cs
Packages/
manifest.json
ProjectSettings/
ProjectSettings.asset
ProjectVersion.txt
El proyecto tiene configuradas varias escenas en el build:
Main Menu.unity: escena de menú principal.Intro.unity: escena o secuencia introductoria.Tutorial.unity: escena de aprendizaje o explicación inicial.Battle.unity: escena principal de combate.
El proyecto incluye un TurnManager encargado de organizar las unidades en función de su velocidad, iniciar y finalizar turnos, actualizar rondas y comprobar condiciones de fin de partida.
La clase TacticsMove calcula tiles seleccionables, detecta el tile actual mediante raycasts y permite mover unidades por el escenario. También incluye lógica de salto, caída, movimiento horizontal y búsqueda de caminos.
El movimiento utiliza una lógica de pathfinding tipo A*, con valores g, h y f en los tiles. El sistema tiene en cuenta distancia, altura y coste adicional por diferencia vertical.
El CombatManager gestiona ataques normales y ataques de tipo Pierce. El sistema aplica daño, actualiza la vida de los personajes y elimina unidades derrotadas de la cola de turnos.
Las estadísticas se definen mediante CharacterStatsSO, usando ScriptableObjects para configurar:
- Nombre.
- Movimiento.
- Altura de salto.
- Velocidad de movimiento.
- Velocidad de turno.
- Daño básico.
- Rango de ataque.
- Vida.
- Tipo de ataque.
- Ataque en altura.
- Capacidad de vuelo.
También se utiliza CharacterStatsSnapshot para guardar y restaurar estadísticas iniciales al reiniciar la partida.
El UIManager gestiona:
- Botones de movimiento, ataque, pasar turno, reinicio y menú principal.
- Indicadores de vida.
- Indicadores visuales de turno.
- Texto de ronda.
- Pantalla de fin de juego.
- Secuencia introductoria con imágenes y música.
La clase NPCMove permite que los enemigos busquen el objetivo más cercano, calculen camino hacia él, se muevan y ataquen cuando están en rango.
El proyecto incluye configuración de Unity para exportación y compatibilidad con plataformas móviles:
- Android incluido en los módulos del proyecto.
- iOS incluido en la configuración de PlayerSettings.
- Orientación automática habilitada.
- Configuración de pantalla completa en Android.
- Resoluciones por defecto y escalado configurados.
- Versionado de aplicación.
- Parámetros de SDK mínimo de Android.
Aunque el desarrollo principal se ha realizado en Unity, la arquitectura del proyecto permite analizar problemas propios de aplicaciones móviles, como resolución, orientación, empaquetado, módulos de plataforma, rendimiento gráfico, recursos multimedia y configuración del dispositivo objetivo.
Marco Monzón Monzón
Repositorio desarrollado como parte del trabajo práctico relacionado con programación multimedia, dispositivos móviles y desarrollo de videojuegos con Unity.