En este apartado, se va a hablar de como se ha realizado el proyecto a nivel de programación. Se detallan los pasos seguidos, todos los elementos implementados y aquellos que han sido descartados, especificando las razones de su exclusión. Pero, Antes de ello se va a realizar una introducción de algunos elementos de Unity:
7.1 Funcionamiento de Unity
Unity es un motor que integra una inmensa cantidad de herramientas para facilitar el desarrollo, herramientas que en cada versión se van puliendo y mejorando. En este caso, la versión utilizada para el desarrollo de videojuegos ha sido la versión 2019.3.14.
Para no eternizar la explicación de Unity, se ha realizado una clasificación de los elementos más relevantes a la hora de desarrollar y que serán los que más se referencien durante esta sección del documento, estos son:
- Escenas
- Assets
- Scripts
- GameObjects
- Componentes
- Prefabs
Fuente: https://koenig-media.raywenderlich.com/uploads/2011/08/unity14_diagram.png
7.1.1 Escenas
Las escenas son el elemento primario dentro del motor, todos los demás elementos quedan englobados dentro de ellas. Los proyectos están formados por diversas escenas que se van cargando o descargando.
La funcionalidad de las escenas es hacer de estructura, organizar el resto de los elementos dentro de ellas y guardar la información dentro de ellos. El resto de los elementos mencionados anteriormente y que veremos a continuación se incluyen en la escena.
Figura 49-Scene
Fuente: Elaboración Propia
7.1.2 Assets
Los assets son todos y cada uno de los elementos multimedia que aparecen en el juego, como los modelados, imágenes, audios, scripts.. .Con todos estos elementos es con lo que se crean las piezas del videojuego. Todos estos archivos están organizados en una estructura de carpetas.
Fuente: Elaboración Propia
Además de estos assets, creados por el usuario, existen una gran cantidad de estos agrupados en unos elementos llamados Packages, creados por otros usuarios o por la empresa a cargo del motor. Para este proyecto se han utilizado tanto assets propios como creados por la empresa y por algunos usuarios que ofrecían diversos de forma gratuita y sin ningún tipo de copyright.
7.1.3 Scripts
Los scripts son los ficheros de código fuente que contiene la lógica del videojuego. En Unity estos Scripts se pueden realizar tanto en C# como en JavaScript. En ambos casos, los scripts al generarse utilizan una serie de elementos de forma automática, así como herencias varias de scripts propios del motor. En concreto el más importante es el “MonoBehaviour”, el cual contiene las rutinas de ejecución básicas. El motor, a la hora de realizar la ejecución de estos scripts sigue un orden muy concreto dividido en varios pasos.
Figura 51- Scripts
Fuente: Elaboración Propia
7.1.4 Game Objects
Los GameObjects son los elementos más importantes del motor, estos elementos permiten visualizar los assets del título. Son los elementos que tienen una funcionalidad dentro del mismo, ya sea a nivel lógico, visual o sonoro. La mayor virtud de los GameObjects es que son capaces de incluir una gran cantidad de componentes.
Figura 52- Game Objects
Fuente: Elaboración Propia
7.1.5 Prefabs
Los prefabs son en realidad plantillas, se utilizan cuando un GameObject aparece muchas veces en la escena. Su funcionamiento es sencillo, ya que solo tenemos que convertir el GameObject en un prefab y empezar a crear múltiples instancias de este.
Figura 53-prefabs
Fuente: Elaboración Propia
7.1.6 Componentes
Los componentes son los elementos que dotan de diversas características a los GameObj ects, estos componentes pueden ser de muchos tipos. A continuación, se explican brevemente, posteriormente se explicarán en usos concretos.
- Cámara: Este componente convierte a cualquier GameObject directamente en un objeto de tipo cámara, no hay límites para el número de cámaras que pueden tener una escena.
- Luz: Componente que permite emitir luz. Dispone de multitud de opciones, pero en to the Heaven apenas hay trabajo luminoso.
Figura 55-Componente Luz
Fuente: Elaboración Propia
- Físicas: Dota de comportamientos basado en reglas físicas a los objetos, los elementos más importantes son los colliders, que sirven para determinar la zona de colisión de los elementos, aunque existen muchos otros elementos.
Figura 56- Collider
Fuente: https://koenig-media.raywenderlich.com/uploads/2011/08/unity14_diagram.png
- Audio: Convierte a los objetos en emisores de audio.
Figura 57- Audio Source
Fuente: https://koenig-media.raywenderlich.com/uploads/2011/08/unity14_diagram.png
- Mesh: Permite añadir a un GameObject objetos 3D más complejos. Los elementos como los materiales también se añaden en este componente.
Figura 58-Mesh
Fuente: https://koenig-media.raywenderlich.com/uploads/2011/08/unity14_diagram.png
- Animators: Componente que permite establecer la secuencia de animaciones del personaje. La imagen inferior muestra un animator simple
Figura 59-Animator
Fuente: https://koenig-media.raywenderlich.com/uploads/2011/08/unity14_diagram.png
- Scripts: Los scripts se asocian a un GameObject para darle e este algún tipo de comportamiento específico.
Figura 60- Script
Fuente: https://koenig-media.raywenderlich.com/uploads/2011/08/unity14_diagram.png
La implementación en el contexto del desarrollo de videojuegos se refiere a la fase en la que el diseño y la planificación se traducen en código y activos concretos que forman el juego:
1. Desarrollo del Código:
- Lógica del Juego:
- Implementación de las reglas y mecánicas centrales del juego.
- IA (Inteligencia Artificial):
- Codificación de comportamientos autónomos para personajes y enemigos.
- Controles:
- Programación de la interacción entre el jugador y el juego.
2. Diseño Visual y Gráficos:
- Modelado 3D y Animaciones:
- Creación de modelos 3D para personajes y objetos.
- Desarrollo de animaciones para personajes y acciones.
- Diseño de Entornos:
- Creación de fondos, terrenos y elementos del entorno.
3. Implementación de Niveles:
- Planificación de Niveles:
- Traducción del diseño conceptual de niveles a estructuras jugables.
- Diseño de Niveles:
- Colocación de obstáculos, enemigos y elementos interactivos.
- Iteración y Pruebas:
- Realización de pruebas para ajustar y optimizar los niveles.
4. Sonido y Música:
- Efectos de Sonido:
- Integración de efectos de sonido para acciones y eventos en el juego.
- Composición Musical:
- Creación e integración de la banda sonora del juego.
5. Integración de Componentes:
- Ensamblaje del Juego:
- Integración de todos los componentes, incluyendo gráficos, sonido y código.
- Pruebas de Integración:
- Verificación de que todos los elementos funcionen correctamente juntos.
6. Optimización:
- Rendimiento:
- Optimización del rendimiento para garantizar que el juego sea fluido.
- Recursos:
- Gestión eficiente de recursos como memoria y capacidad de procesamiento.
7. Pruebas Finales:
- Pruebas de Jugabilidad:
- Evaluación completa de la experiencia del jugador.
- Pruebas de Rendimiento:
- Verificación del rendimiento del juego en diversas plataformas y condiciones.
8. Implementación de Funcionalidades Online (si aplica):
- Multijugador:
- Desarrollo de funcionalidades multijugador y pruebas de red.
- Características Online:
- Implementación de características como tablas de clasificación, logros, etc.
9. Lanzamiento:
- Preparativos:
- Creación de materiales promocionales y de lanzamiento.
- Pruebas Finales Pre-Lanzamiento:
- Verificación final antes de la distribución del juego.
10. Soporte Post-Lanzamiento:
- **Actualizaciones:** - Desarrollo y lanzamiento de actualizaciones para corregir errores o agregar contenido. - **Interacción con la Comunidad:** - Respuesta a la retroalimentación de los jugadores y participación en la comunidad.
11. Documentación:
- **Documentación Técnica:** - Creación de documentación técnica para futuras referencias y mantenimiento. - **Manuales del Usuario:** - Elaboración de manuales y guías para los jugadores.