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.
Los elementos y los sistemas de inventario son una parte fundamental de muchos tipos de juegos. Con las entidades y los componentes de Scene Graph, puedes personalizar el inventario de jugadores de Fortnite y crear elementos personalizados únicos para tu isla.
Los objetos son elementos de una isla que los jugadores y los agentes pueden usar y poseer. Los inventarios incluyen el inventario existente del jugador de Fortnite, así como cualquier inventario personalizado que crees con el inventory_component. Inventarios y objetos personalizados es un sistema para crear, controlar y almacenar objetos. Este sistema es una función experimental que debes habilitar en la configuración del proyecto, y se usa con Scene Graph en UEFN y Verse.
Conceptos básicos de Scene Graph
Scene Graph es un sistema de entidades y componentes, construido sobre Verse. Las entidades son contenedores para componentes, y los componentes brindan funcionalidad a una entidad. Puedes adjuntar entidades entre sí en una relación base-derivado, lo que crea jerarquías. Los arreglos reutilizables de entidades y componentes se denominan prefabricados. Para obtener más información sobre las entidades y los componentes, consulta Cómo trabajar con entidades y componentes. Para obtener más información sobre los prefabricados en Scene Graph, consulta Prefabricados e instancias prefabricadas.
Problemas conocidos
Inventarios y objetos personalizados es el primer sistema que aprovecha Scene Graph en UEFN. Debido a eso, hay una serie de errores en la versión experimental que puedes encontrar al usar este sistema. Puedes encontrar la lista de problemas conocidos aquí. Estamos trabajando en muchas correcciones y mejoras que se incluirán en una versión futura.
Objetos
Un objeto es una entidad en Scene Graph que tiene un item_component. De forma predeterminada, los objetos se pueden fusionar y apilar, pueden tener categorías para comparar y ordenar, y se pueden equipar y desequipar.
Dado que el sistema de inventarios y objetos personalizados utiliza Scene Graph, puedes añadir componentes a los objetos para aumentar su funcionalidad. El sistema viene con varios componentes básicos para empezar, que se enumeran en la siguiente tabla.
| Componente | Descripción |
|---|---|
| Este componente convierte una entidad en un objeto. También permite que la entidad pueda apilarse y pertenecer a un inventario desde el cual se la gestione. |
| Almacena un ícono para el objeto que se muestra en la IU de Fortnite. |
| Contiene datos de texto, como el nombre y la descripción del objeto. |
| Esto almacena un recurso de malla que representa el objeto en el juego. |
| Este componente permite que el objeto se trate igual que un objeto de Fortnite que se puede recoger. Esto incluye un mensaje de interacción para recogerlo, IU y animaciones de recoger y soltar. |
Un elemento solo puede tener un componente de cada tipo. Esto incluye los componentes que heredan de otros componentes que ya están asociados al elemento.
Por ejemplo, si creas un componente personalizado para un objeto específico que es un derivado de item_component, se mostrará el componente del objeto personalizado en lugar del componente del objeto genérico.
Modularidad de los elementos
Con el inventario y los objetos personalizados, podemos introducir la modularidad adecuada. Esto significa que puedes utilizar componentes para compilar la funcionalidad de los elementos de forma aditiva. A continuación, se muestran ejemplos de componentes adjuntos a una entidad de elementos que otorgan funcionalidad.
Entidad
item_component: convierte una entidad en un objeto.item_details_component: almacena datos de texto, como el nombre y la descripción del objeto.item_icon_component: almacena un ícono para el objeto que se muestra en la IU de Fortnite.mesh_component: almacena un recurso de malla que representa el objeto en el juego.
Inventarios
Un inventario es una entidad que tiene un inventory_component.
Los inventarios son contenedores de entidades de objetos, y el inventario controla lo que sucede con esos objetos.
El sistema de inventarios y objetos personalizados utiliza inventarios y subinventarios para compartimentar los objetos. Esto facilita la tarea de ordenar, añadir y recuperar objetos dentro de un inventario. Dado que un objeto solo puede existir dentro de un inventario a la vez, los inventarios también determinan la propiedad de las entidades de objetos.
De forma predeterminada, los inventarios pueden contener una cantidad infinita de cualquier tipo de objeto. Sin embargo, puedes crear restricciones y reglas que determinen qué objetos se pueden añadir. Estos son algunos ejemplos de estas restricciones y reglas:
Añadir elementos a un inventario solo si cumplen con la consulta obligatoria de tipo.
Limitar la cantidad de objetos en un inventario.
Permitir que los elementos de mayor prioridad expulsen los elementos de menor prioridad cuando el inventario esté lleno.
Restringir un inventario a un solo objeto.
Cuando una función AddItem() no puede resolverse en el inventario de destino, busca otros inventarios que potencialmente puedan contener el objeto. La función utiliza jerarquías de Scene Graph.
Primero intentará añadir el objeto a inventarios del mismo nivel (inventarios que comparten un inventario base con el inventario de destino inicial); luego, buscará en los inventarios derivados (inventarios que están jerárquicamente subordinados al inventario de destino inicial). La función comprobará todos los inventarios de la jerarquía antes de devolver un error.
Filtrado de inventario con eventos de escena
Cuando un inventario es objeto de una llamada a la función AddItem(), recibirá un evento de escena (add_item_event). Al anular la función OnReceive() de un componente, se puede activar la lógica personalizada para afectar la entrada del objeto. Esto permite reglas de inventario, como verificar el tipo de objeto antes de permitir, permitir solo una cierta cantidad de objetos en el inventario, etc. El evento OnReceive() se implementa en la clase de componente base y está disponible para todos los componentes de Scene Graph.
El add_item_event recopila respuestas de todos los inventarios a los que llega. Puedes hacer que los componentes de inventario modifiquen el evento y puedan recibir el objeto que se añade. El evento contiene una matriz llamada inventory_with_priority, que puedes definir y actualizar con tu inventario de destino. Esto te permite nominar el inventario de destino con prioridad para recibir el objeto. Cuando se transmite el evento de escena, todos los inventarios con una prioridad establecida se consideran para recibir el objeto, y el inventario con la prioridad más alta es el que lo recibe.
En la versión experimental del sistema de inventarios y objetos personalizados, solo el evento add_item_event está disponible. Sin embargo, se añadirán otros eventos en futuras actualizaciones.
Inventarios de Fortnite
El sistema de inventarios y objetos personalizados viene con una serie de subclases de inventory_component que se llaman fort_inventory_components. Estos tienen objetos de filtro de elementos y de IU que imitan el inventario del jugador de Batalla campal de Fortnite.
| Componente | Descripción |
|---|---|
| Corresponde a la ranura de la herramienta de recolección del inventario predeterminado del jugador de Fortnite. |
| Corresponde a la barra de acceso rápido del inventario predeterminado del jugador de Fortnite. |
| Corresponde a la barra de acceso rápido de herramientas de construcción del inventario predeterminado del jugador de Fortnite. |
| Corresponde a la ranura de trampa del inventario predeterminado del jugador de Fortnite. |
| Corresponde a la sección de monedas del inventario predeterminado del jugador de Fortnite. |
| Corresponde a la sección de coleccionables del inventario predeterminado del jugador de Fortnite. |
| Corresponde a la sección de munición del inventario predeterminado del jugador de Fortnite. |
También puedes crear tu propia configuración de subinventarios para añadir, eliminar o sustituir el inventario predeterminado del jugador.
Los objetos y los inventarios son tan simples o complejos como la cantidad de componentes que se añaden al objeto o a la entidad de inventario. A medida que el sistema de inventarios y objetos personalizados continúa desarrollándose, se añadirán más componentes que brindarán aún más funcionalidad.