For the complete documentation index, see llms.txt. This page is also available as Markdown.

Componentes básicos

World Explorer admite una lista de componentes básicos que comparten su definición con las escenas, proporcionando soporte integrado para posicionamiento, animación, media y consultas del estado del mundo

Hay cinco tipos de componentes:

  1. Componentes de objeto añaden propiedades visuales y físicas a Entities.

  2. Componentes de juego pueden solicitar acciones y recibir información del motor de juego.

  3. Componentes de media pueden mostrar imágenes y reproducir sonidos.

  4. Componentes de área alteran el comportamiento de Entities en zonas específicas.

  5. Componentes de UI permiten a las escenas renderizar interfaces flotantes.

Excepto Transform, que se especifica en detalle a continuación, el estado de todos los componentes se serializa usando protocol buffers. Puedes seguir el enlace en cada título para ver la definición completa.

Componentes de objeto

Los componentes más comunes son los que adjuntan propiedades visuales y físicas a un Entity. Se pueden usar para posicionar, redimensionar, pintar y agregar colisión a objetos dentro del juego.


Transform ↗ spec

Añade posición, rotación y escala a un entity.

Este componente es, con diferencia, el más usado y el que se actualiza con más frecuencia durante la vida útil de una escena. Debido a esto, Transform no se serializa usando protocol buffers, y en su lugar se empaqueta en una estructura personalizada.

Transform tiene un tamaño de 44 bytes, con este diseño exacto:

.-----------------------.-------------------------------.-----------------------.-----------------.
|   x   |   y   |   z   |   x   |   y   |   z   |   w   |   x   |   y   |   z   | parent (uint32) |
'-----------------------'-------------------------------'-----------------------'-----------------'
╵  position (3x float)  ╵      rotation (4x float)      ╵   scale (3x float)    ╵

Este enfoque permite al runtime (especialmente en entornos de código de bajo nivel) evitar pasos intermedios de serialización y deserialización. La memoria donde un Transform reside puede copiarse, compartirse y señalarse directamente.

Las coordenadas pueden ser fraccionarias y, por lo tanto, usan un número de punto flotante de 4 bytes.

La parent indica que este Entity debe posicionarse en relación con otro, identificado por su ID.

Como el valor nulo de parent también es el RootEntity ID (0), cualquier Transform es relativo a él por defecto.

Por protocolo, Transform debe serializarse en orden de bytes big-endian.


MeshRenderer ↗ source

Proporciona un comportamiento básico de renderizado para un Entity.

Puede configurarse para renderizar un plano, una esfera, un cubo o un cilindro. Para renderizar formas 3D arbitrarias, use GltfContainer.


MeshCollider ↗ source

Proporciona un comportamiento básico de colisión y detección del puntero del mouse para un Entity.

Puede configurarse para comportarse como un plano, una esfera, un cubo o un cilindro. Para tener una malla de colisión personalizada, use GltfContainer.


Material ↗ source

Establece las propiedades de textura, iluminación, color y transparencia de un Entity que también tiene el MeshRenderer componente.

Es una estructura compleja diseñada para cubrir todos los casos comunes, pero cada campo tiene un valor predeterminado razonable y puede dejarse sin especificar.

Para personalizar completamente las propiedades visuales de un Entity, use GltfContainer.


GltfContainer ↗ source

Adjunta un modelo 3D a este Entity, dada la ruta del archivo de un .gltf asset en el manifest de la escena.

Como el modelo tiene sus propias meshes y materials, este componente anula cualquier comportamiento de MeshRenderer, MeshCollider y Material.


Billboard ↗ source

Hace que un Entity reoriente automáticamente su Transform para mirar a la cámara, o opcionalmente a otro Entity referenciado mediante target_entity. Como indica el nombre, se usa para mostrar billboards dentro del juego y se combina con frecuencia con TextShape.

Afecta a todas las direcciones por defecto, pero puede configurarse para rotar solo en un eje. Si el Entity objetivo referenciado no existe, la reorientación se suspende hasta que exista.


Animator ↗ source

Define una o más animaciones que pueden aplicarse simultáneamente a un Entity.

Las escenas pueden establecer el estado del componente para personalizar, reproducir y transicionar entre animaciones, así como leerlo para comprobar qué animaciones están disponibles o se están reproduciendo actualmente.


AvatarAttach ↗ source

Indica que la posición de un Entity debe seguir un punto de anclaje particular en el cuerpo de un avatar.

Puede afectar a cualquier avatar, no solo al del jugador, configurando un ID de usuario.


TextShape ↗ source

Renderiza texto en la posición de un Entity, dada por su Transform.

Es altamente configurable y admite parámetros como tamaño, margen, padding, color, sombra y más.


