Ejecución
El tiempo de ejecución trata escenas como módulos típicos de Node. Una vez que el sandbox está configurado (es decir, todos los globals se inyectan y módulos están listos para ser cargados), el código de la escena será evaluado para que pueda poblar el objeto .
El host recogerá dos métodos de objeto: onStart (opcional) y onUpdate (obligatorio).
type Exports = {
onStart?: () => Promise<void>;
onUpdate: (deltaSeconds: number) => Promise<void>;
};Durante el ciclo de vida de una escena, el tiempo de ejecución se asegurará de que las llamadas a estos métodos nunca se realicen de forma concurrente. La Promise devuelta siempre se esperará antes de que la escena reciba una nueva llamada.
La sincronización efectiva y con buen rendimiento entre escenas individuales y el motor de renderizado del juego es un asunto complicado. Puedes encontrar lecciones de la implementación de la Foundation en ADR-148.
onStart
El ciclo de vida de una escena comienza con el método asíncrono onStart . Es el lugar para realizar inicializaciones únicas que deben completarse antes de que se haga la primera llamada a onUpdate .
onStart(): Promise<void>Las escenas deben usar esta llamada para solicitar cualquier estado preexistente del tiempo de ejecución (como las entidades básicas) y realizar su propia configuración inicial.
Exportar onStart se recomienda para todas las escenas (y se hace automáticamente al usar el SDK), pero no es un requisito del protocolo. El método puede estar ausente, o devolver una Promise.
onUpdate
Mientras una escena se está ejecutando activamente, el método asíncrono onUpdate será invocado periódicamente por el tiempo de ejecución para informar del paso del tiempo. Este es el corazón de la escena: en cada llamada sucesiva, las entidades pueden actualizarse, procesarse la entrada, reproducirse animaciones, enviarse mensajes, mostrarse UI, etc.
onUpdate(deltaSeconds: number): Promise<void>El deltaSeconds el parámetro es el número fraccionario de segundos transcurridos desde la última llamada a onUpdate fue iniciada por el tiempo de ejecución (independientemente de cuándo la Promise devuelta se resolvió). Esto es específico para cada escena en ejecución.
Dado que onUpdate las llamadas nunca se solapan, la secuencia de deltaSeconds produce una línea de tiempo coherente.
En circunstancias ideales, las escenas tienen la oportunidad de ejecutarse onUpdate antes de que se renderice cada frame. Sin embargo, dependiendo de los recursos disponibles, las escenas que ejecutan una carga de trabajo pesada pueden no resolver su Promise a tiempo para el siguiente frame. Cada escena es independiente en este aspecto: implementaciones ligeras de onUpdate pueden ser invocadas varias veces en el mismo periodo que una única llamada que consume mucho tiempo en otra escena.
Ver ADR-148 para más detalles.
Ejecución de Múltiples Escenas
El World Explorer no solo debe soportar la ejecución de varias escenas en sandbox, sino que debería hacerlo en todo momento. Hay dos razones para esto:
Primero, cuando los jugadores exploran el mundo, su vista alcanza más allá de los límites geográficos de la escena en la que están. Las escenas cercanas (hasta una distancia arbitraria o configurable) deben estar en ejecución para generar el contenido que los jugadores deberían poder ver.
Segundo, las escenas no solo se ejecutan dentro de sus propios límites no solapados. También pueden superponerse unas sobre otras, afectando el área alrededor del jugador pero proporcionando diferente funcionalidad.
Este es el caso de dos tipos de escenas en particular: la escena de avatar y las experiencias portátiles.
La Escena de Avatar
Desde el momento en que el jugador entra en el mundo, una escena global encargada de renderizar los avatares de otros jugadores comienza a ejecutarse.
Esta escena no está limitada por límites geográficos, y puede mostrar sus entidades (así como widgets de UI para comunicación) independientemente de la ubicación del jugador.
Experiencias Portátiles
Decentraland permite que los wearables tengan su propio comportamiento, que se ejecuta en su propio contexto de escena. Estas escenas están centradas alrededor del jugador y pueden enriquecer la experiencia añadiendo entidades o mostrando widgets de UI.
Comienzan a ejecutarse cuando el wearable está equipado y se detienen cuando se retira.
Última actualización