Optimisez les performances du jeu avec les options d'importation du son Unity

image

Les développeurs ne comprennent généralement pas complètement les options d'importation de sons dans Unity, et au moment de la rédaction, je ne pouvais pas trouver un seul guide détaillé de leur utilisation. La documentation Unity décrit bien ce que font les options d'importation de sons, mais je voudrais analyser ces descriptions pour un public plus large, et expliquer plus en détail comment appliquer ces paramètres pour tirer le meilleur parti du jeu.

Ce document est divisé en cinq parties:

  1. Comment le son affecte les performances
  2. Nous nous occupons des options d'importation
  3. Mes paramètres recommandés pour PC et consoles
  4. Mes paramètres recommandés pour les plateformes mobiles
  5. Précautions et notes

L'optimisation des options d'importation du son Unity est l'une des méthodes d'optimisation les plus simples. Dans le cas d'un petit projet, il peut prendre moins d'une heure pour obtenir des améliorations significatives du temps de démarrage, de la RAM et d'autres aspects de performances. J'espère que ce guide vous sera utile. Les informations sont pertinentes pour Unity version 2018.3

1. Comment le son affecte les performances


Les données sonores sont volumineuses. Dans de nombreux jeux, les données audio occupent la part du lion de l'espace disque (disque / cartouche / disque optique où les données de jeu sont stockées) et de la RAM (mémoire de travail du système). Mais non seulement cela, ils chargent également sérieusement le processeur, surtout si vous utilisez les effets du DSP (traitement du son en temps réel), et augmentent également considérablement le temps de chargement.

Dans ces trois domaines (espace disque occupé par la RAM, utilisation du CPU), l'optimisation est un bras de fer à trois voies similaire au problème «bon marché-rapide» . Si un aspect du jeu vous cause le plus de dégâts, vous pouvez maintenir l'efficacité d'un aspect en en sacrifiant un autre. Par exemple, si le son non compressé occupe trop de RAM, vous pouvez le stocker sous forme compressée Vorbis - cela économise de l'espace en RAM, mais au prix de la charge CPU, car l'accès au fichier compressé nécessite plus de puissance de traitement pour le décoder. Voici un tableau avec divers paramètres et leur effet sur ces trois domaines:


Il convient de noter que ce diagramme ne nous dit rien sur la bande passante des données lues à partir du disque / RAM.

En réalité, il y a quelques nuances supplémentaires, mais le diagramme devrait vous donner une idée générale de la façon dont ces problèmes sont interconnectés. Pour comprendre comment utiliser ces paramètres (et gérer les problèmes tels que le temps de chargement trop long), vous devez considérer chacune des options d'importation audio en détail.

2. Comprendre les options d'importation


Lorsque vous sélectionnez AudioClip dans l'éditeur Unity, le panneau suivant apparaît dans la fenêtre d'inspection:


Vous trouverez ci-dessous une liste d'options sonores de haut en bas avec une description de ce qu'elles font:

Forcer en mono


  • Oui: si AudioClip est enregistré en stéréo (ou avec un nombre différent de canaux), ce paramètre combine tous les canaux en un seul canal mono.
  • Non: le nombre de canaux ne change pas.

Dans mon travail de sound designer, je ne réduis jamais le signal audio en mono, car je crée des sons dans un but précis. Mais si vous utilisez des sons standard de stock et que vous souhaitez activer ce paramètre, assurez-vous que le fichier mono ne sonne pas plat et étrange en raison de l'interaction interfaciale des canaux gauche et droit. Vous pouvez prévisualiser le son traité en cliquant sur le bouton Lecture dans le coin inférieur droit de la fenêtre d'inspection - si vous entendez une distorsion de phase, vous pouvez essayer de séparer le son dans un éditeur audio tiers et d'exporter individuellement les canaux gauche et droit en son mono.

Normaliser (uniquement disponible lorsque Force to Mono est activé)


  • Oui: ajuste le gain d'AudioClip pour que le son monaural ait le même volume que le fichier stéréo d'origine.
  • Non: ne règle pas le gain.

Si vous utilisez Force to Mono, cela vaut généralement la peine d’activer la normalisation. Un fichier stéréo fort lorsqu'il est mixé en mono peut devenir encore plus fort, dépasser l'amplitude maximale et conduire à une distorsion numérique nette, ce qui n'est pas souhaitable.

Charger en arrière-plan / précharger les données audio


