Aide aux visclusters

  • Initiateur de la discussion SofianeLasri
  • Date de début
  • Initiateur de la discussion
SofianeLasri

SofianeLasri

Geek suprême
Messages
393
Score réaction
149
Points
160
Bonjour, je connais pas mal de trucs à propos du source engine, je maitrise même plutôt bien hammer mais je doit avouer que j'ai mal compris le fonctionnement des visclusters (même après avoir fait un post sur facepunch. :/)). D'après ce que j'ai compris, ils découpent la map en plusieurs parties pour l'optimisation. Comment appliquer cette méthode? J'utilise le hint brush, func_details et j'ai découpé ma map en plusieurs parties (jusque-là) mais j'aimerais justement la rendre plus ouverte.

Si quelqu'un pourrait m'aider, ce serait cool !^^

Merci d'avance.
 
anthonin lahterman

anthonin lahterman

Geek suprême
Messages
589
Score réaction
124
Points
150
@lirrox @Steinman78 @Taink
 
  • J'aime
Réactions: Taink
Taink

Taink

El Magnifico
Messages
5 292
Score réaction
2 720
Points
965
SofianeLasri à dit:
Bonjour, je connais pas mal de trucs à propos du source engine, je maitrise même plutôt bien hammer mais je doit avouer que j'ai mal compris le fonctionnement des visclusters (même après avoir fait un post sur facepunch. :/)). D'après ce que j'ai compris, ils découpent la map en plusieurs parties pour l'optimisation. Comment appliquer cette méthode? J'utilise le hint brush, func_details et j'ai découpé ma map en plusieurs parties (jusque-là) mais j'aimerais justement la rendre plus ouverte.

Si quelqu'un pourrait m'aider, ce serait cool !^^

Merci d'avance.
Les func_viscluster, avant de t'en servir, tu dois t'assurer que tu as bien compris comment l'optimisation fonctionne sur Source.
Je vais assumer que ce n'est pas entièrement le cas, mais que tu as compris quand même une bonne partie de la chose.

