Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.php?sid=66f0d247b0cc623fd28a89a04b728353Médailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

Les groupes d'unités, ça leak j'imagine

 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 Kaoss
Membre reconnu


Inscrit le: 25 Fév 2014
Messages: 1175
Sujets: 167
Spécialité en worldedit: La simplicité


MessagePosté le: 12/09/23 11:20    Sujet du message: Les groupes d'unités, ça leak j'imagine Citer

Bonjour,

Je viens vous poser deux simples questions.

1) Un groupe d'unité du genre "Pick every player in Team2", Team2 étant ... l'équipe 2 (en tout cas, ce n'est pas une variable), ça crée une donnée à chaque fois, donc ça doit leak non ? Pourtant, ce n'est pas évoqué dans le tuto sur les memory leaks.

2) Et si j'ai un déclencheur qui s'active quand une unité en tue une autre et qui accroît le niveau d'une compétence du tueur de 1 (Killing unit), ça fait du leak parce que killing unit est stocké ou pas ?[/spoiler]

Merci d'avance pour votre réponse.
_________________
Ensemble, nous le pouvons. Sauvons le tchat !
http://worldedit.free.fr/forum/chatbox_mod/chatbox.php


Pseudo Battle.net : Chaos
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ghost_of_past
Floodeur prématuré


Inscrit le: 08 Sep 2013
Messages: 532
Sujets: 70
Spécialité en worldedit: GameDesign et optimisation JASS


MessagePosté le: 14/09/23 11:06    Sujet du message: Citer

1) Si tu fais un appel comme Allies of (Player X) ou Convert player to player group oui. Si c'est une variable définie comme par exemple ici non puisque tu crées qu'une seule fois le groupe de joueur !
Secret:


Gui:
Trigger:
Events
Time - Elapsed game time is 0.00 seconds
Conditions
Collapse Actions
Set VariableSet Humans = (All allies of Player 1 (Red).)
Set VariableSet Creeps = (All allies of Player 19 (Mint).)
Player Group - Pick every player in Creeps and do (Actions)
Loop - Actions
Player - Set (Picked player).Current gold to 0
Player - Set (Picked player).Current lumber to 0
Player - Set (Picked player).Food cap to 2
Player - Set (Picked player).Food max to 2
Player - Turn Gives bounty On for (Picked player)
AI - Ignore the guard positions of all (Picked player) units
Player - Change color of (Picked player) to Black, Changing color of existing units


2) Non, c'est juste un accès à l'unité. Les réponses d'évènement ne fuient pas à ma connaissance.
_________________
"L'homme qui meurt est un astre couchant, qui se lève plus radieux sur un autre hémisphère"

"On entends le fracas des Arbres qui tombent, mais pas le murmure de ceux qui poussent"
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Kaoss
Membre reconnu


Inscrit le: 25 Fév 2014
Messages: 1175
Sujets: 167
Spécialité en worldedit: La simplicité


MessagePosté le: 23/09/23 22:56    Sujet du message: Citer

Merci pour ta réponse
_________________
Ensemble, nous le pouvons. Sauvons le tchat !
http://worldedit.free.fr/forum/chatbox_mod/chatbox.php


Pseudo Battle.net : Chaos
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2009
Sujets: 49

Médailles: 2 (En savoir plus...)
Ayane (Quantité : 1) Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 28/10/23 14:12    Sujet du message: Citer

Plus précisément le problème ne vient pas des variables ou des données, une variable de type unité ou joueur ne pose pas de problème car c'est une référence vers les données internes du jeu. Le problème c'est lorsque l'on demande l'allocation répétée d'un espace mémoire et qu'on ne le libère pas après utilisation.

Simple exemple visuel d'une situation posant problème :
Toutes les 0,1 secondes
Créer 1 Fantassin

Si ces unités ne sont pas détruites à un moment alors cela va dépasser la capacité du système.

Lorsque l'on appel une fonction telle que "(All allies of Player 1 (Red).)" alors ce créé une collection en mémoire vive qui contiendra la liste des joueurs. Si on rappel de nouveau cette fonction alors cela créera une nouvelle collection de joueurs (qui en soi peut avoir des valeurs différentes de la précédente collection si les alliances ont changées).
Le moteur de script de Warcraft 3 n'est pas capable de détecter que vous n'allez plus utiliser la collection précédemment créée, ainsi si vous en créez sans arrêt sans les supprimer alors comme pour l'exemple de création de fantassin le système va rapidement devenir submergé par toutes ces collections.
Dans l'exemple de Ghost_of_past il y a deux collections qui sont crées et qui sont perdues à la fin d'exécution, c'est donc une fuite de mémoire, mais dans cet exemple cela ne va se produire qu'une fois, donc ce n'est qu'une goutte d'eau par rapport aux capacités des ordinateurs. Le tout est de faire attention de ne pas répéter ces gouttes d'eau pour éviter de former un océan.

Pick every player in ne va pas créer de fuite de mémoire car il va seulement itérer sur la collection, c'est seulement une opération de lecture des données de la collection.

killing unit est simplement une fonction qui fournit une référence vers une unité, il n'y a donc pas de fuite de mémoire.

Pour Team2 si je me souviens bien c'est une constante initialisée au début dans map.j, la force est donc enregistrée dans une variable que tu peux réutiliser tout au long de la partie, cela ne va donc pas appeler la fonction à chaque fois pour créer une nouvelle force.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com