Ces paramètres ont un effet direct les uns sur les autres, je les ai donc combinés.
Charger en arrière-planPrécharger les données audioRésultat
ActivéActivéLorsqu'une scène est chargée, les clips audio avec ce paramètre commencent à se charger, mais n'arrêtent pas le flux principal. Si au moment où la scène est entièrement chargée, elles n'ont pas toutes été chargées, le téléchargement continuera en arrière-plan lorsque la scène est déjà en cours d'exécution. Si le son n'est pas chargé, mais est déjà en cours d'exécution, il se comportera de la même manière que lors de la précharge désactivée (voir la ligne ci-dessous).
ActivéDésactivéLorsqu'un son démarre pour la première fois, il se charge en arrière-plan et joue lorsqu'il est prêt. Si le fichier est volumineux, il peut y avoir un délai notable entre le démarrage et la lecture, mais avec les lectures suivantes du fichier, tout ira bien.
DésactivéActivéLe son est chargé pendant le chargement de la scène. La scène ne démarre que lorsque tous les sons avec ce paramètre activé sont chargés en mémoire.
DésactivéDésactivéLorsque le son est démarré pour la première fois, il utilise le flux principal pour se charger en mémoire - si le fichier est volumineux, cela peut provoquer un ralentissement des images, mais dans les reproductions suivantes, tout sera en ordre.

Je recommande d'utiliser cette configuration uniquement pour de très petits fichiers, mais même dans ce cas, il vaut la peine de mesurer son effet sur les performances dans le profileur, et de se demander si un grand nombre de ces sons peuvent être lancés simultanément, augmentant la charge sur les performances.

Ambisonique


  • Cochez cette case si le son est encodé en Ambisonic. Les sons ambisoniques sont utiles pour VR, AR, vidéo panoramique, etc., mais ce paramètre n'est pas lié à notre manuel.

Options spécifiques à la plateforme


  • Ces onglets vous permettent de définir des paramètres par défaut et des paramètres spécifiques à la plate-forme pour les paramètres répertoriés ci-dessous. Certaines plates-formes ont des formats de compression qui ne sont pas disponibles sur d'autres; certaines peuvent avoir d'autres équipements qui nécessitent une optimisation différente. Pour la compression spécifique à la plate-forme, consultez les notes ci-dessous.
  • Vérifiez toujours les paramètres spécifiques à la plate-forme, même si vous souhaitez utiliser des paramètres communs. Parfois, Unity peut définir automatiquement des paramètres spécifiques à la plate-forme. Par exemple, les versions pour iOS peuvent par défaut «spécifier la fréquence d'échantillonnage: 22 kHz», ce qui peut conduire à un aliasing (un défaut sonore résultant d'un sous-échantillonnage incorrect).

Type de charge


  • Décompresser au chargement: le son est stocké sur le disque dans le format de compression spécifié, mais il est décompressé et chargé dans la RAM non compressé au format PCM. Cela prend beaucoup de RAM et augmente légèrement le temps de démarrage, mais il est très peu coûteux du point de vue du processeur et l'accès est très rapide.
  • Compressé en mémoire: à la fois sur le disque et dans la RAM, le son est stocké dans le format de compression spécifié. La place et le temps de chargement utilisés dans la RAM sont réduits, mais la charge du processeur augmente pendant la reproduction du son, car elle doit être déballée à chaque reproduction.
  • Streaming: Le streaming audio est lu directement à partir du disque, contournant complètement la RAM. Cela occupe une partie de la bande passante du disque et des ressources du processeur, mais sur les PC et les consoles, cela n'affecte pas de manière significative les performances, à condition que pas plus de deux sons soient diffusés simultanément. Sur les plates-formes mobiles (en particulier sur les appareils bon marché et anciens), la diffusion simultanée de plusieurs fichiers stéréo charge fortement le processeur (voir la section «Précautions» ci-dessous).

Format de compression


  • PCM: données audio brutes, complètement décompressées et occupent beaucoup d'espace sur le disque et dans la RAM, mais il n'y a pratiquement pas de frais pour les lire, car le décompression n'est pas nécessaire.
  • ADPCM: un format de compression très ancien avec un taux de compression de 3,5: 1. La compression / décompression est assez peu coûteuse par rapport à Vorbis ou à d'autres formats de compression, mais introduit des artefacts de bruit numérique dans le son, vous devez donc l'utiliser uniquement dans des «sons bruyants», dans lesquels ils ne seront pas perceptibles. Si vous ne savez pas si ADPCM convient à un son particulier, activez la pré-écoute du son aux formats PCM et ADPCM - si vous entendez une différence, je vous recommande de choisir PCM.
  • Vorbis: un format compressé compatible avec les plates-formes les plus populaires. Il peut fournir des taux de compression suffisamment élevés, tout en conservant une qualité sonore décente, mais il est assez coûteux de compresser et de décompresser à la volée.

