Textures, fichiers et packs · 4 min de lecture

Avertissement « oversized asset » de FiveM : sens et solution

Lire en: English · Español · Deutsch · Português · Italiano · Polski · Türkçe · Русский

Vous démarrez votre serveur et la console se remplit de lignes comme celle-ci :

text
Asset <resource>/<file>.ytd uses <size> MiB of physical memory.

C'est l'avertissement d'asset trop volumineux de FiveM. Ce n'est pas une erreur et le fichier continue de se charger, mais il vous indique les fichiers assez lourds pour poser problème. Voici ce qu'il mesure, pourquoi la taille du fichier sur disque en dit peu, et comment les alléger.

Ce que mesure FiveM

Au démarrage, FiveM lit l'en-tête de chaque fichier du dossier stream d'une ressource. Cet en-tête indique la mémoire qu'occupe le fichier une fois chargé, en deux parts : la mémoire physique (mémoire graphique : textures et tampons de sommets) et la mémoire virtuelle (mémoire système : le reste de l'asset). Les seuils, lus dans le code même de FiveM, sont les mêmes pour les deux :

Mémoire d'un fichierCe que fait FiveM
plus de 16 MiBaffiche l'avertissement
plus de 32 MiBl'affiche en jaune
48 MiB et plusajoute : "Oversized assets can and WILL lead to streaming issues (such as models not loading/rendering)."
plus de 64 MiBl'affiche en rouge

L'avertissement porte sur chaque fichier. Un .ytd de 20 MiB est signalé même si le reste de votre serveur est léger.

Pourquoi la taille sur disque trompe

Les fichiers en streaming sont compressés sur le disque, et l'avertissement compte ce qu'ils occupent chargés. Pour une texture, c'est sa taille au format du GPU, avec tous ses niveaux de mipmap, arrondie à des pages mémoire entières. Un ordre de grandeur, avant cet arrondi :

Texture (avec mipmaps)DXT1 (sans transparence)DXT5 (avec transparence)
1024 × 10240,67 MiB1,33 MiB
2048 × 20482,67 MiB5,33 MiB
4096 × 409610,67 MiB21,33 MiB

Ainsi, une seule texture DXT5 de 4096 × 4096 dépasse déjà le seuil à elle seule, et un .ytd de quelques textures 2048 peut le dépasser tout en paraissant petit dans l'explorateur de fichiers. L'arrondi aux pages peut rendre le total nettement supérieur à la somme des textures.

Si un fichier est signalé pour la mémoire virtuelle (système), ce ne sont pas les textures : ce sont les autres données de l'asset, comme sa collision. Réduire les textures ne changera rien à cela.

Trouver d'un coup tous les fichiers trop volumineux

Plutôt que de lire la console, déposez tout votre dossier resources dans Server Budget. Il lit les mêmes en-têtes dans votre navigateur (rien n'est envoyé) et liste :

  • Oversized (trop volumineux) : les fichiers de plus de 16 MiB de mémoire graphique, les pires en premier.
  • By resource (par ressource) : ce que chaque ressource diffuse, trié par mémoire.
  • Streamed twice (diffusé deux fois) : les noms de fichiers diffusés par plus d'une ressource. Le jeu n'en reçoit qu'un, gardez donc une seule copie.

La liste Oversized de Server Budget compte la mémoire graphique. Un fichier que la console signale seulement pour la mémoire virtuelle n'y figurera pas.

Réduire les textures

Prenez les fichiers signalés par Server Budget (.ytd, .ydr, .yft, .ydd) et déposez-les dans l'Asset Optimizer :

  1. Réglez Largest texture size (taille maximale de texture). 1024 est la valeur par défaut ; 2048 est un choix courant pour les véhicules et les livery regardés de près.
  2. Laissez Add missing mipmaps (ajouter les mipmaps manquants) coché : les textures enregistrées sans mipmaps les retrouvent.
  3. Vérifiez l'estimation ("At 1024 px: about … less texture memory") et le tableau des fichiers.
  4. Cliquez sur Download the lighter files (.zip) (télécharger les fichiers allégés). Vous récupérez chaque fichier sous son propre nom : remettez-les à la place des anciens.
Asset Optimizer avec quatre fichiers stream déposés : la taille de chacun, sa plus grande texture et la mémoire de texture qu'économiserait 1024 px, avec Add missing mipmaps coché
Quatre fichiers de test : l'un a des textures de 2048 px, et six n'ont pas de mipmaps ; à 1024 px, il économise environ 9 Mo de mémoire de texture.

Une texture qui a des mipmaps est réduite en supprimant ses niveaux les plus grands, sans recompression : elle ressemble donc exactement à ce qu'elle était vue d'un peu plus loin. Une texture sans mipmaps est reconstruite avec tous ses niveaux, à la taille choisie, ou à sa propre taille si elle est plus petite.

Les packs qui répètent la même texture dans de nombreux dictionnaires peuvent aussi la partager : Texture Dedupe déplace les textures répétées dans un .ytd commun. Déposez ensuite à nouveau le dossier dans Server Budget pour voir le résultat.

Questions

Les 16 MiB sont-ils une limite stricte ?
Non. FiveM diffuse toujours le fichier et se contente d'avertir. À partir de 48 MiB, son propre message indique que ces assets provoqueront des problèmes de streaming : considérez donc tout ce qui dépasse 16 MiB comme un fichier à réduire.
L'avertissement compte-t-il la taille du fichier sur disque ?
Non. Il compte la mémoire qu'occupe le fichier une fois chargé, lue dans son en-tête. Un fichier peut peser bien moins de 16 Mo sur disque tout en dépassant 16 MiB chargé.
Les textures plus petites seront-elles moins belles ?
De près, une texture 1024 est plus douce qu'une 2048. De loin, le jeu dessine déjà les niveaux de mipmap plus petits, justement ceux que l'Asset Optimizer conserve.

L'outil pour cela

Server Budget

Déposez votre dossier de ressources : mémoire graphique et système par ressource, chaque fichier de plus de 16 MiB et chaque fichier diffusé deux fois. Dans votre navigateur, rien n'est envoyé.

Ouvrir Server Budget

Aussi utile ici: Asset Optimizer · Texture Dedupe

Plus de guides

Tous les guides →

Tous les outils sont gratuits à essayer, avec 5 exports par jour. Connectez-vous avec Discord pour les utiliser.