7.2 Bloques de Trabajo

Sin valoraciones

7.2 Bloques de Trabajo

Para realizar el desarrollo, siguiendo la planificación realizada, se han establecido 3 bloques de objetivos según su prioridad y tiempo necesario estimado para su desarrollo.

videojuegos

Bloque 1: Aproximadamente cuatro semanas

  • Control del ciclo del juego y los eventos que suceden.
  • Movimiento y Pathfinding.
  • Puzle e ilusiones ópticas.

Bloque 2: Aproximadamente seis semanas

  • Diseño e implementación de nuevos niveles.
  • Implementación de la música.
  • Efectos visuales.

Bloque 3: Aproximadamente tres semanas

  • Diseño e implementación de IA básica.
  • Corrección de errores.
  • Implementación de Menús.
  • Diseño e implementación de nuevos niveles.
  • Bloque 1 Pathfinding

7.2.1 Bloque 1

Pathfinding

El pathfinding es un concepto que hace referencia a la búsqueda del camino más corto entre dos puntos, es algo muy utilizado en la industria del videojuego actual y que es importante en To the Heaven.

El objetivo de esta técnica en el juego es controlar el movimiento del personaje para que se desplace siguiendo únicamente el camino posible. Para ello se ha realizado la siguiente implementación:

El sistema funciona con varias clases y Scripts, el primer paso es el script Walkable. Este script realiza la tarea de definir que bloques son accesibles y cuando lo son, esto es muy importante, porque algunos puzles bloquean caminos hasta que son resueltos, su funcionamiento se explica a continuación.

Componente Walkable (Script)

En este componente se definen una serie de variables y funciones. En lo referente a las variables tenemos:

PossiblePaths: Lista de WalkPaths que define los caminos a los que el personaje puede moverse desde el bloque en el que se sitúa.

WalkPaths: Objeto que almacena las transformaciones y si está activo (bloque valido).

previousBlock: Transformación que almacena los datos del bloque inmediatamente anterior al bloque actual.

movingGround: Variable booleana que marca si el bloque en cuestión se verá afectada su posición debido a otros elementos del juego.

isButton: Variable booleana que marca si el bloque actual contiene un botón.

isStair: Variable booleana que marca si el bloque actual pertenece a unas escaleras

dontRotate: Variable booleana que marca si el bloque actual debe rotar.

Los métodos que implementa este componente son:

getWalkPoint: Devuelve un vector de posición con los valores del bloque.

OnDrawGizmos: Método que dibuja una serie de Gizmos de forma esférica en la escena. Los gizmos son, a grandes rasgos, elementos que nos ayudan de manera visual a identificar elementos en la escena, en este caso se utilizan para marcar los caminos accesibles desde cada bloque.

7.2 Bloques de Trabajo

Figura 61- Gizmos

Fuente: Elaboración Propia

La segunda parte del sistema de pathfinding se encuentra en el componente PlayerController, el cual utiliza diversos valores del componente Walkable para establecer el recorrido que debe realizar hasta el bloque seleccionado, si este es válido

Componente Player Controller (Script)

En este componente se definen una serie de variables y funciones. En lo referente a las variables tenemos:

Walking: Booleano que indicia si el personaje está caminando o no.

videojuegos

Current Cube: Transformación del cubo actual.

ClickedCube: Transformación del cubo objetivo.

Indicator: Transformación del elemento visual que aparece al pulsar en un cubo.

FinalPath: Variable de tipo lista que marca el camino completo por el que tiene que pasar el personaje para llegar al objetivo.

Los métodos que implementa este componente son:

Start: Inicialización y llamada al método RayCastDown

Update: Método complejo, en primer lugar, llama a RayCastDown y realiza una serie de comprobaciones para obtener el cubo sobre el que se encuentra el personaje. Posteriormente, si se ha detectado un input por parte del usuario sobre el escenario, se realiza un pequeño render de un efecto visual que nos indica el cubo sobre el que se ha pulsado.

FindPath: Genera una serie de listas en las que se encuentran almacenados los cubos siguientes y anteriores a los que se encuentra el personaje.

ExploreCube: Trabaja los datos de las listas creadas para que en cada iteración