Je n'ai répertorié ici que les formats d'éditeur standard, pour plus d'informations sur les types et la compression spécifiques à la plate-forme, consultez la section "Remarques" ci-dessous.

Voici une brève comparaison de la charge du processeur pour différents formats sur mon PC dans l'éditeur Unity:

Format de compressionUtilisation du processeur avec 1 voteUtilisation du processeur avec 6 votes
PCM~ 0,05%~ 0,3%
ADPCM (compressé en mémoire)~ 0,2%~ 1,0%
Vorbis (compressé en mémoire)~ 0,5%~ 3,2%

Qualité (ne s'applique pas au PCM / ADPCM)


  • 70-100%: presque impossible à distinguer du PCM en pleine qualité pour tous sauf les audiophiles avec un équipement audio coûteux
  • 1-69%: le niveau de qualité variable, des valeurs plus faibles créent de puissants artefacts répulsifs du bruit, réduisent la dynamique et rendent le son plat et sans vie. Vous pouvez cliquer sur le bouton d'aperçu dans le panneau d'inspection pour voir à quel point la qualité de chaque son particulier diminue.

Ces paramètres de qualité signifient que le son sera reproduit à une vitesse de 100%, ils coupent donc certaines des hautes fréquences qui sont généralement en dehors de la plage audible. Mais lorsqu'ils jouent à vitesse réduite, ils descendent dans la plage audible. Si vous prévoyez de reproduire un son avec une tonalité / vitesse faible, il est préférable de choisir l'encodage dans PCM.

Plus la qualité est faible, plus les fichiers sont compressés:

Qualité Vorbis% de la taille d'origineTaux de compression
100~ 20%~ 5: 1
75~ 10%~ 10: 1
50~ 7%~ 14: 1
25~ 4%~ 25: 1
1~ 2%~ 50: 1

Réglage du taux d'échantillonnage


  • Conserver: utilise la fréquence d'échantillonnage à laquelle le son est enregistré.
  • Optimiser: Unity analyse le son et trouve sa fréquence maximale, puis utilise le théorème de Nyquist pour déterminer la fréquence d'échantillonnage la plus basse pouvant être appliquée sans perdre ces fréquences. Par exemple, si la fréquence sonore maximale est de 10 kHz, la fréquence d'échantillonnage peut être réduite sans perte de contenu sonore à 20 kHz. Ce paramètre ne peut être utilisé que pour PCM / ADPCM.
  • Override: Si vous le souhaitez, vous pouvez définir manuellement un nouveau taux d'échantillonnage pour AudioClip. En général, je ne recommande pas de le faire si vous ne comprenez pas à quoi cela conduira.


3. Paramètres recommandés pour PC et consoles


Type de sonCharger en arrière-plan
Type de chargePrécharger les données audioFormat de compressionLa qualitéRéglage du taux d'échantillonnageRemarques
DialoguesOuiCompressé dans la mémoireOuiVorbis70Conserver
Longues boucles de sons ambiantsn / aStreamingn / aVorbis70Conserver
Sons surround uniquesOuiDécompresser à la chargeOuiVorbis70Conserver
Effets de bruitNCompressé dans la mémoireOuiPCMn / aOptimiserSi le ton de ces sons a déjà baissé, alors la fréquence d'échantillonnage doit être maintenue.
PasNCompressé dans la mémoireOuiPCMn / aOptimiser
Musique (chansons longues)n / aStreamingn / aVorbis85ConserverLa diffusion en continu peut ne pas être appropriée si plusieurs pistes de musique sont lues simultanément
Musique (courts extraits)OuiCompressé dans la mémoireOuiVorbis85Conserver
Voix sans dialogue
Oui
Décompresser à la charge
Oui
Vorbis
70
Conserver
Effets spéciaux (SFX, court)
N
Compressé dans la mémoire
Oui
PCM
n / a
Optimiser
Si le ton de ces sons a déjà baissé, alors la fréquence d'échantillonnage doit être maintenue.
Effets spéciaux (longs)
N
Décompresser à la charge
Oui
Vorbis
70
Conserver
Sons de l'interface utilisateur (longs)
Oui
Décompresser à la charge
Oui
Vorbis
70
Conserver
Sons de l'interface utilisateur (court)
N
Compressé dans la mémoire
Oui
PCM
n / a
Optimiser

Ces recommandations conviennent aux jeux où il y a jusqu'à 10 000 extraits sonores. Pour la plupart des sons, je recommande Decompress on Load, c'est-à-dire que dans la RAM, ils seront stockés sous forme de données audio décompressées. Si la taille totale des fichiers audio décompressés est supérieure aux limitations que vous avez imposées à la RAM, alors pour les fichiers les plus longs, vous pouvez sélectionner le paramètre Compressed in Memory. Mais gardez à l'esprit qu'à chaque lancement d'un tel son, la charge du processeur augmentera légèrement. Une version PDF de ces tableaux peut être téléchargée à partir d'ici .

4. Paramètres recommandés pour les plates-formes mobiles


Type de son
Charger en arrière-plan
Type de charge
Précharger les données audio
Format de compression
La qualité
Réglage du taux d'échantillonnage
Remarques
Dialogues
Oui
Compressé dans la mémoire
Oui
Vorbis / MP3
50
Conserver
Longues boucles de sons ambiants
Oui
Compressé dans la mémoire
Oui
Vorbis
35
Conserver
Pour les sons sans bruit, utilisez une qualité supérieure.
Sons surround uniques
Oui
Décompresser à la charge
Oui
Vorbis / MP3
50
Conserver
Effets de bruit
N
Compressé dans la mémoire
Oui
PCM / ADPCM *
n / a
Conserver
Pas
N
Compressé dans la mémoire
Oui

PCM / ADPCM *


n / a
Optimiser
Musique (chansons longues)
n / a
Streaming
n / a
Vorbis
70
Conserver
Voir les avertissements de streaming ci-dessous.
Musique (courts extraits)
Oui
Compressé dans la mémoire
Oui
Vorbis / MP3
70
Conserver
Voix sans dialogue
Oui
Décompresser à la charge
Oui
Vorbis / MP3
50
Conserver
Effets spéciaux (SFX, court)
N
Compressé dans la mémoire
Oui

PCM / ADPCM *


n / a
Optimiser
Si le ton de ces sons a déjà baissé, alors la fréquence d'échantillonnage doit être maintenue.
Effets spéciaux (longs)
N
Décompresser à la charge
Oui
Vorbis / MP3
50
Conserver
Sons de l'interface utilisateur (longs)
Oui
Décompresser à la charge
Oui
Vorbis / MP3
50
Conserver
Sons de l'interface utilisateur (court)
N
Compressé dans la mémoire
Oui
PCM / ADPCM *
n / a
Optimiser

* Si vous ne savez pas quoi choisir, PCM ou ADPCM, consultez la description du format ADPCM dans la section "Comprendre les paramètres" ci-dessus. Si économiser de l'espace disque n'est toujours pas désespérément nécessaire, je vous recommande de vous orienter vers PCM.

Ces directives fonctionneront bien dans la plupart des jeux mobiles; au moins, ils peuvent être utilisés comme point de départ. Si vous pensez que ces paramètres peuvent ne pas convenir à votre jeu, lisez la description complète des paramètres ci-dessus. Une version PDF de ces tableaux peut être téléchargée ici .

5. Précautions et remarques


Avertissements


  • La diffusion simultanée (Streaming) de plusieurs fichiers audio représente une charge assez faible sur les processeurs des PC et des consoles, mais peut créer un grave problème sur les plates-formes mobiles (en particulier sur les appareils bon marché ou anciens). Voici un graphique de mes mesures dans le profileur Unity. Il évalue l'impact du streaming de plusieurs fichiers audio sur différents téléphones Samsung Galaxy et mon PC. Le premier graphique montre 1-12 sources audio reproduites simultanément, le second - 1-3 sources sur une échelle agrandie.



  • Si le son est défini sur Décompresser à la charge, l'utilisation de la compression Vorbis réduira sa taille de dix fois sur le disque, mais pas dans la RAM, où les données PCM brutes seront toujours stockées. Si vous définissez le paramètre Compressed in Memory, vous pouvez économiser de la RAM, mais au prix du temps CPU, qui décompresse le son à la volée.
  • Chaque type de données, à l'exception de Streaming, charge par défaut le son dans la RAM et le laisse là jusqu'à ce que la scène soit déchargée. Si tout le jeu se joue sur une grande scène, les sons peuvent remplir toute la RAM disponible. Pire, la suppression manuelle de clips audio de la RAM est extrêmement inefficace et peut entraîner une baisse de la fréquence d'images, ce qui peut se produire si vous affectez cette tâche au garbage collector. Si vous avez beaucoup de données audio, vous devrez peut-être effectuer une optimisation pour réduire la RAM utilisée dans d'autres domaines à l'aide des Unity AssetBundles. Le paramètre Preload Audio Data ne peut pas non plus changer cela, car il ne détermine que le moment où les données sont chargées dans la RAM, et non ce qui leur arrive ensuite.
  • Si la plate-forme cible prend en charge le format MP3, veuillez noter que la boucle automatique n'est pas effectuée pour elle, donc je ne recommande pas d'utiliser la compression MP3 pour les boucles atmosphériques et musicales. En raison de la nature de l'encodage MP3, un morceau sans son est souvent ajouté à la fin du fichier afin que le nombre total d'échantillons soit divisé également en «images» de 1 152 échantillons. Il existe des moyens de créer des boucles MP3 transparentes, mais c'est un sujet pour un autre guide.
  • Lorsque vous désactivez Précharger les données audio et activez Charger en arrière-plan, les fichiers volumineux ne seront pas lus immédiatement, mais la charge du processeur n'augmentera pas. En effet, le téléchargement prend du temps, mais le thread principal dans ce cas n'est pas inactif.
  • Lorsque vous désactivez Précharger les données audio et désactivez Charger en arrière-plan, les fichiers volumineux du premier appel occupent le flux principal. Cependant, ce n'est pas un problème lors de l'utilisation de FMOD, qui effectue le décodage dans un flux séparé.

Remarques


Formats de compression:

  • Lors de l'importation de fichiers dans Unity, ils doivent toujours être dans un format non compressé, par exemple, en WAVE (.wav) ou AIFF (.aiff). De nombreux formats compressés sont des formats avec perte , c'est-à-dire que lorsqu'ils sont encodés, des informations sont perdues. Si vous importez un fichier compressé, tel que MP3 ou Vorbis, dans Unity, Unity le décode d' abord dans un format non compressé, puis le réencode dans le format de votre choix, même s'il s'agit du même format à partir duquel vous avez commencé. Cela peut ajouter de nouveaux artefacts de compression, ce qui est généralement indésirable.
  • La documentation du middleware AudioKinetic Wwise contient un excellent article sur les différents formats de compression sonore, leurs avantages et inconvénients, et les plateformes prises en charge.
  • Si vous utilisez FMOD, vous avez alors accès à son format FADPCM, qui est bien meilleur que l'ancien format ADPCM. Cependant, il n'est pas intégré à Unity.
  • Vous voudrez peut-être utiliser, par exemple, MP3 au lieu de Vorbis sur votre iPhone, car il a un décodeur MP3 matériel qui permet au processeur de ne pas décompresser les fichiers MP3 stockés dans la RAM ou sur le disque. Mais attention - cela peut ne pas convenir pour les sons en boucle (voir la section «Précautions» ci-dessus); en outre, il ne peut décoder qu'un seul MP3 à la fois. Si vous devez déballer plusieurs MP3 en même temps, cette opération sera effectuée par programme, comme dans le cas de Vorbis. Cela ne devrait pas poser de problèmes sérieux, mais il convient de noter que le décodage MP3 charge le processeur un peu plus que le décodage Vorbis.
  • Si la plate-forme cible est Playstation 4, le format ATRAC9 fournit un taux de compression assez élevé avec moins de charge CPU que Vorbis ou MP3.
  • Pour Xbox One, le format XMA de Microsoft est un bon remplacement pour Vorbis ou MP3. Microsoft 8:1 15:1.

:

  • PCM ( ) Compressed in Memory. Decompress on Load , , Streaming.
  • , FMOD Wwise , Unity ( - ).
  • « » (Foley), , , . , . , , .
  • (Sample Rate), Unity . , 100%, Optimise Sample Rate, / , . , , .

Source: https://habr.com/ru/post/fr437474/


All Articles