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:
- Comment le son affecte les performances
- Nous nous occupons des options d'importation
- Mes paramètres recommandés pour PC et consoles
- Mes paramètres recommandés pour les plateformes mobiles
- 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-plan | Précharger les données audio | Ré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 compression | Utilisation du processeur avec 1 vote | Utilisation 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'origine | Taux 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 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 | 70 | Conserver | |
Longues boucles de sons ambiants | n / a | Streaming | n / a | Vorbis | 70 | Conserver | |
Sons surround uniques | Oui | Décompresser à la charge | Oui | Vorbis | 70 | Conserver | |
Effets de bruit | 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.
|
Pas | N | Compressé dans la mémoire | Oui | PCM | n / a | Optimiser | |
Musique (chansons longues) | n / a | Streaming | n / a | Vorbis | 85 | Conserver | La diffusion en continu peut ne pas être appropriée si plusieurs pistes de musique sont lues simultanément |
Musique (courts extraits) | Oui | Compressé dans la mémoire | Oui | Vorbis | 85 | Conserver
| |
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, / , . , , .