Ce message est en mode wiki. Tous les comptes de plus de 30 jours avec plus de 30 messages peuvent le modifier.
Tutoriel qui regroupera les différentes astuces pour optimiser les zones. Si vous avez des questions, des suggestions, des critiques ou que vous avez d'autres astuces, j'ai ouvert ce topic . Bon y a différents trucs à savoir pour alléger au maximum les zones ou les optimiser sans que la beauté en pâtisse. Infos compilées dans le cadre de mon module avec des potes. Myrdhin Sommaire :
Les temps de chargements et de calculUne personne qui s'est intéressée aux temps de chargements des zones remarquera rapidement qu'ils sont calqués sur le temps que met une zone pour "baker" ou se calculer. Et les temps de chargement de la campagne solo ne sont pas du tout significatifs des possibilités en terme d'optimisation. Sans compter les rencontres, les éléments qui mettent le plus de temps à être calculés sont : Le calcul d'une zoneTaille de la zoneC'est le premier élément qui entre en compte dans le temps de chargement d'une zone. Par exemple, une zone vide de 16*16 se chargera plus vite qu'une zone vide de 32*32. - Une taille importante augmente le poids de la zone. Relief de la zoneLe relief joue une part importante dans le calcul de la zone. Il vaut mieux éviter de créer une zone aux reliefs tortueux, et dessiner intelligemment l'aspect du terrain. Assombrir une texture lointaine vaut mieux que creuser un trou au même endroit. De même, agencer avec astuce des plaçables de décor permettra de tromper l'oeil assez facilement. - Trop de différences dans le relief augmentent le poids de la zone. Le maillage de surface accessible (walkmesh)C'est la surface sur laquelle un joueur peut se déplacer librement. Elle joue sur le poids global mais pas de manière significative. Le problème, c'est qu'il peut se glisser dans des endroits où le joueur n'ira jamais (car bloqué par un décor, ou simplement séparé par une partie non-accessible). Ces informations occupent alors de la place inutilement. Il faut bien prendre garde à nettoyer une zone lorsqu'elle est terminée, car c'est l'élément qui joue le plus sur les fichier TRX. Par conséquent, il joue également sur le fichier PWC que les joueurs devront télécharger. L'idéal est d'utiliser le pinceau d'accessibilité et supprimer les zones théoriquement inaccessibles. - Une surface accessible plus importante augmente le poids de la zone. L'insersion des plaçables (stitching) :Il s'agit de la validation des plaçables dans le maillage de surface accessible de la zone, et qui en résulte la modification de ce maillage. La vitesse de ce calcul dépend bien évidemment de la taille de la zone. Dans une zone 8*8, l'insersion de 10 plaçables sera plus rapide que pour ces 10 mêmes plaçables dans une zone 24*24. Mais le temps de calcul étant étroitement lié à l'insersion des plaçables, la taille de la zone est de moindre importance en comparaison. Admettons qu'une zone de 16*16 contienne 10 plaçables, et qu'une autre zone de 8*8 en contienne 100. Le temps de chargement de la zone 8*8 devient plus important, et peut même dépasser celui de la zone 16*16. Le temps de calcul global augmentera donc également, ainsi que le temps de chargement en jeu. - Une modification trop importante du maillage de surface augmente le poids de la zone. L'herbe :C'est le fléau et sans doute l'élément le plus lourd des zones tout en étant une des causes majeurs de lags. Mais c'est un élément qui embellit les zones. Par contre elle affecte beaucoup moins le temps de chargement que les plaçables. Pour info, chaque mégatile (les carrés noirs) peut contenir une quantité limitée d'herbe qui correspond à peu près à 1/10 de sa surface, ce qui n'est pas énorme (voir le screen). Et ça pèse 1.3 mo. [(image : herbe)] Maintenant, je sais pas si la taille de l'herbe affecte le poids. Je ferai des tests quand j'en aurai envie. Donc l'idéal est d'éviter de placer l'herbe dans les éléments de base d'une zone. Elle doit être la robe, le petit truc de fin qui va donner le cachet. A user avec modération donc. En général, sur les zones que j'ai vues, l'herbe est utilisée pour donner plus de fraicheur à une texture qui est assez pauvre à la base d'où la nécessite de l'embellir. Pour limiter l'herbe il faut jouer sur la texture en donnant beaucoup de nuances, l'herbe deviendra donc moins essentielle mais surtout la petite touche de fin. Par exemple ces deux zones : [(image : jet)] [(image : nwn2ss020307042438)] Le poids total d'herbe est très léger malgré les apparences. Ce sont des coups de pinceau très léger (très peu dense) avec l'herbe combiné avec un mélange de texure et de couleur très diversié pour casser l'utilité de l'herbe. Je peux encore réduire de double la quantité d'herbe de cette zone sans qu'elle perde en qualité. Les plaçables et les objets environnementauxOn peut arriver avec un module qui comporte quasi 0 plaçable. (tout dépend bien sur des plaçables) et l'époque où le calcul des zones prenait du temps pourrait être révolu Pourtant la plupart ne pèse pas trois tonnes mais il y a une astuce qui, si répétées minutisement permettra un gain énorme sur deux plans : - le poids de zones (gain léger) - le temps de chargement (gain très important) Si on clique avec le bouton droit de la souris, on remarque qu'on peut passer un plaçable en "PLaçables à éléments d'environnement (PEE)". Le plaçable perd son dynamisme et donc son poids mais aussi sa prise en compte dans les temps de chargements ou sur la grille de walkmesh. [(image : objetsdenvironnements)] Tous les types de plaçables peuvent être convertis mais je les distingue en deux catégories puisqu'il y a une petite astuce pour même rendre les plaçables dynamiques en "Objets environnementaux". Plaçables simplesIl s'agit des plaçables sans élément secondaire rattaché (comme les portes). De manière générale, les plaçables convertis deviennent traversables et non cliquables comme s'ils ne faisaient qu'un avec le terrain. Ils perdent la quasi totalité de leur poids. Un amas de rocher (petit plaçable) qui pèse 20ko à l'origine passe à 1ko. de leur poids mais le walkmesh qui passe en dessous fait contrepoids. Donc là a deux possibilités pour vire le walkmesh et rendre par la même le plaçable non traversable : 1-On prend le trigger "rogner walkmesh". C'est précis mais ça ajouté un élément trigger et donc un petit peu de ko sur la zone [(image : rogner)] 2-On utilise la fonction de terrain de base "inacessible". L'avantage c'est que ça pèse rien mais c'est moins précis puisque basé sur les triangles de base. L'idéal c'est de légèrement déplacer ses plaçables pour qu'ils s'alignent bien sur les triangles de walkmesh. [(image : walk)] Je préfère évidemment la seconde solution qui est vraiment la plus efficace mais j'utilise toujours la première quand le rognage a vraiment besoin d'être précis. Plaçables type maison avec porteOn remarque vite fait qu'en les convertissant, la porte disparait et que donc, il perdent leur utilité puisqu'on ne peut plus rentrer dedans. Or les portes sont des éléments indépendants qui peuvent être utilisés sans être rattachés aux plaçables. Donc il faut procéder ainsi :
Elle retournera à son endroit initial donc bien dans l'entrebaillement. Le tour est joué. Il vous reste à vous débrouiller pour virer le walkmesh en dessous comme expliqué plus haut. Il existe une méthode bourrin pour ça, c'est de calculer d'abord avec les plaçables en dynamiques (cad non convertis) pour l'ordi effectue lui même le lavage et ensuite passer tout en environnemtal puis sauver. Méthode rapide mais pour les plus rigoureux elle n'est pas aussi efficace que le tout fait à la main. L'eauAprès avoir échangé avec Tanita, j'ai appris que l'eau remplissait un mégatile (carré noir) au moindre coup de pinceau mais que la partie non peinte devenait automatiquement invisible. Donc peu importe qu'un mégatile soit rempli ou non, il faut surtout faire attention à ne pas déborder d'un millimètre sur un autre mégatile si cela n'est pas utile. 4 mégatiles d'eau (donc 4 carrés noirs ou la surface marchable d'une 8 * 8) = 700ko empli ou non, la seule présence d'eau fait atteindre ce chiffre. [(image : eau4)] Taille optimale des zonesBordure de zone et gaspillageVoyons quelle est la place occupée par la bordure, surface de décor que le joueur ne pourra jamais parcourir. Celle-ci a une épaisseur de 8 tiles, quoi qu'il advienne. Pour connaître la superficie qu'occupe la bordure, voici un calcul simple : [ (largeur utilisable + 16) x (longueur utilisable + 16) ] - surface utilisable
Poids des zones(source nwn2.fr)On pourrait considérer qu'un tile occupe environ 12 Ko.
ConclusionMieux vaut donc utiliser une seule zone plus grande, plutôt que plusieurs petite offrant le même espace utilisable. Comparons seize zones 4 x 4, quatre zones 8 x 8, et une zone 16 x 16. L'économie de poids et d'espace est flagrante :
Les RencontresC'est un des éléments si ce n'est l'élément qui fait le plus augmenter les temps de chargement si on ne prend pas la peine de comprendre son fonctionnement. Si vous mettez une rencontre telle quelle sans rien faire de plus, le moteur va mettre un temps considérable à charger les mobs/PNJs et plus vous augmenterez le nombre de rencontres et/ou le type de créatures, plus le temps de chargement sera important. Obsidian a intégré une fonctionnalité pour pallier à cela. C'est le cache créature. Vous la trouverez dans les propriétés de la zone. [(image : cachecreature)] On peut dire que la zone pré-enregistre les mobs à spawner et que le temps de latence lors des chargements est ainsi éviter. Optimisation module multi : Tanita's StripEasePour les modules multis, on peut pousser encore beaucoup plus loin l'optmisation et ainsi dépasser les limites "offficielles". Tanita a créé une fonctionnalité qui génère une version optimisée des modules en supprimmant tout ce dont le serveur n'a pas besoin (herbe, eau, terrain...bref presque tout). Elle a intégré cette fonctionnalité à son Plugin : http://nwvault.ign.com/View.php?view...id=100372&id=9 . Mon module est par exemple passé de 700mo à 50mo, toutefois il faut prévoir une utilisation supérieure par le serveur puisque le Walkmesh est compressé à l'origine. Les chiffres approximatifs de consommation sont donnés par Tanita après que l'opération de Strip ait été effectuée. |
|
08/03/2007, 13h26 |
|
Aller à la page... |
[Wiki] Mapping : Optimiser les zones
Suivre Répondre |
|
Partager | Rechercher |
|
Superbe tuto !
|
08/03/2007, 16h15 |
|
|
Bravo et merci ! |
08/03/2007, 16h45 |
|
Héros / Héroïne
|
voilà passé en wiki
|
08/03/2007, 18h42 |
|
nik_the_hunter |
Voir le profil public |
Trouver plus de messages par nik_the_hunter |
|
il semble que les images aient sauté de chez l'hébergeur :/.
|
02/12/2007, 00h27 |
|
|
J'ai fait sauter les liens vers les images, le temps que Myrdhin mette à jour le wiki.
On ne sait jamais, c'était peut-être stocké sur un site personnel. |
02/12/2007, 00h38 |
|
Héros / Héroïne
|
Deyonara m'avait MP pour les images mais je n'ai plus sur le PC. Je vais reprendre quelques screens dans les jours qui viennent.
|
02/12/2007, 02h30 |
|
Suivre Répondre |
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|