Esta función se encuentra en una fase experimental, de modo que puedes probarla, dejarnos tu feedback y conocer nuestros planes. En este momento, no puedes publicar proyectos que utilicen inventarios y objetos personalizados.
Ten en cuenta que no podemos garantizar la retrocompatibilidad para los recursos creados en la fase experimental. Las API para estas funciones podrían cambiar y podemos retirar funciones experimentales en su totalidad o funcionalidades específicas conforme lo consideremos. Consulta la lista de problemas conocidos antes de comenzar a trabajar con esta función.
En este tutorial, se muestra cómo utilizar el sistema de inventario y elementos personalizados con Scene Graph y Verse para crear un elemento personalizado de tarjeta de acceso.
Una vez que compiles este ejemplo y aprendas a crear una tarjeta de acceso personalizada, podrás usar una tarjeta de acceso personalizada en juegos que involucran objetivos a fin de ubicar y usar tarjetas para acceder a áreas bloqueadas. Algunos ejemplos son los siguientes:
Una habitación cerrada con llave que contiene el objeto para un atraco
La siguiente zona del juego
Tesoro o recompensas por vencer a un jefe
Antes de comenzar
Debes familiarizarte con UEFN, Scene Graph y el código de Verse para completar correctamente este tutorial.
Configura tu proyecto
Sigue estos pasos para configurar tu proyecto y habilitar el inventario y los elementos personalizados.
Abre UEFN y crea un proyecto a partir de cualquier plantilla de isla. En las plantillas de islas, puedes usar el proyecto en blanco si deseas garantizar un área plana con la que trabajar. Ponle nombre a tu nuevo proyecto y haz clic en Crear para abrirlo en el editor.
En la barra de herramientas, haz clic en Proyecto y selecciona Configuración del proyecto.
Desplázate hacia abajo hasta la sección Acceso experimental y marca la casilla de Sistema de inventario. Esto habilita el inventario y los elementos personalizados.
Construye tu sala
Primero necesitas construir la sala para el ejemplo. El ejemplo se presenta como una demostración que compara dos puertas cerradas con llave:
En la primera, se muestra cómo una tarjeta de acceso de Fortnite abre una puerta que tiene un dispositivo de bloqueo mediante un dispositivo de botón condicional para determinar si el jugador tiene la tarjeta de acceso.
En la segunda, se muestra cómo usar una tarjeta de acceso personalizada en lugar del elemento existente de tarjeta de acceso de Fortnite, y utiliza Verse para determinar si el jugador tiene la tarjeta de acceso personalizada.
A fin de compilar la sala para el ejemplo, puedes usar los siguientes recursos de Fortnite:
Sala: en el explorador de contenido, ve a Fortnite > Recursos de la caja gris > Demostración. En este ejemplo, se utilizan los recursos de DemoRoom.
Cabina de demostración: en el explorador de contenido, ve a Fortnite > Recursos de la caja gris > Demostración. Utiliza el recurso DemoDisplay.
Puertas:
Puerta en la pared verde: ve a Fortnite > Galerías > Construcción > Galería de paredes de rascacielos recostados N. Busca la puerta interior suburbana C 02 a8a9d603 al final de la primera fila.
Puerta en pared tostada con moldura oscura en la parte superior: en la misma galería que arriba, justo a la izquierda está la puerta interior suburbana C 02 a9577d9d.
Mesa: ve a Fortnite > Utilería > Súper. Encuentra la mesa redonda de la Academia A 13a04066.
Cómo configurar los dispositivos
Dispositivos necesarios:
1 generador de jugadores
2 dispositivos de bloqueo
1 dispositivo de botón condicional
2 dispositivos de volumen
1 dispositivo de colocador de objetos (elemento de tarjeta de acceso de autoridad)
Cómo configurar la puerta para una tarjeta de acceso de Fortnite
Elige una puerta para configurar una puerta cerrada típica de Fortnite. Sigue estos pasos a fin de configurar los dispositivos para la primera puerta.
Coloca un dispositivo de bloqueo en la pared junto a la puerta. En el panel de detalles, personaliza las opciones del dispositivo como se muestra a continuación. Las opciones que no aparezcan en la lista se pueden dejar con sus valores predeterminados.
Opción
Valor
Explicación
Visible durante la partida
Falso (sin marcar)
Esto oculta el dispositivo de bloqueo cuando el juego está en ejecución, para que los jugadores no lo vean.
Comienza bloqueada
Bloqueada
Esto hace que la puerta esté bloqueada cuando comienza la partida.
Ocultar interacción cuando se bloquee
Verdadero (marcado)
Esto oculta la indicación de interacción cuando la puerta está bloqueada.
Posición inicial de la puerta
Cerrada
Esto hace que la posición inicial predeterminada para la puerta sea Cerrada.
En Opciones de usuario - Funciones, define las siguientes funciones para el dispositivo de bloqueo.
Es posible que no puedas definir la función de bloqueo hasta después de colocar el dispositivo de volumen en el paso 3, como se indica a continuación.
Función
Dispositivo de destino
Evento para vincular
Explicación
Desbloquear
botón condicional
Al activar
La puerta se desbloquea cuando se activa el botón condicional.
Bloqueo
Volumen
Al salir
La puerta se bloquea cuando el jugador sale de la puerta de volumen de los dispositivos de Fortnite.
Coloca un dispositivo de volumen en el centro de la puerta. En el panel de detalles, personaliza las opciones del dispositivo como se muestra a continuación. Las opciones que no aparezcan en la lista se pueden dejar con sus valores predeterminados.
Opción
Valor
Explicación
Forma del volumen
Cilindro
Determina la forma del volumen.
Altura del volumen
0,25x
Esto determina qué tan alto llega el cilindro de volumen.
Radio del volumen
0,9x
Esto define el radio del cilindro de volumen, que determina lo cerca o lejos que está de la ubicación del dispositivo. El radio debe ser relativamente pequeño, de modo que el jugador tenga que acercarse a la puerta para entrar en el volumen.
Coloca el dispositivo de botón condicional junto a la puerta, debajo del dispositivo de bloqueo. Personaliza las opciones como se muestra a continuación. Las opciones que no aparezcan en la lista se pueden dejar con sus valores predeterminados.
Opción
Valor
Explicación
Elementos clave necesarios
Verdadero (marcado), 1
Márcalo a fin de indicar que se requiere un elemento clave para pasar la condición. Ingresa 1 en el campo para indicar que solo se requiere una tarjeta de acceso.
Elemento clave 1
Tarjeta de acceso de autoridad (nombre en el juego) o AGID_CP_Keycard_Agency (ID de elemento)
Para seleccionar el elemento requerido, haz clic en el menú desplegable y busca "keycard" (tarjeta de acceso). Hay varios elementos de tarjeta de acceso, pero en este ejemplo se utiliza el elemento "Tarjeta de acceso de autoridad".
En Opciones de usuario - Funciones, define las siguientes funciones para el dispositivo de botón condicional.
Función
Dispositivo de destino
Evento para vincular
Explicación
Activar
Volumen
Al entrar
Cuando el jugador ingresa el volumen en la puerta de dispositivos de Fortnite, se activa el botón condicional. Comprueba si el jugador tiene la tarjeta de acceso de autoridad.
Cómo configurar la puerta para la tarjeta de acceso personalizada
Para la segunda puerta, sigue estos pasos a fin de configurar los dispositivos.
Debido a que las opciones para ambos dispositivos de bloqueo son las mismas, puedes copiar el primer dispositivo de bloqueo y pegar la copia en tu nivel. Puedes cambiar el nombre del dispositivo para distinguirlo del primero.
En Opciones de usuario - Funciones, define las siguientes funciones para el dispositivo de bloqueo.
Es posible que no puedas definir esta función hasta que hayas colocado el generador de jugadores (añade el enlace de anclaje a esa sección aquí).
Función
Dispositivo de destino
Evento para vincular
Explicación
Bloqueo
Plataforma de aparición de jugador 1
Cuando aparezca un jugador
Cuando un jugador aparece en la plataforma de aparición de jugador 1, el dispositivo de bloqueo se activa y bloquea la puerta.
Las opciones para ambos dispositivos de volumen son las mismas, por lo que también puedes copiar el primer volumen y pegar la copia en tu nivel. Puedes cambiar el nombre del dispositivo para distinguirlo del primero.
Cómo configurar la mesa para las tarjetas de acceso
Sigue estos pasos para definir la mesa con la tarjeta de acceso de Fortnite y tu tarjeta de acceso personalizada.
Coloca el dispositivo colocador de elementos en el lado de la mesa más cercano a la puerta cerrada que solo usa dispositivos.
En el panel de detalles, personaliza las opciones del dispositivo para el colocador de elementos como se muestra a continuación.
Opción
Valor
Explicación
Lista de elementos
Tarjeta de acceso de autoridad
Haz clic en + para añadir un elemento de matriz; luego, haz clic en el menú desplegable y busca "keycard" (tarjeta de acceso). Luego, selecciona el elemento de tarjeta de acceso de autoridad.
Busca tu elemento de tarjeta de acceso personalizado en el explorador de contenido y arrástralo al nivel. Coloca la tarjeta de acceso personalizada en la mesa, en el lado más cercano a la puerta bloqueada definida para ella.
Una vez que hayas creado el keycard_gameplay_device (añade el enlace de anclaje aquí), busca el dispositivo de Verse en el explorador de contenido y arrástralo a tu nivel.
Cómo configurar el generador de jugadores
Por último, deberás colocar un generador de jugadores. Para este ejemplo, solo necesitas un generador de jugadores. Sin embargo, si compilas un juego con varios jugadores, puedes seguir estos pasos para definir más. O puedes definirlos de manera diferente en función de tu experiencia particular en la isla.
Coloca el generador de jugadores en un lugar donde el jugador vea inmediatamente la mesa y las dos puertas.
Personaliza las opciones del dispositivo como se muestra a continuación.
Opción
Valor
Explicación
Visible en el juego
Falso (sin marcar)
Para este ejemplo, el generador de jugadores es invisible.
Ahora que definiste la habitación y los dispositivos, puedes crear la tarjeta personalizada.
Cómo crear un prefabricado de entidad de elemento personalizado
En el explorador de contenido, haz clic derecho para abrir el menú contextual y selecciona Definición de prefabricados de entidades. Esto añade un nuevo prefabricado de entidad de Scene Graph al explorador de contenido.
Cambia el nombre del prefabricado Item_Keycard.
Arrastra una instancia del nuevo prefabricado al entorno arrastrándolo al visor. Esto hace que se pueda seleccionar en el esquematizador.
Con el prefabricado Item_Keycard seleccionado, en el panel de detalles, haz clic en +Componente y selecciona item_component. Puedes desplazarte por la lista para encontrarlo o escribe "item" (elemento) en la barra de búsqueda para limitar los resultados y encontrarlo más rápido.
Vuelve a hacer clic en +Componente y selecciona item_details_component. Este componente almacena datos de texto sobre el elemento.
El componente item_details tiene tres campos de propiedades que se muestran en el panel de detalles: nombre, descripción y descripción breve. Ingresa un nombre, una descripción del elemento y una etiqueta descriptiva breve en estos campos.
Vuelve a hacer clic en +Componente y selecciona item_icon_component.
En el panel de detalles, expande el item_icon_component. Debes seleccionar una imagen 2D, que será la imagen que se mostrará en la IU del juego (por ejemplo, en el inventario del jugador) para representar el elemento.
Haz clic en el menú desplegable junto al mosaico Ninguno para abrir un menú contextual y escribe parte del nombre de tu imagen en la barra de búsqueda. En este ejemplo, estamos utilizando una imagen PNG llamada T_Icon_Keycard.png.
Selecciona la imagen en los resultados de búsqueda.
Vuelve a hacer clic en +Componente y selecciona mesh_component. Para este ejemplo, selecciona Plano.
Esto añadirá una malla plana a tu elemento. Según la configuración, es posible que este plano sea muy grande al principio. Sigue estos pasos para cambiar el tamaño del plano a fin de que tenga el tamaño de una tarjeta de acceso.
En la barra de herramientas de la parte superior del visor, selecciona la herramienta de escalado. También puedes presionar la tecla R para cambiar a la herramienta de escalado.
Más a la derecha de la herramienta de escalado, haz clic en el menú desplegable de la configuración de Preajuste de relación de escalado. Ajústalo a 0.0625. Esto te permite reducir el plano a un tamaño muy pequeño para representar una tarjeta de acceso.
Vuelve a hacer clic en +Componente y selecciona fort_item_pickup_component. Al añadir este componente, se añade toda la funcionalidad de los objetos de Fortnite:
Una animación para recoger un objeto y una animación para soltar un objeto.
Una interacción para añadir un objeto al inventario.
Un widget de objeto predeterminado que se muestra cuando un jugador mira el objeto.
La malla del objeto se deshabilita cuando se recoge un objeto.
La malla del objeto se habilita cuando se suelta un objeto.
Ahora que tienes un prefabricado básico de tarjeta de acceso personalizada, puedes crear un componente personalizado en Verse que hará que este elemento sea único, de modo que pueda verificarse con código de Verse para ver si abre una puerta bloqueada en particular.
Cómo crear un componente personalizado de Verse
Normalmente, para un proyecto grande que tiene muchos archivos de código de Verse, es conveniente crear un nuevo archivo de Verse para un componente personalizado. Para hacerlo, debes seguir estos pasos.
Debido a que el ejemplo para este tutorial es pequeño, el keycard_item_component personalizado se definió en el archivo de Verse para el keycard_gameplay_device personalizado. Consulta la sección Cómo escribir código de Verse para el juego para conocer esos pasos.
Con el nuevo elemento de tarjeta de acceso seleccionado, en el panel de detalles, haz clic en +Componente y selecciona Nuevo componente de Verse. Se abrirá la ventana Crear componente de Verse.
También puedes crear un componente de Verse si añades un archivo de Verse nuevo con el explorador de Verse.
En Elegir una plantilla, selecciona Scene Graph Component.
En la parte inferior, en el campo Nombre del componente, escribe keycard_item_component. Luego, haz clic en Crear.
En el panel de detalles, haz clic en +Componente y escribe "keycard" (tarjeta de acceso) en la barra de búsqueda. Deberías ver tu nuevo componente de Verse en la lista, así que selecciónalo para añadirlo a tu elemento personalizado de tarjeta de acceso.
En la barra de menú, haz clic en Verse > Explorador de Verse. Ubica tu nuevo componente de Verse, haz clic derecho en él y selecciona Abrir en Visual Studio Code.
Escribe el código de Verse para el juego
Debido a que estás creando un elemento personalizado (la tarjeta de acceso) y deseas activar un dispositivo cuando el jugador tiene la tarjeta de acceso personalizada en su inventario, necesitas crear un dispositivo de Verse para que eso suceda.
En la barra de menú, dirígete a Verse > Explorador de Verse. El explorador de Verse se abre en una pestaña junto al esquematizador.
En el explorador de Verse, haz clic derecho en el nombre de tu proyecto y elige Añadir nuevo archivo de Verse al proyecto para abrir la ventana Crear secuencia de comandos de Verse.
En la ventana Crear secuencia de comandos de Verse, en Elegir una plantilla, haz clic en Dispositivo de Verse para seleccionarlo. En el campo Nombre del dispositivo, escribe keycard_gameplay_device. Luego, haz clic en Crear para crear el archivo de Verse.
En el explorador de Verse, haz doble clic en tu nuevo dispositivo de Verse para abrir el archivo en Visual Studio (VS) Code. Asegúrate de que todo lo siguiente se añada en las líneas superiores de código.
Verseusing { /Fortnite.com/Devices } using { /Fortnite.com/Itemization } using { /Verse.org/Simulation } using { /Verse.org/SceneGraph } using { /Verse.org/Random } using { /UnrealEngine.com/Itemization } using { /UnrealEngine.com/Temporary/Diagnostics }A continuación, agrega el código que define tu componente de objeto personalizado.
Verse# KEYCARD ITEM COMPONENT keycard_item_component := class(item_component) :Podemos agregar una función ayudante, que nos permitirá encontrar el inventario raíz del agente objetivo:
Verse# Helper function that gets the first descendant inventory component from an agent. # This will be the root inventory. GetAgentInventory(Agent:agent)<decides><transacts>:inventory_component= TargetInventory := (for (I : Agent.FindDescendantComponents(inventory_component)) { I })[0]A continuación, define tu dispositivo personalizado de Verse como una subclase de
creative_device. Debajo, define una propiedad editable para los dispositivos de volumen y bloqueo. Esto te permite seleccionar una instancia particular del dispositivo de volumen o bloqueo en el editor (importante ya que tienes dos dispositivos de volumen y dos dispositivos de bloqueo).Verse# DEVICE //// GAMEPLAY keycard_gameplay_device := class(creative_device) : # Use a volume_device to be able to check when a player approaches @editable VolumeDevice:?volume_device = false # The lock device is attached to a wall/door prop. This can be activated to lock/unlock the door it is attached to. @editable LockDevice:?lock_device = falseAhora utilizarás la consulta para ver si el dispositivo de volumen está presente y te suscribirás a los eventos Al entrar el agente y Al salir el agente del dispositivo de volumen.
Verse# Subscribe to the entry and exit events on the Volume to determine when a player/agent approaches. OnBegin<override>()<suspends>:void= if: TargetVolume := VolumeDevice? then: TargetVolume.AgentEntersEvent.Subscribe(OnAgentEntersEvent) TargetVolume.AgentExitsEvent.Subscribe(OnAgentExitsEvent)Deseas comprobar el inventario del jugador para ver si tiene la tarjeta de acceso personalizada en su inventario. Esto se logra comprobando si hay algo con el
keycard_item_component. Este código también requiere que elkeycard_item_componentesté presente para abrir el dispositivo de bloqueo.VerseOnAgentEntersEvent(Agent:agent):void= # Get the inventory from the player that is entering. if(TargetInventory := GetAgentInventory[Agent]): # Check the item in the inventory, if it has the keycard_item_component, proceed for(item : TargetInventory.FindItems(), KeycardComponent := item.GetComponent[keycard_item_component]) # If there is a valid lock_device, then this opens the door. if(TargetDoorLock := LockDevice?):Por último, si hay más de un jugador presente y un jugador tiene la tarjeta de acceso, este código se asegurará de que el bloqueo permanezca abierto. Sin embargo, si el jugador con la tarjeta de acceso sale del volumen, el bloqueo se cierra de nuevo.
VerseOnAgentExitsEvent(Agent:agent):void= # Start by assuming that no one has the required keycard_item_component. var AgentWithKeycardInVolume:logic = false if(TargetVolume := VolumeDevice?): # Get the Agents that are inside the volume_device as an array. for(TargetAgent:TargetVolume.GetAgentsInVolume()): # Use the same check to see if any of the agents in the volume_device have a keycard_item_component.
Aquí está el fragmento de código de Verse completo.
using { /Fortnite.com/Devices }
using { /Fortnite.com/Itemization }
using { /Verse.org/Simulation }
using { /Verse.org/SceneGraph }
using { /UnrealEngine.com/Itemization }
using { /UnrealEngine.com/Temporary/Diagnostics }
# KEYCARD ITEM COMPONENT
keycard_item_component := class(item_component) :