Comment optimiser une carte dans l'éditeur de marteau?
Voulez-vous accélérer les performances de votre carte personnalisée, ne pas vous enliser dans des problèmes de rendu et réduire le temps de compilation? Voici quelques conseils pour vous aider à optimiser n'importe quelle carte dans Hammer.
- 1Scellez les pièces. C'est un must. S'il y a des fuites dans la carte, le compilateur ne sera pas en mesure de déterminer les limites de la carte et tentera de tout restituer dans la carte en une seule fois. Pire encore, les portails de zone, les pinceaux d'indice et les obturateurs de la carte ne fonctionneront pas, ce qui les rendra inutiles. De plus, l'eau ne s'affichera pas correctement s'il y a des fuites sur la carte.
- Sur la figure 1a, la pièce n'est évidemment pas étanche. Si vous compilez cette carte avec cette fuite, vvis (la partie de la compilation qui détermine les données de visibilité) ne sera pas en mesure de déterminer les limites de la carte, car les visleaves vont simplement "fuir" dans le vide noir à l'extérieur de notre carte.
- Dans la Fig. 1b, la pièce est scellée et sera compilée correctement.
- Pour vérifier les fuites, assurez-vous d'abord qu'il y a au moins une entité dans la carte (comme un "info_player_start"), sinon cela ne fonctionnera pas. Enregistrez et compilez le BSP en appuyant sur F9 ou en allant dans Fichier -> Exécuter la carte. Sélectionnez "Normal" pour Exécuter BSP et sélectionnez "Non" pour Exécuter VIS et Exécuter RAD (assurez-vous également de cocher la case "Ne pas exécuter le jeu après la compilation" boîte). Une fois la compilation terminée, fermez le journal de compilation et accédez à Carte -> Charger le fichier de point. S'il y a des fuites, il vous demandera de confirmer l'opération (ex. "Charger le fichier de points par défaut? [C:\Program Files\ - >]) Sélectionnez "Oui", et vous verrez une ligne rouge dépasser du l'entité la plus proche* à travers la zone de la fuite.(*C'est pourquoi vous avez besoin d'une entité, qu'il s'agisse d'un pinceau ou d'un point, sur votre carte. Cela ne fonctionne pas avec les pinceaux du monde ou de détail.) Colmatez la fuite, recompilez le BSP, et chargez le fichier de points. Si tout est scellé, il devrait simplement aller dans un dossier vide dans le dossier Steam\steamapps\gamertag\game\mapsrc. Vérifiez toujours s'il y a des fuites avant que la carte ne soit rendue publique.
- 2Créez des pinceaux avec "tools/toolsnodraw". Assurez-vous de toujours créer des pinceaux avec la texture tools/toolsnodraw d' abord, puis texturez uniquement ce que le joueur peut voir du point de vue du joueur. Si vous ne voyez qu'un côté d'un mur, texturez uniquement ce côté visible.
- 3Réduisez le nombre de pinceaux et de faces. Dans la mesure du possible, s'en tenir à la création de géométrie avec quelques gros pinceaux plutôt qu'un millier de petits. Plus de pinceaux équivaut à plus de visages, et plus de visages équivaut à des performances et un temps de compilation plus lents. Conclusion: si vous pouvez créer une géométrie complexe avec un ou deux pinceaux, pourquoi en utiliser plus?
- Sur la figure 3a, il y a deux pinceaux: celui de gauche a été créé à l'aide de l' outil Arch Tool qui a créé un pinceau à 8 faces avec 40 faces, et celui de droite a été fabriqué à partir d'un seul pinceau coupé avec seulement 11 faces. Ce dernier a été réalisé en utilisant l' outil de découpage (Maj + X). Pour réaliser ce dernier, il est recommandé de créer d'abord la forme géométrique souhaitée à partir de l' outil Arch Tool.d'abord pour référence. Ensuite, créez un pinceau de même longueur, largeur et hauteur que l'arc de référence et placez-le légèrement au-dessus de la référence. Sélectionnez le pinceau et coupez les angles. (vous devrez peut-être modifier la taille de la grille ("-" pour diminuer, "+" pour augmenter) et/ou déplacer manuellement les sommets (Maj + V) de l'arc de référence pour s'accrocher au point de grille le plus proche.) un pinceau géométriquement identique, mais seulement avec moins de visages!
- 4Faites bon usage des pinceaux de détail. Les brosses mondiales bloquent la visibilité, scellent la carte et divisent le BSP en «feuilles», qui sont essentiellement la façon dont le compilateur détermine ce qui peut et ne peut pas être vu à un moment et à un endroit donnés. Les pinceaux de détail ont été conçus pour être essentiellement "invisibles" pour le compilateur. Les seules brosses qui devraient être des brosses universelles sont les murs, le sol et le plafond d'une pièce. À peu près tout le reste de la pièce qui n'est pas une entité fonctionnelle et ne bloque pas de manière significative la vision du joueur doit être lié à un pinceau func_detail (liez à l'aide de Ctrl + T). Étant donné que les pinceaux de détail ne bloquent pas la visibilité, ils ne seront pas compilés dans vviscalculs et ne divisera pas la carte en plusieurs visleaves (ce qui est bien dans la plupart des cas). Soyez averti cependant que cela ne scellera pas non plus la carte. Assurez-vous simplement que toutes les brosses du monde scellent la carte et il ne devrait pas y avoir de problèmes.
- 5Utilisez les portails de zone et les pinceaux de conseils de manière appropriée. Les portails de zone et les pinceaux de conseils sont d'excellents moyens de limiter la visibilité et d'augmenter les performances s'ils sont effectués correctement. Cependant, vous ne devez pas les placer dans chaque couloir et fenêtre, car le montant à calculer ce qui est censé être rendu et quand pourrait très bien dépasser celui du rendu de toute la pièce en une seule fois. Au lieu de cela, vous ne devez séparer que les pièces avec beaucoup de détails. Cela évitera à votre ordinateur d'avoir à restituer de nombreux objets inutiles et contribuera à augmenter les performances sans mettre à rude épreuve les calculs de visibilité.
- 6Utilisez des obturateurs (avec parcimonie). Les bloqueurs sont similaires à un portail de zone fermée, car ils ne rendent pas ce qui se trouve derrière. Cependant, il est différent d'un portail de zone fermé en ce qu'il n'a pas besoin de sceller une pièce (il peut être autonome et ne pas toucher les brosses du monde) et il ne bloque que les modèles 3D (aka accessoires). Cet outil est très coûteux en termes d'utilisation de la mémoire, vous ne devez donc utiliser des obturateurs que s'il y a un modèle 3D coûteux derrière un mur autoportant qui ne peut pas être scellé par des portails de zone.
- 7Ajoutez des sky-boxes en 3D. Pas totalement nécessaire, mais cela aidera à rendre la carte beaucoup plus grande sans ralentir considérablement les FPS (images par seconde). Les skybox 3D sont généralement conçus pour les "grandes" cartes extérieures, mais il est possible de le faire pour une carte intérieure si vous pouvez voir un extérieur à travers une fenêtre ou quelque chose. Les skyboxes 3D sont très bon marché à rendre et peuvent faire apparaître une petite carte jusqu'à 16 fois plus grande car les skyboxes 3D sont définies à une échelle 16 dans Hammer, puis agrandies lors de la compilation.
- 8Ajouter du brouillard. Sur les grandes cartes extérieures, le brouillard peut limiter la quantité de détails rendus, et il peut rendre votre carte plus réaliste dans le processus. Ajoutez simplement une entité env_fog_controller dans votre carte. Sur l'option "Activer le brouillard" dans l' onglet Propriétés de l'objet, sélectionnez "Oui". Ensuite, modifiez le plan de clip Far Z à votre convenance, ce qui supprimera tous les pinceaux après cette distance, éliminant ainsi le moteur de rendu des objets inutiles (la valeur du plan de clip Far Z doit être supérieure à la valeur de fin du brouillard).
- 9Ne devenez pas fou sur l'échelle lightmap. L'échelle de la lightmap détermine essentiellement le rendu des ombres nettes ou floues sur la géométrie. Des nombres plus importants dégradent la qualité de l'ombre, mais peuvent augmenter les performances. Au contraire, une échelle de lightmap inférieure augmente les visuels des ombres, mais peut considérablement réduire les performances. Une échelle de lightmap trop grande ou trop petite peut produire un effet d'éclairage irréaliste qui est respectivement trop terne ou trop net. L'échelle de lightmap par défaut pour tous les pinceaux est de 16, ce qui est une zone équilibrée entre les visuels et les performances.
- 10Si votre carte contient de l'eau, placez une entité "water_lod_control" dans la carte. Cette entité détermine à quelle distance vous devez être de l'eau «chère» pour qu'elle passe à l'eau «bon marché». L'eau chère semble beaucoup plus réaliste que l'eau bon marché et coûte donc plus cher en termes d'utilisation de la mémoire et de calculs sur l'ordinateur. Une distance de transition plus courte produira de l'eau moins chère à une distance plus courte, et par conséquent perdra beaucoup de qualité visuelle à distance, mais augmentera également les performances.
- Les déplacements ne bloquent pas la visibilité, donc pour vous assurer que la carte est scellée, créez une brosse mondiale avec la texture tools/toolsnodraw sous le déplacement et scellez la carte avec elle (c'est-à-dire que les coins de cette brosse touchent les coins de la skybox). Comme dans la première étape, assurez-vous toujours que la carte est scellée, sinon pratiquement toutes les techniques d'optimisation qui ont été mentionnées sont jetées par la fenêtre et dans le vide noir du moteur Source.
- Lors de la création d'areaportals (en créant un pinceau texturé avec tools/toolsareaportal et en l'attachant à func_areaportal), il est très important que les côtés d'un areaportal qui ne sont pas vus touchent les pinceaux du monde. Par exemple, si vous voulez placer un areaportal dans une porte, mais que cette porte a un cadre lié à func_detail, vous n'auriez pas le pinceau areaportal touchant le cadre de la porte car il s'agit de func_detail (et puisque func_detailles brosses n'affectent pas la visibilité, le journal de compilation reviendra avec une fuite). Au lieu de cela, la brosse areaportal devrait toucher les murs, le plafond et le sol de la porte (qui devraient toutes être des brosses mondiales), croisant le cadre de la porte. Ne vous inquiétez pas qu'il puisse y avoir un "z-clipping" autour du cadre de la porte; le cadre va toujours être rendu correctement dans le jeu... il est simplement là dans l'éditeur Hammer pour que le compilateur l'utilise pendant vvis.
- Cet article suppose que vous avez une connaissance de base de l' interface de Hammer Editor (créer des brosses, placer des entités, lier des entités, etc.).
- Lors de la création de pinceaux de conseils, ne texturez que les faces agissant comme des plans de conseils (les faces qui diviseront le BSP) avec la texture tools/toolshint. Texturez toutes les autres faces du pinceau n'agissant pas comme un plan d'indice avec tools/toolsskip, sinon vous créerez plus de visleafs que vous ne le souhaitez.
- Vous pouvez lier l'état Ouvert/Fermé d'un portail de zone à une porte fonctionnelle telle qu'un func_door, func_door_rotating ou une entité similaire. Pour ce faire, la porte à laquelle vous souhaitez que le portail régional soit lié a besoin d'un "nom" unique. (Donnez le nom en double-cliquant sur la porte pour ouvrir sa fenêtre de propriétés de l'objet et donnez-lui un nom simple sous Nom dans l' onglet Informations sur la classe.) Une fois que vous avez nommé la porte, accédez aux propriétés de l'objet de l'areaportal et faites défiler jusqu'à "Nom de la porte liée" et sélectionnez la porte à laquelle vous souhaitez lier le portail de zone. De plus (et c'est très important), vous devez définir l' état initial du portail de zone sur l' état initial de la porte. Cela permet de s'assurer que lorsque la porte est fermée, le portail de l'aire se ferme avec elle. Si vous êtes curieux de savoir ce que dictent exactement les états du portail de zone Ouvert/Fermé, si un portail de zone est Ouvert, toutes les visleaves visibles de l'autre côté du portail de zone sont rendues. A l'inverse, si le portail est Fermé, alors rien au-delà de l'areaportal ne sera rendu. Donc, s'il y a un couloir ouvert dans lequel vous pourrez toujours voir, l' état initial du portail de zone doit être défini sur Open, et non sur Closed. Et lorsqu'il est lié à une porte, vous ne pourrez pas voir au-delà de la porte de toute façon, alors réglez-le sur Fermé si la porte apparaît fermée (à moins qu'elle n'ait une fenêtre transparente, vous devriez alors avoir le areaportal défini sur Open et don même pas la peine de le relier à la porte).
- Ne faites jamais un pinceau compliqué avec l' outil creux. Les sommets (coins des pinceaux) se couperont et créeront simplement un gros désordre bâclé.
- N'utilisez les dispositifs d'occlusion qu'en dernier recours. C'est très gourmand en mémoire, donc si un accessoire peut être scellé dans une pièce avec des portails de zone ou s'il est possible de diviser les visleaves avec des pinceaux d' astuce et de saut, alors désactivez l'utilisation d'occluseurs.
- Les portails à zone ouverte sont beaucoup plus gourmands en mémoire car les visleaves sont calculées en temps réel. Il est conseillé d'utiliser aussi souvent que possible des portails de zone fermés ou des pinceaux à astuces.
- Un ordinateur
- Vapeur
- Source SDK Base 2007, ou Source SDK Base 2013 Solo / Multijoueur (peut être téléchargé à partir de l'onglet Outils sur Steam)
- SDK source (peut être téléchargé à partir de l'onglet Outils sur Steam, mais cela n'est requis que si vous utilisez la base 2007, si vous utilisez 2013, ne vous embêtez pas à télécharger le SDK source car il est inclus avec le téléchargement du SDK source base 2013).
- Éditeur Hammer (fourni avec le SDK)
- Connaissance de base/intermédiaire de Hammer Editor
Lisez aussi: Comment télécharger Undertale sur Android?
En parallèle