Visibility ↗ source

Establece si un Entity es visible (el valor predeterminado) o invisible.

Los objetos invisibles siguen existiendo y mostrarán el comportamiento de cualquier otro componente adjunto.


AvatarShape ↗ source

Contiene información sobre el avatar del jugador, incluida su forma corporal, colores, wearables y estado transitorio.

Este componente está adjunto a entities en la escena de avatar.

Componentes de juego

Algunos componentes básicos pueden ser usados por la escena y el runtime para intercambiar información. Aprovechan el mecanismo de sincronización de ECS para garantizar la consistencia y el orden de cualquier cambio de estado o evento.


CameraMode ↗ source

Puede usarse para determinar si el jugador tiene una vista en primera o tercera persona.


PointerLock ↗ source

Puede usarse para determinar si el puntero del mouse sigue automáticamente el punto de enfoque de la cámara (bloqueado) o puede moverse libremente por la pantalla (desbloqueado).

Está adjunto a CameraEntity, y su estado puede leerse (pero no escribirse) desde la escena.


PointerEvents ↗ source

Muestra retroalimentación visual cuando el puntero hace clic o pasa sobre un Entity.


PointerEventsResult ↗ source

Contiene información sobre la entrada reciente del jugador, incluidas teclas y acciones del puntero.

Está adjunto a RootEntity, y se actualiza por el runtime con cualquier evento nuevo en cada frame.


Raycast ↗ source

Puede adjuntarse a un Entity para solicitar un raycast al game engine. El RaycastResult component se adjuntará más tarde al mismo entity.

Se pueden configurar el origen, la dirección y la longitud máxima del rayo.


RaycastResult ↗ source

Adjunto por el runtime a Entities que tienen un Raycast component con resultados pendientes.

Contiene información sobre el rayo original e identifica cualquier Entity que haya sido impactado.

Componentes de media

Las escenas pueden adjuntar componentes especiales para mostrar imágenes, mostrar video o reproducir sonidos.


AudioSource ↗ source

Reproduce un clip de audio incluido con la escena, dada la ruta del archivo en su manifest.

El sonido se origina en la posición del Entity asociado. Se pueden establecer su tono, volumen y comportamiento de bucle, y se puede leer el estado del reproductor de audio.

Como preparación para futuras actualizaciones, el campo en AudioSource se llama audio_clip_url, pero en la versión actual del protocolo en realidad es la ruta definida en el manifest.


AudioStream ↗ source

Similar a AudioSource, pero el audio se transmite en tiempo real desde una URL externa.

A pesar de estar adjunto a un Entity particular, el sonido no se ve afectado por su posición. Se puede establecer su volumen y se puede leer el estado del reproductor de audio.


NftShape ↗ source

Muestra un NFT asociado a un asset de imagen o video.

Renderiza un canvas 2D con un marco decorativo configurable.

Componentes de área

Estos componentes permiten a las escenas modificar el comportamiento predeterminado de Entities dentro de límites especificados.


AvatarModifierArea ↗ source

Cambia el comportamiento de los avatares dentro de un espacio centrado alrededor de un Entity.

Se define con un vector de tamaño 3D y puede afectar si los avatares son visibles o clicables. Avatares específicos pueden excluirse de este efecto dado el ID de su usuario.


CameraModeArea ↗ source

Cambia el modo de cámara (primera o tercera persona) dentro de un espacio centrado alrededor de un Entity.

Se define con un vector de tamaño 3D y un modo de cámara deseado.

Componentes de UI

Los siguientes componentes se usan para crear interfaces gráficas que flotan sobre el mundo del juego.

Por lo general, se adjuntan a conjuntos de Entities que tienen UiTransform componentes jerárquicos, relacionados entre sí a través del parent atributo.

Por ejemplo, una ventana flotante de opciones podría ser un Entity con un UiTransform y un UiBackground component, además de un Entity hijo con un UiTransform y un UiDropdown.


UiTransform ↗ source

Describe el tamaño, la posición, el margen y el padding de un componente de UI.

Se basa en el modelo flexbox y es altamente personalizable.


UiBackground ↗ source

Describe un color o textura para usar como fondo en un Entity de UI.


UiDropdown ↗ source

Define una lista de opciones mutuamente excluyentes que se mostrarán en un widget desplegable.


UiDropdownResult ↗ source

Contiene el valor seleccionado de un UiDropdown, establecido por el runtime y leído por la escena.


UiInput ↗ source

Define un widget de entrada de texto, con algo de margen para personalización.


UiInputResult ↗ source

Contiene el valor de texto de un UiInput, establecido por el runtime y leído por la escena.


UiText ↗ source

Define una vista de texto simple, con algo de margen para personalización.


Última actualización