Last updated: 06/10/2024, 02:17

Current Project: Rejuvenation of Hellkeeper.net

MyLevel

Le package MyLevel est un package fictif qui permet de stocker une ressource de n'importe quel type directement dans le fichier de la map elle-même, aussi bien sous l'Unreal Engine 1 que sous l'Unreal Engine 2.

Plutôt que de distribuer une map avec un package de textures, de static-meshes, de sons, d'actors, etc. (respectivement des packages .utx, .usx, .uax, .u, etc.), utiliser le package MyLevel permet de ne distribuer que le fichier de la map elle-même (.unr, .ut2, .un2, etc. suivant le jeu).

MyLevel permet aussi de séparer des ressources parfaitement uniques à la map du reste du jeu. C'est par exemple généralement là qu'est stocké le screenshot de la map affiché sur l'écran de sélection de niveau dans le jeu.

Le nom du package est insensible à la casse, ce qui signifie que MyLevel, mylevel, MYLEVEL et toutes les variations possibles sont équivalents.

S'il est avantageux d'utiliser ce package pour stocker quelques textures utilisées dans le niveau, il est plus intéressant, si l'on utilise un grand nombre de ressources en commun entre plusieurs maps, de les distribuer sous forme d'un package séparé. Certains packages sont ainsi relativement célèbres suite à leur diffusion à grande échelle indépendamment des maps qui les utilisent. C'est le cas par exemple de richrig.utx ou des packs de textures offerts par Hourences.

Utilisation

Lors de l'importation d'une ressource ou de sa création directement dans UnrealEd, l'éditeur demande toujours où la stocker en réclamant un nom et un package (obligatoires) ainsi qu'un groupe (optionnel). Quelle que soit la ressource que l'on crée, il est toujours possible d'indiquer MyLevel.

Importation d'un son dans MyLevel

De même, il est possible de dupliquer par exemple une texture et de mettre la copie dans MyLevel pour la garder dans la map. Utiliser la copie MyLevel au lieu de l'original permet alors de s'assurer que les joueurs ne disposant pas du package d'origine n'ont pas de problème de ressource manquante.

Copie d'une texture dans MyLevel

Il est possible de récupérer une ressources stockée dans le package MyLevel d'une map en ouvrant cette map, ce qui met automatiquement à disposition son package MyLevel. En ouvrant ensuite la map où l'on compte utiliser la ressource, le contenu du MyLevel des niveaux précédemment ouverts reste accessible, ce qui permet de les utiliser. La ressource est alors dupliquée dans le MyLevel du second niveau, il n'est pas nécessaire de distribuer la map d'origine avec.

Une fois que le package contient quelque chose, il devient visible dans la liste déroulante des packages du browser de ressources du même type. Il n'est pas accessible par le menu (File -> Open) car ce menu ne donne accès qu'aux packages externes.

MyLevel dans la liste des packages

Notez que lorsqu'une ressource est importée ou créée dans MyLevel, il est possible que le package ne soit pas disponible dans la liste déroulante du browser. Il s'agit d'un bug mineur. Il suffit de copier ou d'importer une autre ressource du même type dans MyLevel pour que celui-ci devienne visible.

MyLevel n'apparaît dans un browser que s'il contient au moins une ressource correspondante. Si seules des textures y sont stockées, MyLevel n'apparaît que dans la liste des packages du texture browser et pas, par exemple, dans celle du static-mesh browser.

Contraintes spécifiques

Il existe deux impératifs à garder en mémoire lors de l'utilisation de MyLevel. D'abord, ce package ne doit jamais être sauvegardé à la main. En effet, sauvegarder MyLevel manuellement crée un package séparé de ce nom ce qui casse presque intégralement le jeu. En effet, tout niveau utilisant une ressource réputée stockée dans "MyLevel" ira alors la chercher dans ce package externe (où elle ne se trouve pas) au lieu d'accéder à son package interne. L'intégralité des maps du jeu utilisent MyLevel pour stocker au moins quelques ressources, y compris la séquence d'introduction du jeu (avec le logo Nvidia), et y stockent aussi des données comme les paramétrages des emitters. Toutes ces maps seront alors incapables d'accéder à un nombre parfois conséquent de données et le jeu sera alors largement non fonctionnel.

L'autre contrainte est qu'à la fermeture de l'éditeur, toute ressource se trouvant dans MyLevel et n'étant pas utilisée dans la map est supprimée du package. Cela permet de réduire le poids du fichier de la map au minimum en n'y conservant pas de ressources inutiles, mais cela signifie qu'il n'est pas possible d'y stocker des ressources pour plus tard. En revanche, le package est intelligent et ne supprimera pas, par exemple, un mesh qui n'est utilisé que dans un MeshEmitter ou une texture qui est intégrée dans un shader utilisé dans la map, même si la texture elle-même n'est pas appliquée sur un static-mesh ou une surface BSP.

MyLevel est consolidé automatiquement à la fermeture de l'éditeur : si les ressources inutilisées sont supprimées, celles en cours d'utilisation sont sauvegardées automatiquement. Lorsque plusieurs maps sont ouvertes à la suite les unes des autres, le package se charge du contenu intégré à toutes les maps ouvertes, ce qui peut rendre difficile de se repérer dans une grande quantité de ressources. Une fois l'éditeur fermé puis rouvert, seuls les éléments intégrés à la map sont conservés. Le ménage se fait tout seul.

© 2005-2025, by Hellkeeper.

Valid XHTML 1.1 & CSS 3