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

Mensajes

Los mensajes en comms son paquetes de datos binarios paquetes, serializados usando protocol buffers. Transportan chat de texto y voz, actualizaciones de posición, cambios de perfil y otras interacciones en tiempo real.

Puedes ver el protocolo de comms en acción y experimentarlo usando el código abierto Comms Station.

Todas las definiciones de mensajes están disponibles en el repositorio de protocolos, y cada tipo de mensaje a continuación tiene un enlace a su declaración.

Packet ↗ fuente

El Packet la estructura es el contenedor de todos los mensajes.

Campo
Tipo
Valor

message

enum

Uno de Chat, Voice, Position, AnnounceProfileVersion, ProfileRequest, ProfileResponse, o Scene.

Chat de texto y voz

Los clientes chatean difundiendo mensajes de texto y clips de audio a todos los pares conectados (normalmente jugadores en la misma isla).

Solo dos Packet tipos están involucrados, uno para cada caso de uso. En circunstancias típicas, los clientes difunden estos mensajes a todos los demás clientes en su isla, que es el grupo de jugadores cercanos con los que pueden interactuar.


Chat ↗ fuente

Envía un mensaje de chat de texto a otros clientes.

Campo
Tipo
Valor

message

string

Texto del mensaje

marca de tiempo

double

Marca de tiempo UTC del remitente


Voice ↗ fuente

Envía una muestra de voz codificada a otros clientes.

Campo
Tipo
Valor

encoded_samples

bytes

Datos de audio codificados

codec

enum

Solo VC_OPUS (por ahora no se admiten otros códecs)

index

uint32

Un contador incremental establecido por el remitente

El codec el campo es un enum valor. Los códecs personalizados no son compatibles.

Movimiento

Los clientes que controlan avatars envían y reciben actualizaciones de posición dentro de su isla, para sincronizar el movimiento y la postura entre los jugadores.


Position ↗ fuente

Actualiza a otros clientes sobre la posición y orientación de un avatar.

Campo
Tipo
Valor

position_x position_y position_z

float

Posición del avatar en el mapa mundial

rotation_x rotation_y rotation_z rotation_w

float

Cuaternión de rotación del avatar

index

uint32

Un contador incremental establecido por el remitente

Los clientes suelen enviar Position actualizaciones con baja frecuencia (por ejemplo, una vez cada 1 o 2 segundos), y pasar a una alta frecuencia (varias veces por segundo) cuando se mueven o interactúan.

Al enviar actualizaciones de posición, la velocidad suele ser mejor que la fiabilidad. El rendimiento percibido es mejor cuando la entrega es más rápida, incluso si un Position mensaje se descarta u ordena de forma incorrecta ocasionalmente. Algunos transportes (por ejemplo, LiveKit) pueden cambiar entre modos rápido y fiable por mensaje.

Se recomiendan las difusiones de baja frecuencia como una solución simple para entregar actualizaciones a clientes que perdieron la conectividad momentáneamente o no lograron capturar un mensaje mientras se unían a la isla.

El index el campo es un contador incremental, establecido por el remitente para que los receptores puedan ordenar las actualizaciones que llegan fuera de orden.

Compartir perfil

Los clientes dentro de una isla pueden solicitar la información del avatar de otros jugadores, para renderizar sus avatares, mostrar sus nombres e imágenes, etc.

Dado que los cambios de perfil son poco frecuentes (en comparación con las actualizaciones de posición, por ejemplo), el sistema está diseñado para simplificar la tarea de mantener una caché local de perfiles, y solo obtener perfiles cuando sea necesario.

Hay 3 Packet tipos involucrados: un ProfileRequest/ProfileResponse par usado por los clientes para compartir perfiles bajo demanda, y el AnnounceProfileVersion mensaje para indicar a los pares cuál es la versión más reciente, para que puedan decidir si solicitarla.

Los clientes suelen difundir AnnounceProfileVersion mensajes periódicamente, además de hacerlo inmediatamente cuando su perfil cambia.


AnnounceProfileVersion ↗ fuente

Indica a otros clientes que hay un entidad de perfil que pueden solicitar.

Campo
Tipo
Valor

profile_version

uint32

Un número de versión incrementado con cada modificación.

Los receptores que almacenan perfiles en caché pueden usar el profile_version número para decidir si su copia local está actualizada o si necesitan enviar una ProfileRequest.


ProfileRequest ↗ fuente

Solicita un perfil de una versión especificada a un par concreto.

Campo
Tipo
Valor

address

string

La dirección identificadora del perfil.

profile_version

uint32

La versión de perfil deseada.

Los receptores pueden responder con ProfileResponse mensajes para proporcionar el perfil solicitado.


ProfileResponse ↗ fuente

Envía un perfil en respuesta a una ProfileRequest.

Campo
Tipo
Valor

serialized_profile

string

Entidad de perfil serializada en JSON.

base_url

uint32

URL base para un endpoint del sistema de archivos, recomendada por el remitente.

El serialized_profile el campo contiene la serialización JSON de una entidad de perfil.

Si el remitente desea recomendar un servidor de contenido para descargar entidades referenciadas en su perfil (como wearables), puede establecer el base_url campo como una sugerencia. Los clientes son libres de usar o ignorar esta URL.

Última actualización