Aller au contenu principal

Chargement et écran de lancement

Votre visiteur attend une fois, au début. Ce qu'il attend, lui, est un choix que vous faites, et c'est le plus gros levier sur la sensation que donne l'ouverture de votre expérience.

Trois façons pour une ressource d'arriver

Ce qui se passeBon pour
Préchargéerécupérée avant l'ouverture de la scène ; l'écran de lancement l'attendtout ce qui est visible dans les premières secondes
Différéela scène s'ouvre sans elle ; elle apparaît quand elle arrivedu contenu plus loin dans l'expérience
En fluxjoué directement depuis le réseau, jamais récupéré en entierla vidéo et l'audio
Différer n'est pas diffuser en flux

Seuls la vidéo et l'audio peuvent commencer à jouer avant d'être entièrement arrivés. Un modèle, une texture ou une police doivent arriver complets avant qu'on puisse s'en servir ; différer signifie seulement que la scène s'ouvre sans attendre, et que la ressource apparaît lorsqu'elle est prête.

Le défaut du projet, et les exceptions par ressource

Le réglage de projet Preload est le défaut pour tout. Chaque ressource peut ensuite le surcharger :

La ressource ditRésultat
preload ontoujours attendue, quoi que dise le projet
preload offtoujours différée
inheritsuit le projet

Les nouvelles ressources démarrent raisonnablement : la vidéo et l'audio sont en flux par défaut — attendre une vidéo entière avant d'ouvrir la scène n'apporte rien — et tout le reste suit le projet.

Le choix appartient à la ressource, pas à l'objet qui l'utilise

Deux objets partageant un fichier ne peuvent plus être en désaccord sur sa façon de charger. Réglez-le une fois, sur le fichier.

Une recette pratique

Pour la plupart des projets :

  1. Précharger les modèles de la première scène, ses textures et toute police affichée immédiatement.
  2. Différer tout ce qui appartient aux scènes suivantes.
  3. Diffuser en flux toute la vidéo et tout l'audio, ce qui est déjà le défaut.

Le résultat : une courte attente, suivie d'une expérience qui ne bloque plus jamais.

L'écran de lancement

Avant que le monde existe, deux écrans peuvent apparaître : celui que le visiteur touche pour commencer, et celui qui se remplit pendant que les ressources arrivent.

Les deux se configurent dans les réglages du projet — fond, logo, bouton de démarrage et son libellé, les messages d'accueil, le style du loader.

Gardez le bouton de démarrage si vous avez le moindre son

Les navigateurs refusent de jouer de l'audio tant que le visiteur n'a pas interagi avec la page. Les permissions AR fonctionnent pareil : elles sont accordées à l'intérieur du toucher qui les a demandées. Sans bouton à presser, votre premier son ne se joue pas en silence et la demande de caméra peut ne jamais apparaître.

Le remplacer par le vôtre

L'écran intégré est un préréglage. S'il vous faut le vôtre, un script de lancement prend entièrement en charge les deux écrans — et, fait inhabituel, il déclare aussi son propre panneau de réglages : celui qui l'utilise obtient des champs à remplir plutôt que du code à modifier.

init((ctx: PreloadContext) => {
// Déclare le panneau. Tourne avant tout dessin — déclarez seulement, ne dessinez jamais.
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', () => {
/* l'écran qu'ils touchent pour commencer */
});

ctx.on('loading', () => {
/* l'écran qui se remplit */
});

ctx.on('progress', ({ loaded, total, percent }) => {
/* mettez à jour votre propre barre */
});

ctx.on('ready', () => {
/* tout est arrivé */
});
});
ÉvénementSe déclenche quand
describele panneau est en construction — dans le runtime comme dans l'éditeur
startle runtime démarre
launchil faut afficher l'écran que le visiteur touche
loadingil faut afficher l'écran qui se remplit
progressdes ressources arrivent — loaded, total, percent
readytout le nécessaire est arrivé
errorquelque chose s'est mal passé

Les paramètres peuvent être localisés, donc un seul script de lancement sert toutes les langues que votre projet propose.

Démarrez la scène depuis l'intérieur du toucher

Ce qui déclenche le début doit être appelé depuis le gestionnaire de clic du bouton lui-même. Les permissions — orientation de l'appareil, caméra — ne sont accordées qu'à l'intérieur du geste qui les a demandées, et un démarrage reporté à l'image suivante perd ce droit.

Un script de lancement cassé ne peut pas enfermer vos visiteurs dehors

S'il lève une erreur, le runtime abandonne le préréglage et affiche l'écran intégré à la place.

Ce qui n'attend pas

La physique n'est pas téléchargée du tout tant qu'une scène n'en a pas besoin, et la disposition des objets instanciés et des particules est générée plutôt que transférée. Les deux sont traités dans pourquoi ce moteur — ils participent de la même idée : ne pas faire attendre les gens pour ce dont ils n'ont pas besoin.


Suite : Les paquets partagés