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.
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.
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.
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.
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.
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.
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.
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.
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.
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