BuildPath: Utiliza los datos generados en el método FindPath para generar el camino definitivo hacia el cubo pulsado.

FollowPath: Con todos los datos anteriores, si es necesario, se modifican los datos de las transformaciones para un correcto movimiento en el cubo actual.

RayCastDown: Utiliza el elemento Ray de Unity para calcular la posición actual del personaje.

OnDrawGizmos: Funcionamiento similar al Gizmos del componente Walkable.

GetBlend: Obtener el valor de la variable Blend

SetBlend: Cambiar el valor de a variable Blend.

Movimiento, Animación y gestión de eventos.

El movimiento del personaje, una vez el pathfinding este operativo, se encuentra funcionando en el script Game Manager.

Componente Game Manager (Script)

Player: Componente Player Controller.

PathConditions:

  • PathConditionName: String con su nombre.
  • Conditions: Objeto que contiene datos de transformaciones y ángulos.
  • Paths: Objeto que contiene, un objeto Walkable y un índice.

Pivots: Lista de Transformaciones.

ObjectstoHide: Vector de transformaciones de objectos que se van a ocultar.

SinglePath: Objeto que contiene el bloque caminable y un índice.

Los métodos que implementa este componente son:

Awake: Crea la instancia del Game Manager

Update: Método Clave, en este método se procesan los datos sobre los caminos generados y su estado, si están disponibles o no. Posteriormente, se maneja el input del jugador, para mover el jugador y los elementos interactuables del escenario, además, también se controla si el personaje está ya en movimiento para limitar los inputs y evitar los errores. Además, también se controlan la activación de ciertos elementos que activarán las rotaciones.

RotateRightPivot: Aplica una rotación a ciertos elementos.

CheckLevel: Método que controla la posición del jugador, si este llega una posición determinada, el final del nivel, finaliza este y carga el siguiente nivel.

La animación del movimiento se desarrolla conjuntamente en dos componentes que se relacionan entre sí. Un script y un animator.

Componente Player Animation (Script)

En este componente se definen una serie de variables y funciones. En lo referente a las variables tenemos:

Animator: Objeto de tipo Animator.

PlayerController: Objeto de tipo Player Controller.

Los métodos que implementa este componente son:

Update: Método que controla la activación del objeto animator en función de si el personaje se está moviendo o no.

Componente Animator (Animator)

El componente animator tiene un funcionamiento muy especial, consiste en realizar un diagrama de estados en los que se tiene que definir a que estados puede transicionar desde cualquier estado. En este caso los estados existentes son únicamente cuando el personaje está quieto o cuando está en movimiento.

7.2 Bloques de Trabajo

Figura 62- Animator
Fuente: Elaboración Propia

Cada estado se configura individualmente, las flechas indican los sentidos en los que puede viajar el controlador y además cada uno de ellos tiene una serie de parámetro configurables. Como la duración y el número de Frames que tiene la animación.

7.2 Bloques de Trabajo

Figura 63- Animator parámetros
Fuente: Elaboración Propia

videojuegos

Puzle e ilusiones ópticas

Los puzles e ilusiones ópticas surgen de la combinación de varios elementos, los cuales son:

  • La cámara.
  • El diseño de los escenarios.
  • Superficies especiales.
  • Activación de elementos.

Cámara

La cámara en To the Heaven se ha configurado de una manera muy específica para resaltar algunos elementos y para realizar las ilusiones ópticas, las configuraciones más importantes son las siguientes:

7.2 Bloques de Trabajo

Figura 64- Configuración Cámara

Fuente: Elaboración Propia

La posición, ángulo y demás parámetros se ha configurado así después de numerosísimas pruebas siendo estos valores óptimos.

Estos valores, en conjunto con el tipo de proyección escogida, ortográfica, permite engañar al jugador y ocultar los trucos tras el diseño.

El motivo de la elección de este tipo de proyección es el siguiente, en la vista de perspectiva podemos apreciar que los objetos tienen diferentes tamaños dependiendo de las distancias en la que se encuentran uno de otro; es otras palabras; en la vista Ortogonal u Ortográfica no podemos notar la diferencia de tamaño independientemente de la distancia entre los objetos, tal cual podemos apreciar en las siguientes imágenes

