Carga y pantalla de lanzamiento
Tu visitante espera una vez, al principio. Qué espera es una decisión tuya, y es la palanca individual más grande sobre la sensación que da abrir tu experiencia.
Tres formas en que puede llegar un recurso
| Qué ocurre | Bueno para | |
|---|---|---|
| Precargado | se descarga antes de abrir la escena; la pantalla de lanzamiento lo espera | todo lo visible en los primeros segundos |
| Diferido | la escena abre sin él; aparece cuando llega | contenido más adelante en la experiencia |
| En streaming | se reproduce directamente desde la red, nunca se descarga entero | vídeo y audio |
Solo el vídeo y el audio pueden empezar a reproducirse antes de haber llegado del todo. Un modelo, una textura o una tipografía tienen que llegar completos antes de que nada pueda usarlos: diferir uno significa solo que la escena abre sin esperar, y el recurso aparece cuando está listo.
El valor por defecto del proyecto y las excepciones por recurso
El ajuste de proyecto Preload es el valor por defecto para todo. Cada recurso puede luego sobrescribirlo:
| El recurso dice | Resultado |
|---|---|
| preload on | siempre se espera, diga lo que diga el proyecto |
| preload off | siempre se difiere |
| inherit | sigue al proyecto |
Los recursos nuevos arrancan con sensatez: el vídeo y el audio se transmiten por defecto —esperar a un vídeo entero antes de abrir la escena no aporta nada— y todo lo demás sigue al proyecto.
Dos objetos que comparten un archivo ya no pueden discrepar sobre cómo carga. Configúralo una vez, en el archivo.
Una receta práctica
Para la mayoría de los proyectos:
- Precargar los modelos de la primera escena, sus texturas y cualquier tipografía que muestres de inmediato.
- Diferir todo lo que pertenezca a escenas posteriores.
- Transmitir todo el vídeo y el audio, que ya es lo predeterminado.
El resultado es una espera corta seguida de una experiencia que no vuelve a bloquearse.
La pantalla de lanzamiento
Antes de que el mundo exista pueden aparecer dos pantallas: la que el visitante toca para empezar y la que se va llenando mientras llegan los recursos.
Ambas se configuran en los ajustes del proyecto: fondo, logotipo, el botón de inicio y su texto, los avisos de onboarding, el estilo del cargador.
Los navegadores se niegan a reproducir audio hasta que el visitante interactúa con la página. Los permisos de AR funcionan igual: se conceden dentro del mismo toque que los pidió. Sin un botón que pulsar, tu primer sonido no suena en silencio y puede que el aviso de la cámara no aparezca nunca.
Sustituirla por la tuya
La pantalla integrada es un preajuste. Si necesitas la tuya, un script de lanzamiento se hace cargo por completo de las dos pantallas y, de forma poco habitual, declara además su propio panel de ajustes, de modo que quien lo use obtiene campos que rellenar en vez de código que editar.
init((ctx: PreloadContext) => {
// Declara el panel. Corre antes de dibujar nada: solo declara, nunca dibujes.
ctx.on('describe', (p) => {
p.section('look', { en: 'Look' });
p.color('tint', { label: { en: 'Background' }, default: '#101014', section: 'look' });
p.text('caption', { label: { en: 'Caption' }, default: '', localized: true, section: 'look' });
p.boolean('hideWhenReady', { label: { en: 'Hide when ready' }, default: true });
});
ctx.on('launch', () => {
/* la pantalla que tocan para empezar */
});
ctx.on('loading', () => {
/* la pantalla que se va llenando */
});
ctx.on('progress', ({ loaded, total, percent }) => {
/* actualiza tu propia barra */
});
ctx.on('ready', () => {
/* ha llegado todo */
});
});
| Evento | Se dispara cuando |
|---|---|
describe | se está construyendo el panel, igual en el runtime que en el editor |
start | el runtime está arrancando |
launch | toca mostrar la pantalla que el visitante toca |
loading | toca mostrar la pantalla que se llena |
progress | van llegando recursos — loaded, total, percent |
ready | ha llegado todo lo necesario |
error | algo ha salido mal |
Los parámetros pueden ser localizados, así que un solo script de lanzamiento sirve para todos los idiomas que publique tu proyecto.
Lo que uses para empezar tiene que llamarse desde el propio manejador de clic del botón. Los permisos —orientación del dispositivo, cámara— solo se conceden dentro del gesto que los pidió, y un arranque aplazado al siguiente fotograma pierde ese derecho.
Si lanza un error, el runtime descarta el preajuste y muestra la pantalla integrada.
Qué no espera
La física no se descarga en absoluto a menos que una escena la necesite, y la disposición de los objetos instanciados y de las partículas se genera en lugar de transferirse. Ambas cosas se tratan en por qué este motor: forman parte de la misma idea de no hacer esperar a la gente por lo que no necesita.
Siguiente: Los paquetes compartidos