En esta sección de la serie de tutoriales, te familiarizarás con los conceptos básicos de Unreal Editor, entre otros, cómo crear un nuevo nivel, colocar y transformar objetos, trabajar con distintos modos de visor y usar el esquematizador para mantener la organización.
También aprenderás a dar forma a tus ideas utilizando figuras simples mientras aplicas conceptos de diseño de niveles como la escala, la verticalidad, la oclusión, el contraste y las líneas de guía. Todas estas son herramientas que influyen en cómo los jugadores se mueven y experimentan un nivel.
Al final, tendrás un espacio jugable que establecerá las bases para la jugabilidad que crearás en las siguientes secciones del proceso.
Antes de empezar
Asegúrate de haber instalado el iniciador de Epic Games y Unreal Engine.
Para seguir este tutorial, debes comprender los conceptos básicos de las barras de herramientas, los paneles y los controles del visor de Unreal Editor. Si quieres más información, consulta el resto de páginas de la documentación de Unreal Engine para nuevos usuarios antes de empezar este tutorial:
Esboza tus ideas
Antes de empezar a compilar en el editor, dedica entre 10 y 20 minutos a escribir o esbozar tus ideas en papel. Esta iteración inicial puede ayudarte a:
Pensar los conceptos y ritmos básicos del jugabilidad del nivel.
Comprobar si tus ideas de jugabilidad fluyen bien y encajan dentro del alcance que buscas antes de invertir tiempo en desarrollarlas en el editor.
Recordar tus ideas entre sesiones de trabajo.
Puedes abordar este diseño inicial de distintas formas, como por ejemplo con mecánicas de jugabilidad o con el diseño de nivel. Elige o combina técnicas de diseño de nivel en función del tipo de juego que vayas a crear y de tus preferencias personales. No existe un enfoque único y correcto para el diseño de juegos. Lo que importa es el resultado. Los juegos en los que el diseño de nivel y la jugabilidad se apoyan mutuamente son más cohesivos y crean una experiencia más inmersiva y atractiva para el jugador.
Una de las técnicas, el mapeo de nodos, consiste en dibujar un diagrama abstracto y simplificado de círculos y líneas para mostrar los distintos espacios del nivel, lo que ocurre en ellos y cómo el jugador puede pasar de un espacio a otro. El mapeo de nodos se centra en el ritmo del jugabilidad, las ramificaciones y las elecciones del jugador. Un nodo representa una acción o un evento del jugador. El evento puede inspirar la forma de ese espacio.
Este tutorial utiliza una serie de salas para mostrarte cómo implementar elementos de jugabilidad comunes, como restringir al jugador con puertas cerradas y llaves, crear obstáculos que puedan dañar al jugador o añadir plataformas e interruptores para superar esos obstáculos. Así es como esbozamos este tipo de idea de nivel en nodos:
Otra técnica consiste en dibujar un esbozo visual de una vista descendente, lateral u ortogonal de la disposición real del nivel. Aquí, la atención se centra en el diseño de nivel, no en la jugabilidad. La forma de los espacios del nivel puede inspirar acciones de jugador y eventos.
Así es como esbozamos para nuestro nivel del tutorial el diseño de la habitación y el pasillo en un primer momento:
También puedes diseñar con verbos de jugador o con las acciones que el jugador es capaz de realizar en tu juego, como saltar, correr, esconderse, agarrar, crear, disparar, atacar cuerpo a cuerpo o hablar. Esto cambia el foco del mundo a lo que el jugador está haciendo. Esta forma de pensar puede ayudarte a aumentar la interacción, la diversión y el ritmo de tu nivel.
Mientras diseñas los espacios de tu nivel, piensa dónde puedes añadir oportunidades para usar esos verbos de jugador de forma significativa. Los verbos pueden influir en el diseño del espacio. Por ejemplo, si tu verbo es saltar, podrías añadir un hueco que cruzar, algunas plataformas, un espacio vertical o un enemigo o un peligro que sobrepasar saltando. Varía estos verbos de un espacio a otro para mantener la jugabilidad fresca y con buen ritmo.
Sea cual sea el enfoque que adoptes a la hora de diseñar un nivel y su jugabilidad, siempre hay que tener en cuenta lo que hace el jugador.
Cómo crear el proyecto
Para empezar, crea un nuevo proyecto con la plantilla First Person. Las plantillas incluyen recursos prefabricados, como mallas, objetos de jugabilidad y un personaje jugable, útiles para acelerar el diseño de nivel.
Una malla es un modelo 3D o el conjunto de polígonos que crean un modelo 3D. Una malla estática es un modelo 3D que se utiliza para crear un objeto que se puede trasladar, rotar y escalar en un nivel.
Si has empezado con el tutorial del proyecto de programación, puedes seguir usando tu proyecto en este.
Para crear un nuevo proyecto en primera persona, sigue estos pasos:
Abre Unreal Editor. En el explorador de proyectos de Unreal Engine, ve a la categoría de proyecto Games y selecciona la plantilla First Person.
Mantén todos los valores por defecto del proyecto y selecciona Arena Shooter como variante. Las variantes de plantilla incluyen recursos adicionales y un nivel de muestra que corresponde a ese género de juego.
Ponle nombre a tu proyecto. Este tutorial utiliza el nombre de proyecto
AdventureGame.Haz clic en Crear para abrir tu nuevo proyecto en Unreal Editor.
Tu proyecto se abre con el nivel de muestra Lvl_FirstPerson abierto en el visor.
Inicia un nuevo nivel
Para empezar a hacer tuyo este proyecto, crea un nuevo nivel (a veces llamado mapa), explora su contenido, configura cómo se inicia el juego y reprodúcelo por primera vez.
Si mientras trabajas en Unreal Editor se produce un comportamiento inesperado (por ejemplo, que los recursos o actores no aparezcan o no se actualicen), prueba a reiniciar el editor. Dado que Unreal Engine depende en gran medida del almacenamiento en caché, a menudo estos problemas se resuelven reiniciando.
Para crear un nuevo nivel, sigue estos pasos:
En la barra del menú de Unreal Editor, ve a Archivo y selecciona Nuevo nivel.
En la ventana Nuevo nivel, selecciona Básico y haz clic en Crear. Te ayudará a empezar con un suelo, un cielo, el generador de jugador y la luz ambiental.
Ve a Archivo > Guardar nivel actual.
Crea una estructura de carpetas para almacenar los recursos que crearás a lo largo de esta serie de tutoriales:
En el panel izquierdo de la ventana Guardar nivel como, haz clic derecho en la carpeta Contenido y selecciona Nueva carpeta.
Asigna a esta carpeta el nombre de tu proyecto. Este tutorial utiliza
AdventureGame.Haz clic derecho en tu nueva carpeta y selecciona Nueva carpeta.
Llama a esta carpeta
Designery selecciónala.
Introduce un nombre para tu nivel y haz clic en Guardar. Este tutorial utiliza
Lvl_Adventure.
Explora el panel esquematizador y el panel de detalles
Fíjate en el esquematizador para ver una lista de todos los objetos de tu nivel. A estos objetos también se les suele llamar actores.
En la carpeta Lighting, hay un conjunto de objetos que controlan la iluminación del ambiente y de fondo en tu nivel. Para ver cómo contribuye cada uno a la apariencia de tu nivel, pasa el cursor sobre cada uno y haz clic en el icono del ojo para alternar su visibilidad en el visor.
La posición de estos objetos de nivel de iluminación no importa, por lo que puedes apartarlos si quieres.
El nivel también contiene una malla de suelo y un punto de aparición PlayerStart que controla dónde comienzan el nivel los jugadores.
En el esquematizador, haz clic en DirectionalLight. Esta luz está configurada para actuar como el sol (o la luna) que ilumina tu nivel y proyecta sombras. En el panel de detalles, puedes ver y cambiar las propiedades de la luz, como el color o la intensidad, y ver cómo se actualizan los resultados al instante en el visor.
Si no encuentras un objeto en el visor, en el esquematizador, haz clic en ese objeto y pulsa F para cambiar la posición del visor y centrarte en él.
Si quieres más información sobre cómo personalizar la iluminación de tu nivel, consulta la sección Iluminación del entorno.
Vista previa de la jugabilidad en el visor
El visor muestra una vista previa del nivel. En la barra de herramientas del visor, haz clic en Reproducir para reproducir tu nivel dentro del visor. A menudo también se denomina modo Reproducir en el editor (PIE por sus siglas en inglés). Con el modo PIE, puedes probar cómo funciona tu proyecto en tiempo de ejecución desde Unreal Editor (ya sea dentro de un visor o en una nueva ventana).
Tiempo de ejecución hace referencia al periodo de tiempo en el que un proyecto se ejecuta en la plataforma de destino, como tu dispositivo o una consola.
Cuando reproduzcas en el nivel, aparecerás en la posición de PlayerStart.
Después, haz clic en el visor y usa WASD o las teclas de las flechas para moverte y la barra espaciadora para saltar.
Mira hacia abajo y verás que tu juego usa un personaje jugable en primera persona predeterminado.
Pulsa Mayús+F1 para volver a tu cursor y clic en Detener (o pulsa Escape) para salir del modo de juego.
Para reproducir una versión completa e independiente de tu juego, haz clic en los tres puntos que hay junto a los controles de modo de juego y selecciona el modo Juego autónomo. Esto reproduce tu juego en una nueva ventana y simula una versión acabada y exportada del juego, lo que te permite probar los menús de la IU y las pantallas de carga, cambiar la escala de resolución y la entrada del ratón. Sin embargo, este modo se sigue ejecutando en el editor. Para compilar y ejecutar un archivo versión temporal .exe del paquete del juego, selecciona el modo Inicio rápido.
Utiliza este menú para volver al modo de juego en el visor.
Si Unreal Editor va lento en tu ordenador, haz clic en el botón de herramientas de rendimiento y escalabilidad situado cerca de la esquina superior derecha del visor, ve a Escalabilidad del visor y selecciona unos ajustes de calidad inferior. O bien, cerca de la parte derecha de la barra de herramientas del visor, haz clic en Iluminación para abrir el menú Modo de visualización y selecciona Sin iluminación. Esto solo afecta a Unreal Editor, no a tu proyecto final.
Cambia el nivel de inicio
Usa la configuración del proyecto para cambiar el nivel que se carga al abrir tu proyecto en Unreal Editor y al reproducir tu juego terminado.
Para cambiar el nivel inicial por defecto de tu proyecto, sigue estos pasos:
En el menú principal del editor, ve a Editar > Configuración del proyecto.
En la sección Proyecto del panel izquierdo, selecciona Mapas y modos.
En la sección Mapas predeterminados, cambia Mapa de inicio del editor y Mapa predeterminado del juego por tu nuevo nivel. El editor abre el mapa de inicio del editor al abrir tu proyecto, y Unreal Engine carga el mapa predeterminado del juego al reproducir un archivo
.exeindependiente o empaquetado de tu proyecto.Cierra Configuración del proyecto.
Haz un esbozo de tu mapa
Ahora que ya tienes un concepto, un nuevo proyecto y un nuevo nivel, puedes empezar a diseñar en Unreal Editor.
Antes de pensar en el diseño finalizado y los detalles pulidos, es importante que te concentres en la disposición y la jugabilidad de tu nivel. Esta fase de diseño se suele denominar esbozar (o pruebas con caja gris) y consiste en construir los espacios básicos preliminares de tu nivel con formas simples que representen paredes, caminos y obstáculos funcionales. Es como hacer un esbozo a lápiz en un lienzo antes de pintarlo.
El esbozado es una herramienta que te ayuda a iterar y probar ideas rápidamente para decidir qué funciona y qué no en tu diseño. Recuerda que este no es el producto final; este proceso debería ser rápido para poder dedicar más tiempo a las partes del juego con las que los jugadores interactuarán.
Esbozar tu nivel te ayuda a:
Empezar a diseñar la jugabilidad sin tener que esperar a tener el diseño gráfico acabado.
Descubrir los problemas de diseño antes.
Experimentar e iterar rápidamente sin arriesgarte a tener que rehacer los recursos gráficos.
Probar la escala, las líneas de visión y la fluidez de la jugabilidad sin perder tiempo en detalles innecesarios en este momento.
Estás creando la versión más simple y navegable de tu nivel, solo con los obstáculos compatibles con la jugabilidad. En lugar de en la apariencia, céntrate en la sensación que da el espacio, si es divertido y si es compatible con tus objetivos de jugabilidad. Como estás usando formas básicas, si algo no funciona, puedes eliminarlo y probar algo nuevo.
Puedes incorporar opciones tanto de diseño artístico como de disposición en tu esbozo, siempre que sean funcionales y compatibles con la jugabilidad. Los juegos exitosos usan ambos tipos de elementos de diseño para crear espacios atractivos e inmersivos.
| Añade a tu esbozo | No añadas a tu esbozo | |
|---|---|---|
Opciones de diseño de la disposición |
|
|
Opciones de diseño artístico |
|
|
Decide la escala
Antes de que abarques demasiado esbozando tu nivel, es importante que establezcas la escala y las medidas estándar del juego. Esto incluye decidir el de tamaño de estructuras comunes en tu nivel, tales como:
La altura de los objetos que se pueden saltar, escalar, los puntos de cobertura, los pasillos y las habitaciones.
El tamaño de puertas, ventanas y pasillos.
El objetivo de ajustar la escala de tu nivel es hacer que el nivel sea coherente, natural y sencillo de entender. Tus esbozos también crean la escala para los artistas de entorno.
En Unreal Engine, trabajarás con unidades en centímetros, y 100 centímetros equivalen a 1 metro.
Haz que dé una sensación natural
Las características del espacio deberían resultar creíbles en función del tamaño del jugador. Sin embargo, ten en cuenta que el realismo total no siempre se traslada bien a los juegos. Por ejemplo, una puerta de 0.8 m de ancho puede parecer espaciosa en la vida real, pero en un juego puede resultar demasiado estrecha o impedir que la cámara la atraviese sin que se produzca una superposición. Busca un equilibrio entre realismo y diversión que sea creíble para tu tipo de juego.
La escala depende del tamaño del jugador, de la sensación que debería dar un espacio y de la compatibilidad con la jugabilidad. ¿El espacio es un pasillo estrecho y claustrofóbico o una habitación abierta y aireada? ¿Tiene que adaptarse a un jugador, a varios jugadores o a un encuentro con el enemigo?
Cuando decidas la escala de los espacios de tu nivel, ten en cuenta estas medidas medias:
| Objeto de nivel | Medida estándar |
|---|---|
Personaje humano | 1.8 m de altura, saltas 0.5 m de altura. |
Pasillos | 2-3 m de ancho, 3-4 m de alto. Las cámaras en tercera persona requieren pasillos más anchos para que quepa una cámara. |
Puertas | 1 - 1.5 m de ancho, 2 m de alto. |
Paredes | 4 m de altura. |
Recuerda que esto son solo pautas. El diseño y la escala de tu nivel deberían ajustarse a las necesidades de tu experiencia de jugabilidad.
Haz que sea sencillo de entender
La escala de las funciones de un nivel debe ser fácilmente comprensible y predecible para el jugador. Cuando el jugador se acerca a un objeto, debería saber de un vistazo si hay que agacharse junto a él para cubrirse, saltar sobre él, trepar o si es infranqueable.
Por ejemplo, aquí tienes una estructura corta que representa un pequeño muro de un jardín como línea principal para guiar al jugador, pero no para saltarlo. Mide 0.6 m de alto (10 cm más que la altura de salto del jugador).
Cuando el jugador corre hacia este muro, es lo suficientemente bajo como para que piense que saltarlo y puede que se frustre si no es así. En su lugar, podríamos sustituir el muro por una serie de paneles enrejados altos que permitan una visibilidad similar a la del muro y, al mismo tiempo, comuniquen al jugador de que no puedes pasar por allí.
Mantén la coherencia
Para que tu nivel parezca creíble y sea compatible con la creación de mundos, mantén el tamaño de las funciones comunes en todo el entorno.
Sin embargo, puedes añadir algo de contraste para llamar la atención del jugador o provocar una emoción. Por ejemplo, hacer que una puerta sea más grande que todas las demás puede dar una pista de su importancia.
Si tienes muchos diseñadores trabajando en un nivel o proyecto, la estandarización de las medidas evita las incoherencias entre los recursos (lo que evita perder tiempo rehaciendo el trabajo) y ayuda a crear una experiencia cohesiva para el jugador.
Mientras diseñas el nivel, crea un cubo del tamaño de un jugador o una malla de personaje en cada espacio como referencia de la escala del jugador. Para añadir una malla estática de jugador, ve a Contenido > Characters > Mannequins > Meshes dentro del explorador de contenido y arrastra un SKM_Manny_Simple al visor.
Los objetos parecen más pequeños en tercera persona porque la cámara está más atrás, por lo que puede que tengas que aumentar la escala de los espacios respecto a un juego en primera persona. Una buena pauta es multiplicar la escala por 1.5 (un aumento del 50 %) cuando trabajes con una cámara en tercera persona.
Piezas modulares frente piezas completas
A la hora de esbozar los espacios, puedes crear paredes, suelos y techos a partir de una malla larga o duplicar varias mallas para conseguir un diseño más modular.
Esta elección depende de las preferencias y del tipo de espacio; podrías utilizar piezas modulares en pasillos y salas cuadradas, y piezas más grandes en salas con formas extrañas o espacios naturales.
Crear piezas modulares tiene las siguientes ventajas:
A muchos diseñadores de nivel les resulta más rápido y predecible duplicar piezas modulares en lugar de cambiar el tamaño de cada pieza.
Puede resultar más sencillo cambiar un par de piezas modulares del esbozo en lugar de una sola pieza más grande.
Puedes crear una amplia variedad de espacios minimizando la cantidad de recursos que los artistas deben crear.
Los tamaños estandarizados mantienen todo alineado en la misma cuadrícula y escala, lo que mejora el rendimiento al reducir la cantidad de materiales y mallas únicos necesarios.
Mediante prácticas de diseño modular, crearás una paleta de formas de malla que podrás utilizar como bloques de creación para ensamblar los espacios de tu nivel. Sin embargo, estas piezas son solo una base; siempre puedes añadir formas únicas cuando lo necesites.
Añade tu primer objeto
Utiliza los recursos de muestra incluidos en el proyecto para empezar a experimentar con la escala y esbozar el nivel.
Los recursos son archivos que creas o importas a tu proyecto y se almacenan en el explorador de contenido. Los recursos pueden ser mallas 3D, imágenes 2D, archivos de sonido y otros.
En Unreal Engine trabajas con recursos y actores:
Los recursos son archivos que creas o importas a tu proyecto y se almacenan en el explorador de contenido.
Los actores son cualquier objeto que se coloca en un nivel.
A menudo, los actores son instancias de un recurso, es decir, una copia individual de ese recurso colocada en el mundo.
Para añadir tu primera malla estática al nivel, sigue estos pasos:
En el árbol de recursos del explorador de contenido, ve a la carpeta Contenido > LevelPrototyping > Meshes.
Haz clic en
SM_Cubey arrástralo al visor gráfico cerca de PlayerStart. Esto crea un actor de malla estática en el nivel que usa el recursoSM_Cube.
El recurso del explorador de contenido y las instancias de objeto de nivel de ese recurso tienen una relación padre-hijo. Los cambios en el recurso padre SM_Cube afectan a la malla en tu nivel, pero los cambios que hagas en las instancias individuales del objeto SM_Cube en el nivel no afectarán al recurso SM_Cube en el explorador de contenido.
Este bloque mide 1 m x 1 m x 1 m y tiene un material de cuadrícula para que puedas ver sus dimensiones a simple vista. Las líneas oscuras del material crean una cuadrícula de 1 m, mientras que las líneas claras del material del suelo crean una cuadrícula de 0,1 m. Las líneas de luz de las superficies verticales son cuadrículas de 0,2 m.
En Unreal Engine, un material es un recurso compuesto por texturas 2D que cambia el aspecto de la superficie de una malla. Los materiales son los que hacen que una malla parezca de metal, de madera o tenga simplemente un color liso.
Para cambiar el tamaño del bloque de 1 m y convertirlo en una pieza de pared, sigue estos pasos:
En el visor, haz clic en la malla de bloque para seleccionarla.
En la barra de herramientas del visor, haz clic en el botón de escala (o pulsa R). El gizmo de escala aparecerá en el bloque.
Haz clic y arrastra los tiradores del gizmo para hacer que el bloque sea más fino, largo y alto. El grosor de tus paredes dependerá de lo que construyas. Una casa puede tener paredes más delgadas, mientras que una fortaleza tiene paredes más gruesas. 10–30 cm es un buen punto de partida.
Al cambiar el tamaño de la forma, mira el panel de detalles y fíjate en cómo cambian sus propiedades de escala. También puedes cambiar la posición, la rotación y el tamaño de un objeto en el panel de detalles.
Para hacer que la forma sea más grande o más pequeña en varias dimensiones a la vez, pasa el cursor sobre el triángulo entre los tiradores rojo y azul hasta que queden resaltados en amarillo. A continuación, haz clic y arrastra.
Para escalar las tres dimensiones a la vez, haz clic y arrastra la esfera blanca del centro del gizmo.
Para ajustar la posición de tu pared, sigue estos pasos:
En la barra de herramientas del visor, haz clic en el botón de trasladar (o pulsa la tecla W).
Haz clic y arrastra los controladores verde o rojo para mover la forma en cualquier dirección por el suelo.
Para mover la forma en dos direcciones a la vez, coloca el cursor sobre el cuadrado entre las flechas verde y roja hasta que se resalten en amarillo, luego haz clic y arrastra la forma por el suelo.
Duplica y alinea objetos para crear una habitación
Para hacer una habitación, hacen algunas paredes más, así que continúa.
Para crear rápidamente otra pieza de pared, selecciona tu malla de muro, mantén pulsada la tecla Alt y usa trasladar gizmo para mover la malla. Esto mantiene el original en su lugar y crea un duplicado.
Duplica y mueve piezas de pared para construir tu primera habitación. Asegúrate de que haya suficiente espacio para añadir un obstáculo que aparecerá en otro módulo de este tutorial.
Pulsa Ctrl para seleccionar varias piezas a la vez y, a continuación, mantén pulsado Alt mientras rotas o trasladas para duplicar la selección completa.
A medida que muevas los objetos, verás que se acoplan a lo largo de una cuadrícula invisible. La cuadrícula y las herramientas de acoplamiento a la cuadrícula te ayudan a colocar, alinear y escalar objetos con precisión en el nivel. La cuadrícula garantiza que todo se acopla perfectamente y mantiene la misma posición y tamaño.
Los espacios creados por el hombre se adhieren más a un patrón de cuadrícula que los espacios naturales.
En la barra de herramientas del visor, puedes utilizar los menús de acoplamiento de cuadrícula para seleccionar un tamaño de cuadrícula (o incremento de acople) distinto para la traslación, la rotación y la escala. Por defecto, el de tamaño de la cuadrícula para los objetos en movimiento es de 10 unidades o 10 cm.
Los incrementos de ajuste grandes son ideales para diseñar habitaciones y paredes, mientras que los tamaños de cuadrícula pequeños son útiles para afinar la colocación de objetos. Por ejemplo, cambia el acoplamiento de cuadrícula de rotación a 45° o 90° para que los objetos se alineen en ángulo recto.
Si quieres más información sobre todas las opciones de acoplamiento, consulta la sección Herramientas y ajustes de acoplamiento de la barra de herramientas del visor.
Otra forma de garantizar que tus objetos están alineados es usar una vista de estructura alámbrica 2D. Cerca de la parte derecha de la barra de herramientas del visor, haz clic en Perspectiva para abrir las opciones de la cámara y selecciona Arriba.
Estas vistas de tipo ortogonal tienen por defecto el modo de visualización Estructura alámbrica, que muestra los bordes y la estructura poligonal de la geometría de tu nivel. También puedes ver la cuadrícula en este modo. A medida que esboces el nivel, cambia a la vista superior o lateral cada cierto tiempo para comprobar la alineación de las mallas. Cuando hayas terminado, vuelve al modo Perspectiva.
Algunos objetos, como las luces grandes, las mallas del cielo o los volúmenes de activación, pueden estorbar al seleccionar objetos en un visor de estructura alámbrica 2D. Para ocultar estos objetos, usa el menú de habilitadores de visibilidad de la barra de herramientas del visor para ocultar esos tipos de objetos. También puedes usar el esquematizador para ocultar objetos individuales.
Establece el punto de inicio
Ahora que conoces como empieza un nivel, vuelve a colocar la posición PlayerStart en la posición en la que el jugador debería empezar y asegúrate de que mira en la dirección correcta.
Para cambiar la posición de inicio y la dirección del jugador, sigue estos pasos:
Haz clic en el objeto PlayerStart. Usa la opción de trasladar gizmo para moverlo hasta donde quieras que generar el jugador en tu primera habitación.
Pulsa la tecla Q para pasar al modo Selección y eliminar el gizmo. La flecha azul del objeto PlayerStart muestra la dirección en la que el jugador mira cuando se inicia el juego.
Usa la barra de herramientas de transformación para cambiar al gizmo de rotación y rotarlo para controlar hacia dónde mira el jugador cuando empieza a moverse.
Añade una puerta
Más adelante, en este tutorial, aprenderás a crear un blueprint para una llave que puede establecerse en distintos colores que abrirán puertas de su mismo color. Para configurar el nivel para esta función, añade algunas puertas.
Para añadir y cambiar el tamaño de un blueprint BP_DoorFrame, sigue estos pasos:
En el esbozo, haz espacio para tres puertas distintas.
En el explorador de contenido, ve a Contenido > LevelPrototyping > Interactable > Door.
Arrastra
BP_DoorFramea tu nivel. Este objeto no es una simple malla estática comoSM_Cube; es un blueprint, es decir, un recurso visual con funciones o comportamientos adicionales programados. En el visor, verás que está rodeado por un volumen de activación y tiene un widget de tamaño de puerta. En el siguiente módulo de este tutorial, aprenderás más sobre los blueprints.Haz clic en el widget Door Size. Esto fuerza la activación del gizmo de traslación, pero puedes utilizarlo para cambiar el tamaño de la puerta igual que harías utilizando el gizmo de escala.
Haz clic en la malla de la puerta y usa el gizmo de traslación para mover la puerta hasta uno de los huecos de tus paredes. Es posible que tengas que ajustar las paredes o el ancho de la puerta para que todo encaje.
Ajustes de precisión en la vista de estructura alámbrica superior.Repite estos pasos para añadir dos puertas más a tu habitación.
Construye un pasillo
A continuación, añade un espacio transversal con un pasillo que conecte tu primera sala con la segunda.
Hay varias formas de diseñar un pasillo. En primer lugar, ¿qué tal si lo hacemos recto?
Esto no es muy interesante, pero podría ser efectivo si queremos que el jugador se vea presionado por ataques a distancia mientras avanza por el pasillo, o si queremos que se anticipe a lo que ve al final del pasillo. Aquí tienes un ejemplo de pasillo recto con un toque más interesante gracias a obstáculos por los que el jugador tiene que pasar por debajo o trepar:
¿Y un pasillo con una curva?
Ahora hay algo de oclusión y una revelación cuando el jugador dobla la esquina. La oclusión se produce cuando la línea de visión del jugador está total o parcialmente bloqueada. Puedes utilizar la oclusión para dirigir la atención del jugador dentro de un nivel. Por ejemplo, hacia cosas que se pueden recoger o el progreso en el nivel, u ocultar la visibilidad de un enemigo para producir un sobresalto.
¿Y si añadimos una ventana en el pasillo y en la habitación de al lado?
Esto hace que cruzar el pasillo sea un poco más interesante. Mostrarle al jugador un adelanto de lo que le aguarda en su destino genera anticipación y muestra la recompensa que obtendrá por invertir tiempo en esa ruta.
¿Y si añadimos un poco de verticalidad? Esto significa añadir diferencias de altura a tu nivel con elementos como escaleras, colinas, plataformas y zonas escalables.
Los elementos verticales pueden hacer lo siguiente por tu jugabilidad:
Añadir variedad a tus espacios y hacer que recorrerlos y explorarlos sea más interesante.
Conceder a los jugadores una ventaja táctica (si están arriba) o una desventaja (si están abajo).
Mostrar al jugador adónde irá a continuación (por ejemplo, contemplando unas vistas).
Controlar el acceso del jugador (por ejemplo, dejarse caer a un espacio sin poder volver atrás o subir a un espacio solo si se encuentra una cuerda).
Para añadir escaleras a tu esbozo, arrastra una SM_Ramp (desde Contenido > LevelPrototyping > Meshes) hasta el nivel y modifica su tamaño. No te olvides de comprobar la escala al hacerlo.
Este pasillo es curvo para añadir oclusión sin ser demasiado cerrado y es más ancho para dar cabida a dos rutas distintas, cada una de las cuales ofrece la oportunidad de escabullirse y usar cobertura. Añadir opciones como esta hace que el jugador sienta que tiene cierta capacidad de decisión.
Prueba pronto y con frecuencia
Asegúrate de reproducir el nivel y comprueba cómo te sientes con las métricas y la escala antes de seguir construyendo.
Prueba las líneas de visión del jugador para comprobar que has configurado correctamente la oclusión. Un espacio puede tener buena pinta desde el visor, pero las pruebas de juego podrían revelar que el jugador puede ver algo que no debería, como el punto de aparición del otro equipo.
Cuando tu nivel crezca y quieras previsualizar una sección sin volver al punto de aparición del jugador, haz clic derecho en el visor y selecciona Reproducir desde aquí.
Añade volúmenes de bloqueo
Mientras haces pruebas de juego de tu diseño, es posible que descubras lugares en los que el jugador puede saltarse la geometría y salirse u omitir la zona de juego. Los volúmenes de bloqueo son objetos de nivel que actúan como muros invisibles para cerrar zonas no deseadas y mantener al jugador en el nivel.
Sin embargo, nunca utilices volúmenes de bloqueo en lugares donde el jugador esperará desplazarse libremente, como una puerta abierta o un pasillo.
Para añadir un volumen de bloqueo al nivel, sigue estos pasos:
En la barra de herramientas principal, haz clic en el botón Crear. Desde este menú, puedes crear nuevos actores.
En el menú Crear, desplázate a Volúmenes, busca
Bloqueoy selecciona Volumen de bloqueo.El editor añade un
BlockingVolumeen el centro del visor principal.
Una vez que hayas terminado de trabajar con tus volúmenes de bloqueo, puedes ocultarlos para reducir la acumulación de elementos en tu nivel.
En este pasillo de ejemplo, los volúmenes de bloqueo evitan que el jugador salte por la ventana o salte al tejado después de escalar el pilar:
Los volúmenes de bloqueo también pueden igualar formas de colisión complejas o geometría detallada, para que el jugador no se quede atascado o se golpee de forma extraña con pequeños bordes o agujeros.
Organiza objetos en el esquematizador
A medida que el nivel crece, también lo hace la lista de objetos del panel esquematizador. Para que el esquematizador esté más ordenado y sea más navegable, organiza tus objetos en carpetas. Puedes crear carpetas para agrupar objetos por función o posición.
Para crear una carpeta de geometría con todas las mallas de bloqueo, sigue estos pasos:
En el panel esquematizador, selecciona toda la geometría de bloqueo. (Pulsa Ctrl o Mayús para añadir a tu selección).
Cerca de la esquina superior derecha del esquematizador, haz clic en el botón Crear carpeta.
Introduce un nombre para tu carpeta (por ejemplo,
Geometría).
A medida que crezca el nivel, podrías organizar mejor tu proyecto creando carpetas de geometría de bloqueo para cada región o habitación del nivel.
Puedes repetir estos pasos con un subconjunto de mallas para ordenarlas en una subcarpeta de la carpeta Geometría.
Usa los activadores de visibilidad del esquematizador para ocultar todos los objetos de una carpeta
Añade etiquetas de texto
Para etiquetar un espacio, un obstáculo o un elemento de jugabilidad futuro, añade un actor de renderizado de texto a tu esbozo. Este texto puede actuar como marcador de posición o dar a los encargados de las pruebas de juego contexto sobre lo que hay planeado para ese espacio.
Si quieres usar un actor de renderizado de texto para mostrar una cadena de texto en el nivel, sigue estos pasos:
En la barra de herramientas principal, haz clic en el botón Crear.
En el menú Crear , busca
Renderizado de textoy selecciona Actor de renderizado de texto. El editor añade un TextRenderActor en medio de tu visor principal.Con el actor seleccionado, en su panel de detalles, usa la propiedad Text para introducir el texto que quieras que se muestre en el nivel.
Utiliza World Size para hacer que el texto sea más grande o más pequeño, y Text Render Color para cambiar el color del texto.
Rota y coloca el texto en posición. Los actores de renderizado de texto se ven mejor cuando se colocan en una pared, suelo u obstáculo.
Opcional: Para hacer que un actor de renderizado de texto sea invisible en el juego, en la sección Renderizado del panel Detalles, habilita Actor oculto en el juego.
Mejora tu diseño
Has empezado con tu primera habitación y algunos pasillos; Ahora sigue construyendo.
Para completar el resto de este tutorial, te recomendamos tener los siguientes elementos en tu esbozo:
Zonas que permitan al jugador recoger tres llaves distintas y abrir la puerta correspondiente a cada llave.
Una zona para colocar un laberinto de trampas que se pueda deshabilitar con un interruptor de suelo.
Una zona para atravesar una serie de plataformas móviles.
Una zona para luchar contra enemigos PNJ.
Más allá de esto, ¡utiliza tu imaginación, experimenta e itera! Esa es la belleza de las pruebas con caja gris.
A medida que construyas, ten en cuenta algunos principios de diseño más:
Obstáculos y oclusión
No olvides introducir algunos obstáculos funcionales. Por ejemplo:
Un objeto que bloquee un camino obvio y obligue al jugador a encontrar un desvío interesante.
Pilares que bloqueen la línea de visión y añadan interés.
Objetos que creen cobertura.
Geometría que enseñe al jugador parte de su conjunto de movimientos (como saltar, agacharse o arrastrarse).
Aquí tienes un ejemplo de habitación bloqueada con algunos cambios de altura y oclusión:
Flujo de nivel y líneas guía
Piensa en el ritmo y la cadencia de la ruta del jugador por tu nivel. ¿Se le guía de forma natural a la siguiente zona? ¿Hay momentos de tensión y calma? ¿Siente el jugador que tiene cierta capacidad de elección?
El uso de líneas guía y puntos de contraste dirige al jugador a zonas de interés sin que se dé cuenta. Hace que el mundo parezca intuitivo, ya que el jugador se ve atraído de forma natural por estos elementos o hacia ellos.
Por ejemplo:
Cables, tuberías, vallas, barandillas y caminos guían la vista del jugador por sus bordes.
Las fuentes de luz o los elementos visuales con contraste captan la atención del jugador.
La vista de un punto de referencia o una puerta que enmarca la siguiente zona atrae al jugador en esa dirección.
Cuando el jugador entra en esta sala, la pared le guía hacia la ventana, que conduce al jugador hacia la salida.
Cuando diseñes tus espacios, piensa en cómo se recorrerán. Por ejemplo, este tutorial crea un espacio de estilo radial con centro y ramificaciones en el que el jugador tiene que regresar a la primera sala tras completar ciertos objetivos. Aquí, los pasillos no deberían ser demasiado largos porque el jugador tiene que atravesarlos varias veces.
Lenguaje de formas
Puedes utilizar distintas formas para comunicar emociones o una función al jugador, incluso en la fase de esbozo del desarrollo.
Las esquinas redondeadas y las curvas sugieren naturaleza y seguridad, por lo que estas formas funcionan bien en una zona de descanso o una ubicación de curación.
Las zonas cerradas o cuadradas dan la sensación de ser artificiales, estables y ordenadas.
Las zonas triangulares, dentadas o con pinchos dan una sensación de peligrosidad. Un espacio así podría advertir al jugador de que hay trampas o enemigos cerca.
Un espacio alto o amplio puede evocar poder, mientras que los espacios claustrofóbicos y desordenados crean tensión e incomodidad.
Por ejemplo, en una próxima sección de este tutorial se diseñará una trampa que inflige daño al jugador si cae en ella. Los jugadores asocian los pinchos con el peligro, por lo que este diseño utiliza este lenguaje de formas para indicar al jugador que debe evitar este obstáculo:
Ejemplo de esbozo
Este es el espacio que se utilizará en el resto del tutorial. Puedes combinarlo o diseñar algo completamente tuyo.
Todas las salas tienen un número, por lo que los pasos de este tutorial pueden hacer referencia a una sala concreta.
Las salas están construidas para ejemplificar una complejidad creciente:
La sala de inicio es donde empieza el jugador. También hemos añadido una pequeña zona de aparición que conduce a la sala de inicio.
La sala 2 es sencilla y tiene una curva en L básica en el pasillo.
La sala 1 aumenta la complejidad con un pasillo curvo que presenta distintas rutas, oclusiones y cambios de altura.
La sala 3 va más allá para demostrar todo el potencial de lo que puedes crear con las formas básicas incluidas en la plantilla de creación en primera persona. Añade un nivel de detalle al suelo y a las paredes que influye en el estilo artístico del juego y ayuda a los artistas a imaginar qué puede haber en ese espacio.
El estilo de esbozo de las salas 1 y 2 suele ser el tipo de detalle que buscas a la hora de diseñar niveles.
El pasillo 3 y la sala 3 también usan las mallas de BP_DoorFrame que se encuentran en Contenido > LevelPrototyping > Interactable > Door > Assets > Meshes.
Prueba el nivel de muestra
Si quieres utilizar el esbozo de muestra que creamos para este tutorial, usa el fragmento de abajo. Esta es una versión de texto de todas las mallas de bloqueo utilizadas para crear este ejemplo. Al copiar y pegar este texto en el editor de niveles, Unreal Engine lo convierte en objetos de nivel.
Begin Map
Begin Level
Begin Actor Class=/Game/LevelPrototyping/Interactable/Door/BP_DoorFrame.BP_DoorFrame_C Name=BP_DoorFrame_C_4 Archetype="/Game/LevelPrototyping/Interactable/Door/BP_DoorFrame.BP_DoorFrame_C'/Game/LevelPrototyping/Interactable/Door/BP_DoorFrame.Default__BP_DoorFrame_C'" ExportPath="/Game/LevelPrototyping/Interactable/Door/BP_DoorFrame.BP_DoorFrame_C'/Temp/Untitled_1.Untitled_1:PersistentLevel.BP_DoorFrame_C_4'"
Begin Object Class=/Script/Engine.SceneComponent Name="DefaultSceneRoot" Archetype="/Script/Engine.SceneComponent'/Game/LevelPrototyping/Interactable/Door/BP_DoorFrame.BP_DoorFrame_C:DefaultSceneRoot_GEN_VARIABLE'" ExportPath="/Script/Engine.SceneComponent'/Temp/Untitled_1.Untitled_1:PersistentLevel.BP_DoorFrame_C_4.DefaultSceneRoot'"
End Object
Begin Object Class=/Script/Engine.BoxComponent Name="Box" Archetype="/Script/Engine.BoxComponent'/Game/LevelPrototyping/Interactable/Door/BP_DoorFrame.BP_DoorFrame_C:Box_GEN_VARIABLE'" ExportPath="/Script/Engine.BoxComponent'/Temp/Untitled_1.Untitled_1:PersistentLevel.BP_DoorFrame_C_4.Box'"
Begin Object Class=/Script/Engine.BodySetup Name="BodySetup_0" Archetype="/Script/Engine.BodySetup'/Game/LevelPrototyping/Interactable/Door/BP_DoorFrame.BP_DoorFrame_C:Box_GEN_VARIABLE.BodySetup_0'" ExportPath="/Script/Engine.BodySetup'/Temp/Untitled_1.Untitled_1:PersistentLevel.BP_DoorFrame_C_4.Box.BodySetup_0'"
End Object
End Object
Begin Object Class=/Script/Engine.TimelineComponent Name="Door Control" ExportPath="/Script/Engine.TimelineComponent'/Temp/Untitled_1.Untitled_1:PersistentLevel.BP_DoorFrame_C_4.Door Control'"
Begin Map
Begin Level
Begin Actor Class=/Script/Engine.ExponentialHeightFog Name=ExponentialHeightFog_0 Archetype="/Script/Engine.ExponentialHeightFog'/Script/Engine.Default__ExponentialHeightFog'" ExportPath="/Script/Engine.ExponentialHeightFog'/Temp/Untitled_1.Untitled_1:PersistentLevel.ExponentialHeightFog_0'"
Begin Object Class=/Script/Engine.BillboardComponent Name="Sprite" Archetype="/Script/Engine.BillboardComponent'/Script/Engine.Default__ExponentialHeightFog:Sprite'" ExportPath="/Script/Engine.BillboardComponent'/Temp/Untitled_1.Untitled_1:PersistentLevel.ExponentialHeightFog_0.Sprite'"
End Object
Begin Object Class=/Script/Engine.ExponentialHeightFogComponent Name="HeightFogComponent0" Archetype="/Script/Engine.ExponentialHeightFogComponent'/Script/Engine.Default__ExponentialHeightFog:HeightFogComponent0'" ExportPath="/Script/Engine.ExponentialHeightFogComponent'/Temp/Untitled_1.Untitled_1:PersistentLevel.ExponentialHeightFog_0.HeightFogComponent0'"
End Object
Begin Object Name="Sprite" ExportPath="/Script/Engine.BillboardComponent'/Temp/Untitled_1.Untitled_1:PersistentLevel.ExponentialHeightFog_0.Sprite'"
AttachParent="HeightFogComponent0"
End Object
Begin Map
Begin Level
Begin Actor Class=/Script/Engine.StaticMeshActor Name=Floor_90 Archetype="/Script/Engine.StaticMeshActor'/Script/Engine.Default__StaticMeshActor'" ExportPath="/Script/Engine.StaticMeshActor'/Temp/Untitled_1.Untitled_1:PersistentLevel.Floor_90'"
Begin Object Class=/Script/Engine.StaticMeshComponent Name="StaticMeshComponent0" Archetype="/Script/Engine.StaticMeshComponent'/Script/Engine.Default__StaticMeshActor:StaticMeshComponent0'" ExportPath="/Script/Engine.StaticMeshComponent'/Temp/Untitled_1.Untitled_1:PersistentLevel.Floor_90.StaticMeshComponent0'"
End Object
Begin Object Name="StaticMeshComponent0" ExportPath="/Script/Engine.StaticMeshComponent'/Temp/Untitled_1.Untitled_1:PersistentLevel.Floor_90.StaticMeshComponent0'"
StaticMesh="/Script/Engine.StaticMesh'/Engine/MapTemplates/SM_Template_Map_Floor.SM_Template_Map_Floor'"
bUseDefaultCollision=False
StaticMeshDerivedDataKey="STATICMESH_34081786561B425A9523C94540EA599D_359a029847e84730ba516769d0f19427Simplygon_5_5_2156_18f808c3cf724e5a994f57de5c83cc4b_680318F3495BDBDEBE4C11B39CD497CE000000000100000001000000000000000000803F0000803F00000000000000000000344203030300000000"
MaterialStreamingRelativeBoxes(0)=4294901760
Begin Map
Begin Level
Begin Actor Class=/Script/Engine.StaticMeshActor Name=StaticMeshActor_911 Archetype="/Script/Engine.StaticMeshActor'/Script/Engine.Default__StaticMeshActor'" ExportPath="/Script/Engine.StaticMeshActor'/Game/AdventureGame/deleteme.deleteme:PersistentLevel.StaticMeshActor_911'"
Begin Object Class=/Script/Engine.StaticMeshComponent Name="StaticMeshComponent0" Archetype="/Script/Engine.StaticMeshComponent'/Script/Engine.Default__StaticMeshActor:StaticMeshComponent0'" ExportPath="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/deleteme.deleteme:PersistentLevel.StaticMeshActor_911.StaticMeshComponent0'"
End Object
Begin Object Name="StaticMeshComponent0" ExportPath="/Script/Engine.StaticMeshComponent'/Game/AdventureGame/deleteme.deleteme:PersistentLevel.StaticMeshActor_911.StaticMeshComponent0'"
StaticMesh="/Script/Engine.StaticMesh'/Game/LevelPrototyping/Meshes/SM_Cylinder.SM_Cylinder'"
StaticMeshImportVersion=1
StaticMeshDerivedDataKey="STATICMESH_FD1BFC73B5510AD60DFC65F62C1E933E_228332BAE0224DD294E232B87D83948FQuadricMeshReduction_V2$2e1_6D3AF6A2$2d5FD0$2d469B$2dB0D8$2dB6D9979EE5D2_CONSTRAINED0_100100000000000000000000000100000000000080FFFFFFFFFFFFFFFFFFFFFFFF000000000000803F00000000000000803F0000803F00000000000000003D19FC1626C9B2485E57DB4B8EC731318B8215AE8D46FAD400000000010000000100000000000000010000000100000000000000000000000100000001000000400000000000000001000000000000000000F03F000000000000F03F000000000000F03F0000803F00000000050000004E6F6E65000C00000030000000803FFFFFFFFF0000803FFFFFFFFF0000000000000041000000000000A0420303030000000000000000_RT00_0"
RelativeLocation=(X=-2790.000000,Y=-1610.000000,Z=-0.499892)
Para copiar este ejemplo de bloqueo en un nivel vacío, sigue estos pasos:
En un nuevo nivel de tipo Básico, elimina las mallas Floor y PlayerStart para que el nivel solo contenga objetos de niveles de iluminación.
Haz clic en Copiar todo el fragmento.
En Unreal Editor, asegúrate de que el visor o el esquematizador es el panel activo (haz clic en cualquier lugar del visor o del esquematizador y pulsa Esc) y, a continuación, pulsa Ctrl + V.
Repite el procedimiento para todo el conjunto de salas y pasillos.
En el esquematizador, verás todas las mallas organizadas en carpetas con el nombre de cada habitación y pasillo.
El nivel de muestra usa convenciones de nomenclatura para muchos objetos del esquematizador. El nombre de las mallas de los prototipos de nivel se cambia en función de su uso:
Las paredes se llaman
SM_WallLas columnas se llaman
SM_ColumnySM_QuarterColumn.
Si quieres usar estas convenciones de nomenclatura y cambiar el nombre de tus objetos, selecciona un grupo de mallas en el esquematizador, haz clic derecho en la selección y ve a Editar > Renombrar actores seleccionados. Si quieres más información sobre cómo trabajar con el esquematizador, consulta la documentación Esquematizador.
Siguiente
Una vez hayas esbozado el nivel, será el momento de empezar a añadir elementos de jugabilidad. En la siguiente sección, hay una introducción a la secuenciación de comandos visual de Blueprint en Unreal Engine y aprenderás a compilar lógica de jugabilidad en un objeto de nivel de blueprint.
El siguiente documento de esta serie de tutoriales trata sobre el uso de Blueprint, el lenguaje de secuenciación de comandos visual de Unreal Engine. Si es la primera vez que utilizas blueprints y quieres aprender a utilizarlos para programar lógica de juegos, consulta la documentación Blueprints Foundations (fundamentos de blueprints).
Si ya conoces los blueprints, puedes continuar con el tutorial Crear una llave: