Optimiser votre jeu Unity sur tous les facteurs de forme

Dans le marché concurrentiel actuel des jeux vidéo, il est plus important que jamais de toucher une audience aussi large que possible. En développant des jeux pour différents facteurs de forme, tels que des téléphones, des tablettes, des appareils pliables et des ordinateurs, vous pouvez toucher un plus grand nombre de joueurs potentiels et augmenter vos chances de réussite.

Prendre en charge le redimensionnement de l'écran

Pour qu'il soit compatible avec différents facteurs de forme, votre jeu doit être redimensionnable. Le redimensionnement permet à votre jeu de prendre en charge des configurations d'appareil telles que les orientations portrait et paysage, le mode multifenêtre, et les états plié et déplié des appareils pliables.

Si votre jeu n'est pas compatible avec toutes les configurations de taille et d'orientation de fenêtre, la plate-forme met votre jeu au format letterbox en mode de compatibilité et, si nécessaire, invite le joueur avant de passer à une configuration non compatible.

Figure 1 : Boîte de dialogue de compatibilité de la configuration.

Pour en savoir plus, consultez la section Prendre en charge le redimensionnement des grands écrans.

Mode multifenêtre

Figure 2 : Différentes interfaces utilisateur sur ordinateur et appareil pliable en position à plat.

Le mode multifenêtre permet à plusieurs applications de partager simultanément le même écran. Les applications peuvent être côte à côte ou l'une au-dessus de l'autre (mode Écran partagé), l'une dans une petite fenêtre superposée aux autres (mode Picture-in-picture), ou chaque application dans des fenêtres mobiles distinctes et redimensionnables (mode Format libre).

Pour éviter de passer en mode de compatibilité lorsque votre jeu s'exécute en mode multifenêtre, déclarez que votre jeu peut gérer le redimensionnement en activant l'option Resizable Window (Fenêtre redimensionnable) dans les paramètres de compilation Unity.

Figure 3. Paramètres de résolution et de présentation d'Unity pour Android

Encoches

Une encoche est une zone sur certains appareils qui s'étend jusqu'à la surface d'affichage. Les découpes permettent une expérience bord à bord tout en laissant de l'espace pour d'importants capteurs à l'avant de l'appareil.

Figure 4. Encoche.

Pour proposer une expérience bord à bord à votre jeu, configurez le jeu pour qu'il soit compatible avec le cadre sécurisé. Interrogez l'API SafeArea d'Unity pour obtenir la zone de sécurité de l'écran en pixels et ajustez l'UI et l'expérience utilisateur en conséquence, en particulier pour les éléments avec lesquels les utilisateurs peuvent interagir.

Positions des appareils pliables

Les appareils pliables peuvent avoir différents états pliés, par exemple FLAT (entièrement ouvert) ou HALF_OPENED (entre complètement ouvert et complètement fermé). Lorsqu'un appareil est à l'état HALF_OPENED, deux positions sont possibles, en fonction de l'orientation du pli: la position à plat (pli horizontal) et la position livre (pli vertical). Utilisez la position à plat pour augmenter l'immersion et l'engagement des joueurs.

Figure 5. Jeu en position à plat avec la vue principale sur la partie verticale de l'écran et les commandes sur la partie horizontale.

Pour implémenter la position à plat, étendez l'activité Unity par défaut, puis utilisez la bibliothèque de mise en page Jetpack WindowManager pour rendre votre jeu pliable.

Exemple de projet Unity

L'exemple de projet Unity est basé sur le projet de démonstration Unity 2D Lost Crypt. L'exemple de projet montre comment permettre le redimensionnement des grands écrans dans Unity. La compatibilité avec les grands écrans et les appareils pliables nécessite un certain nombre de modifications des options de compilation Unity, ainsi que des considérations dans la mise en page de votre appareil photo et des canevas de l'interface utilisateur.

Vous pouvez télécharger l'exemple de projet dès maintenant. Le projet contient quatre scènes différentes:

  • Original:compatibilité avec la fonctionnalité redimensionnable de base
  • Ancrage:identique à la scène d'origine, mais s'adapte à différents formats et évite l'encoche
  • HingeAware:identique à la scène "Ancrage", mais compatible avec la position à plat
  • Menu principal:démarrage de la scène, permettant de naviguer vers les autres scènes et entièrement compatible avec toutes les orientations de l'appareil, ainsi qu'avec les plis, les dépliements et les positions à plat

Lors de la compilation pour Android, sélectionnez toutes les scènes et définissez la scène "Mainmenu" (Menu principal) comme scène de départ.

Figure 6. La scène "Menu principal" vous permet d'accéder aux autres scènes, en position à plat.

Commencer par prendre en charge le redimensionnement des fenêtres

Assurez-vous que votre jeu ou application s'affiche correctement sur différents appareils en prenant en charge différents formats et tailles d'écran dans votre application Android pour grand écran. Autorisez votre jeu à redimensionner et à modifier les proportions en définissant la propriété Resizable Window (Fenêtre redimensionnable) dans les paramètres de compilation Unity (consultez la section Mode multifenêtre). Ajustez le format de la caméra et du canevas pour qu'ils s'adaptent mieux à différents écrans. Affichez les paramètres du projet dans Build Settings (Paramètres de compilation) et dans le fichier Plugins/Android/AndroidManifest.xml. Découvrez la fonctionnalité de redimensionnement plein écran dans la scène "Original" du projet.

Figure 7. La scène "d'origine" est compatible avec la fonctionnalité de fenêtre redimensionnable.

Profitez du plein écran immersif tout en gérant les encoches

Autorisez votre jeu à utiliser la totalité de l'écran pour une expérience de jeu immersive et une expérience utilisateur améliorée. Mettez à jour les paramètres d'ancrage et de caméra de l'interface utilisateur de votre jeu pour qu'ils s'adaptent automatiquement à la taille de l'écran. Cela permet aux éléments d'interface utilisateur de conserver leur position par rapport à la taille de l'écran.

La scène "Ancrage" utilise le script CameraAspectLock pour répondre aux modifications de configuration de l'appareil au moyen d'une activité étendue (voir Assets/Plugins/Android/LargeScreenPlayableActivity.java). L'API SafeArea d'Unity est illustrée dans le script SafeZoneAPI, qui se lie à l'objet SafeZone dans la scène "Ancrage".

Scène de jeu en plein écran sur les écrans intérieur et extérieur d'un appareil pliable.
Figure 8 : Scène "Ancrage" avec encoche pour écran.

Optimiser pour les appareils pliables

La dernière scène de l'exemple de projet Unity, "HingeAware", contient un objet ConfigurationManager qui répond aux différents états de pliage de l'appareil cible via les API de la bibliothèque Jetpack et une activité étendue (voir Assets/Plugins/Android/LargeScreenPlayableActivity.java). La scène utilise le script PanelOnFold pour contrôler l'interface utilisateur en fonction de l'état de pliage de l'appareil, par exemple en affichant le panneau du contrôleur inférieur lorsque l'appareil est dans la table.

Figure 9 : La scène "HingeAware" prend en charge la position sur table.