7.2 Bloques de Trabajo

Figura 65- Perspectivas
Fuente: https://www.desarrollolibre.net/blog/blender/diferencias-entre-proyeccion-perspectiva-y-ortogonal-ortografica#.X99X_9hKjyQ

Diseño de escenarios y Activación de elementos

Para generar los puzles y para que el usuario perciba la ilusión óptica, el aspecto real del escenario, no es como lo percibe el usuario. La posición de muchos de los elementos de los niveles no están realmente donde el usuario cree que están.

7.2 Bloques de Trabajo

7.2 Bloques de Trabajo

Figura 66- Engaño Visual
Fuente: Elaboración Propia

Como se puede observar en la segunda figura, varios elementos están fuera de posición, y es la cámara la que genera la ilusión. Esta posición variará también al activar elementos del escenario, como el botón rojo de la imagen.

videojuegos

Superficies especiales

Para poder ocultar la posición de varios elementos y que no se superpongan en la escena, en algunas superficies se han añadido planos cuyo componente de render se ha modificado para que solo se vean desde un lado.

7.2 Bloques de Trabajo

Figura 67- Efectos render
Fuente: Elaboración Propia

 

 

Para organizar y gestionar eficientemente el desarrollo de un videojuego, se pueden dividir las tareas en bloques de trabajo o módulos. Estos bloques representan áreas específicas del proyecto y pueden asignarse a equipos o individuos según sus habilidades y especialidades:

1. Diseño del Juego:

  • Concepto del juego: Definición de la premisa central, objetivos y mecánicas.
  • Diseño de niveles: Creación y planificación de los niveles del juego.
  • Narrativa: Desarrollo de la historia, diálogos y personajes.

2. Desarrollo del Motor del Juego:

  • Programación del motor: Creación y optimización del motor del juego.
  • Gráficos: Implementación y optimización de gráficos y efectos visuales.
  • Sonido: Integración de efectos de sonido y música.

3. Programación:

  • Lógica del Juego: Implementación de la lógica central del juego.
  • IA (Inteligencia Artificial): Desarrollo de comportamientos autónomos para personajes y enemigos.
  • Controles: Implementación y optimización de los controles del juego.

4. Diseño de Niveles:

  • Planificación de Niveles: Diseño conceptual de cada nivel.
  • Arte del Nivel: Creación de los elementos visuales y ambientales de cada nivel.
  • Pruebas y Ajustes: Iteración y optimización de niveles basada en pruebas.

5. Arte y Diseño Visual:

  • Diseño de Personajes: Creación de conceptos y modelos de personajes.
  • Diseño de Entornos: Creación de fondos, paisajes y elementos del entorno.
  • Animaciones: Creación de animaciones para personajes y objetos.

6. QA (Control de Calidad):

  • Pruebas de Jugabilidad: Evaluación y prueba exhaustiva de la jugabilidad.
  • Pruebas de Rendimiento: Verificación del rendimiento del juego en diferentes plataformas.
  • Identificación de Errores: Documentación y seguimiento de errores y problemas.

7. Sonido y Música:

  • Efectos de Sonido: Creación e integración de efectos de sonido.
  • Composición Musical: Creación y composición de la banda sonora del juego.

8. Integración y Pruebas Finales:

  • Integración de Componentes: Ensamblaje final del juego con todos los elementos.
  • Pruebas Finales: Evaluación completa del juego antes del lanzamiento.
  • Optimización General: Ajustes finales para mejorar el rendimiento y la estabilidad.

9. Lanzamiento y Post-Lanzamiento:

  • Preparativos para el Lanzamiento: Creación de materiales promocionales, planificación de marketing, etc.
  • Soporte Post-Lanzamiento: Manejo de actualizaciones, corrección de errores y respuesta a la retroalimentación de los jugadores.

10. Documentación:

markdown
- *Documentación Técnica:* Creación de documentación técnica para facilitar el mantenimiento y futuras actualizaciones. - *Manuales del Usuario:* Elaboración de manuales y guías para los jugadores.

Compártelo en tus redes

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest

Valore este curso

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestra web. Si sigues utilizando este sitio asumimos que estás de acuerdo. VER