L'affichage des visleafs est calculé par vvis et ce dernier va définir que lorsque le joueur se place dans un visleaf, tels visleafs soient calculés en fonction de ce qu'il peut voir depuis le visleaf où il est.
Le problème de Source, en quelque sorte (parce que c'est bien plus simple à calculer de cette manière), c'est qu'il calcule la visibilité en fonction du bloc visleaf, et qu'ainsi tu ne peux pas définir la visibilité en fonction du joueur. C'est un problème lorsque tu fais de larges visleafs.
Cependant, ce calcul demande des ressources et parfois une zone est bien trop grande pour permettre de la remplir avec un seul visleaf (je n'ai plus les dimensions maximales des visleafs en tête, mais bon voilà il y en a quand même). C'est là que, pour accélérer ton temps de compilation, tu vas créer un func_viscluster. Ce que ça permet, c'est de dire au moteur : "Les leafs qui sont ici, c'est comme si ils n'étaient qu'un, ils se "voient" forcément. Pas la peine de calculer si ils se voient entre eux.", et forcément ça accélère la compilation si tu as beaucoup de numportals (= des surfaces de visleafs qui touchent d'autres visleafs). Il ne faut pas en abuser parce que parfois c'est mieux de ne pas en mettre, mais dans de larges espaces c'est généralement mieux de le faire.
Ce qu'il ne faut surtout pas faire, c'est faire entrer en contact un func_viscluster avec de l'eau ou un areaportal. Bref si tu as compris, tant mieux, sinon demande moi ce que tu ne comprends pas.
 
  • J'aime
Réactions: SofianeLasri
  • Initiateur de la discussion
SofianeLasri

SofianeLasri

Geek suprême
Messages
393
Score réaction
149
Points
160
Taink à dit:
Les func_viscluster, avant de t'en servir, tu dois t'assurer que tu as bien compris comment l'optimisation fonctionne sur Source.
Je vais assumer que ce n'est pas entièrement le cas, mais que tu as compris quand même une bonne partie de la chose.

L'affichage des visleafs est calculé par vvis et ce dernier va définir que lorsque le joueur se place dans un visleaf, tels visleafs soient calculés en fonction de ce qu'il peut voir depuis le visleaf où il est.
Le problème de Source, en quelque sorte (parce que c'est bien plus simple à calculer de cette manière), c'est qu'il calcule la visibilité en fonction du bloc visleaf, et qu'ainsi tu ne peux pas définir la visibilité en fonction du joueur. C'est un problème lorsque tu fais de larges visleafs.
Cependant, ce calcul demande des ressources et parfois une zone est bien trop grande pour permettre de la remplir avec un seul visleaf (je n'ai plus les dimensions maximales des visleafs en tête, mais bon voilà il y en a quand même). C'est là que, pour accélérer ton temps de compilation, tu vas créer un func_viscluster. Ce que ça permet, c'est de dire au moteur : "Les leafs qui sont ici, c'est comme si ils n'étaient qu'un, ils se "voient" forcément. Pas la peine de calculer si ils se voient entre eux.", et forcément ça accélère la compilation si tu as beaucoup de numportals (= des surfaces de visleafs qui touchent d'autres visleafs). Il ne faut pas en abuser parce que parfois c'est mieux de ne pas en mettre, mais dans de larges espaces c'est généralement mieux de le faire.
Ce qu'il ne faut surtout pas faire, c'est faire entrer en contact un func_viscluster avec de l'eau ou un areaportal. Bref si tu as compris, tant mieux, sinon demande moi ce que tu ne comprends pas.
Salut et merci pour l'aide, j'ai un peu mieux compris ! ^^ (ouai car je n'ai pas tout compris x) )
Tu dis que "pour accélérer ton temps de compilation, tu vas créer un func_viscluster. Ce que ça permet, c'est de dire au moteur : "Les leafs qui sont ici, c'est comme si ils n'étaient qu'un, ils se "voient" forcément. Pas la peine de calculer si ils se voient entre eux." ". Du coup c'est comme il ne calculait qu'une petite partie de la map. Et du coup je peux par exemple découper mon centre ville en 2 visculsters?

Excuse moi si j'ai tout faux ! x)
 
  • Initiateur de la discussion
SofianeLasri

SofianeLasri

Geek suprême
Messages
393
Score réaction
149
Points
160
Voici ce que j'ai compris. ^^
 
Taink

Taink

El Magnifico
Messages
5 292
Score réaction
2 720
Points
965
SofianeLasri à dit:
Voici ce que j'ai compris. ^^
Non, il ne faut pas qu'il y ait de mur, si possible.
Ça sert à accélérer la compilation pour une très grande salle.
 
  • Initiateur de la discussion
SofianeLasri

SofianeLasri

Geek suprême
Messages
393
Score réaction
149
Points
160
Taink à dit:
Non, il ne faut pas qu'il y ait de mur, si possible.
Ça sert à accélérer la compilation pour une très grande salle.
Y aurait-il un exemple en photo / vidéo?
 
Taink

Taink

El Magnifico
Messages
5 292
Score réaction
2 720
Points
965
Quand tu place un func_viscluster, si tu fais Map > Load Portal File, tu peux voir que les visleafs ont l'air de fusionner (ce qui n'est pas le cas). Ça te donne une idée de comment ils agissent. Il faut juste que tu fasses attention à ce que ça ne mette pas en commun des visleafs qui ne devraient pas se voir.
Mais ce n'est réellement utile que dans de vraiment larges zones.
 
  • Initiateur de la discussion
SofianeLasri

SofianeLasri

Geek suprême
Messages
393
Score réaction
149
Points
160
Ok, je test çà dès que possible. Mais merci pour l'aide, c'est sympa! ^^
 
Discord d'entraide
Rejoignz-nous sur Discord