Foro especializado en Warcraft III y su editor
 
BuscarEntrar al ChatboxPortal del foroÍndiceSpellsRegistrarseConectarseGrupos de Usuarios
Eventos Actuales
¡ Bienvenido Invitado!

Editar Perfil

Tus temas
Tus Mensajes ()

Enlaces rápidos








Comparte | .
 

 Fugas de Memoria [GUI] •

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
MuSe

avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 216
Reputación Reputación : 46
Monedas de oro : 2587
Monedas de Platino : 5

Inventario :



Mensaje(#) Tema: Fugas de Memoria [GUI] • Miér Jul 31, 2013 8:04 pm

Fugas de Memoria GUI



  Índice.
   Like a Star @ heaven  Introducción
   Like a Star @ heaven  Lista de Fugas en GUI
   Like a Star @ heaven  Funciones para remover Fugas de Memoria
   Like a Star @ heaven  Nullear Variables Globales.

Exclamation  Antes de empezar, deben tener conocimiento basico sobre las variables en WE, como crearlas y sus tipos.
Arrow  http://www.worldofeditors.net/t46-guia-sobre-variables#121

1.- Introducción:
Citación :
Una fuga de memoria (más conocido por el término inglés memory leak) es un error de software que ocurre cuando un bloque de memoria reservada no es liberada en un programa de computación. Comúnmente ocurre porque se pierden todas las referencias a esa área de memoria antes de haberse liberado.
No podía quedar más claro, una fuga de memoria o leak en inglés, es una porción de memoria que no ha sido liberada después de su uso, ocasionando el uso innecesario de memoria y además con el tiempo y entre más fugas se acumulen en nuestros mapas, este puede perjudicar el desarrollo  normal de nuestro juego. (Lag)
Haz de tener en cuenta este tema, como uno de los más primordiales a la hora de realizar detonadores.

2.- Lista de Fugas en GUI:
Ahora seguimos con una lista de Fugas en el Editor (GUI):
       1. Unit Group
       2. Player Group
       3. Points
       4. Special Effects
       5. Region
       6. Lightning Effects
       7. Countdown Timers
       8. Floating Text
       9. Triggers
       10. Sound

3.- Funciones para remover Fugas de Memoria:

Ahora nos toca aprender sobre las diferentes funciones que existen para remover leaks y cómo aplicarlas.
Notación: Custom Script: call Funcion(udg_Variable) . Con esa opción aplicaremos las funciones que remueven leaks, no en todas.
               Funcion: Hace referencia a la funcion que llamaremos.
               udg_: Prefijo que siempre debe ir delante de una variable declarada en GUI.
               Variable: La variable a la cual le aplicaremos la funcion.

1. Unit Group:
Detonador con Leak:
             
[gui]Actions
   Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions)
       Loop - Actions
           Unit - Pause (Picked unit) [/gui]
Para remover el leak se aplica call DestroyGroup(udg_MiGrupo)
             
[gui]Actions
   Set VarGroup = (Units in (Playable map area))
   Unit Group - Pick every unit in VarGroup and do (Actions)
       Loop - Actions
           Unit - Pause (Picked unit)
   Custom script:   call DestroyGroup(udg_VarGroup) [/gui]
2. Player Group:
Detonador con leak:
[gui]Actions
   Player Group - Pick every player in (All allies of Player 1 (Red)) and do (Actions)
       Loop - Actions
           Player - Add 1000 to (Picked player) Current gold [/gui]
Para remover el leak se aplica call DestroyForce(udg_MiPlayerGroup)
[gui]Actions
   Set VarPlayerGroup = (All allies of Player 1 (Red))
   Player Group - Pick every player in VarPlayerGroup and do (Actions)
       Loop - Actions
           Player - Add 1000 to (Picked player) Current gold
   Custom script:   call DestroyForce(udg_VarPlayerGroup) [/gui]
Nota: la opción AllPlayers, es un grupo que siempre estará allí, una global, por lo tanto no es necesario crear una variable si la usas.

3. Points:
Detonador con leak:
[gui]Actions
   Unit - Create 1 Footman for Player 1 (Red) at (Center of (Playable map area)) facing Default building facing degrees [/gui]
Para remover el leak se aplica call RemoveLocation(udg_MiPunto)
[gui]Actions
   Set VarPoint = (Center of (Playable map area))
   Unit - Create 1 Footman for Player 1 (Red) at VarPoint facing Default building facing degrees
   Custom script:   call RemoveLocation(udg_VarPoint) [/gui]
Especial.
Las proyecciones polares también son leaks.
[gui]Actions
   Set VarPoint = (Center of (Playable map area))
   Set VarPoint2 = ((Center of (Playable map area)) offset by 256.00 towards 90.00 degrees)
   Unit - Create 1 Footman for Player 1 (Red) at VarPoint2 facing Default building facing degrees
   Custom script:   call RemoveLocation(udg_VarPoint)
   Custom script:   call RemoveLocation(udg_VarPoint2) [/gui]
4. Special Effects:
Detonador con leak, además de otro leak de punto.

[gui]Special Effect - Create a special effect at (Position of (Triggering unit)) using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl [/gui]
Para remover el leak Special Effect - Destroy (MiEfecto)
[gui]Actions
   Set VarPoint = (Position of (Triggering unit))
   Special Effect - Create a special effect at VarPoint using Abilities\Spells\Human\ThunderClap\ThunderClapCaster.mdl
   Special Effect - Destroy (Last created special effect)
   Custom script:   call RemoveLocation(udg_VarPoint) [/gui]
Nota: Cuando se crea efectos para usarlos por más tiempo, antes tenemos que guardarlo en una variable para luego destruirla.

5. Region:
Simplemente con el comando call RemoveRect(udg_MiRegion) procedemos a destruir regiones :
[gui]Custom script:   call RemoveRect(gg_rct_Region1) [/gui]
Nota: gg_rct_Region1 así es como se denotan las regiones en Custom Script con el prefijo [gg_rct ]
Ojo destruye regiones solo cuando estés seguro de que ya no se usara.

6. Lightning Effects:
Simplemente se los destruye con la función Lightning - Destroy (My_Lightning_Effect)
[gui]Actions
   Set VarPoint = (Position of (Triggering unit))
   Set VarPoint2 = (Position of (Targeted unit))
   Lightning - Create a Chain Lightning - Primary lightning effect from source VarPoint to target VarPoint2
   Set VarLightning = (Last created lightning effect)
   Custom script:   call RemoveLocation(udg_VarPoint)
   Custom script:   call RemoveLocation(udg_VarPoint2) [/gui]
También creamos variables para los puntos donde se creara luego los removemos.
No tiene sentido destruir Lightning`s despues de crearlos, seguramente durara lo que el usuario especifique. Para destruirlo luego, tenemos que crear una variable tipo lightning.

[gui]Lightning - Destroy VarLightning [/gui]
7. Countdown Timers:
El caso de los Timers en GUI, son especiales, hay que tener cuidado con usar la función DestroyTimer(), simplemente solo se tiene que destruir Timers que ya no vuelvas a usar.
[gui]
   Events
       Map initialization
   Conditions
   Actions
       Countdown Timer - Start VarTimer as a One-shot timer that will expire in 3.00 seconds [/gui]
[gui]
   Events
       Time - VarTimer expires
   Conditions
   Actions
       Game - Display to (All players) the text: El Timer Expiro!
       Custom script:   call DestroyTimer(udg_VarTimer)[/gui]
Primero iniciamos nuestro timer, con la variable ya creada.  Cuando termine destruimos el timer, como ya había mencionado, esto solo se aplica a timer que solo usaras una vez y que no sean repetitivas.
8. Floating Text:
Los textos flotantes también pueden generar leaks. Se puede usar la función call DestroyTextTag( udg_VarFloatText ) en Custom Script o Floating Text - Destroy (Var_FloatText)  .
O simple mente:
[gui]Actions
   Floating Text - Change the lifespan of (Last created floating text) to 5.00 seconds
   Floating Text - Destroy (Last created floating text) [/gui]
Añade un tiempo de expiración al Texto y luego procede a destruirlo.

9. Triggers:
Este caso es especial, no todos los triggers deben ser destruidos, si no aquellos que se usan solo una vez, o ya no se los va usar.
[gui]Actions
   Custom script:   call DestroyTrigger(GetTriggeringTrigger())[/gui]
Destruye el trigger donde se llamó a la función.
Para destruir otros triggers desde cualquier lugar.
[gui]Actions
   Custom script:   call DestroyTrigger(gg_trg_Inicializacion_de_refriega) [/gui]
10. Sound:
Solución rápida DestroySound.
[gui]Actions
   Sound - Play RainOfFireLoop1
   Sound - Destroy RainOfFireLoop1 [/gui]
4.- Nullear Variables Globales
Se puede nullear variables globales (las variables creadas mediante la interfaz) del tipo:
UNIT, REGION, ITEM, DESTRUCTIBLE
[gui]
   Set VarDestructible = No destructible
   Set VarItem = No item
   Set VarRegion = No region
   Set VarUnit = No unit [/gui]
Realizando esta operación liberamos a nuestras variables. Esto no es muy necesario, como son variables globales siempre estarán allí, está a decisión del user nullear variables.

Con esto termino con el tema de los leaks, recuerden que es muy importante saber removerlos.

Bueno ya se terminó, saludos. study


Última edición por MuSe el Sáb Ago 10, 2013 12:23 am, editado 3 veces
Volver arriba Ir abajo
Uncharted

avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 15
Reputación Reputación : 3
Monedas de oro : 127


Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Miér Jul 31, 2013 9:37 pm

( Arrow Uff, un buen tuto MuSe.)
Capaz también puedas hablar acerca, de los leaderboard y multiboard en un tuto mas avanzado. Cool 
Saludos...
Volver arriba Ir abajo
Marcos_M

avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 3019
Reputación Reputación : 500
Monedas de oro : 9283
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Miér Jul 31, 2013 9:49 pm

Completo, muy completo n.n

Pero a pesar de que GUI viene con la opcion de destruir rayos. Es mejor usar la función de JASS(Ya se, la accion de GUI no es BJ) porque por alguna razon, la accion puede llegar a crashearte el juego
Volver arriba Ir abajo
Sapphiron

avatar


Barra de Salud : Este usuario es invulnerable ¿Será que es fiel a las normas?

Mensajes Mensajes : 1433
Reputación Reputación : 219
Monedas de oro : 12070
Monedas de Platino : 0

Inventario :
Frostmourne Escudo lunar Armadura Lunar Avanzada
Diamante Encantado Anillo Sagrado Libro de Leyendas

Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Miér Jul 31, 2013 10:43 pm

Excelente aporte MuSe, datos como ésto valen como oro! Te va +rep.

angelos escribió:
( Arrow Uff, un buen tuto MuSe.)
Capaz también puedas hablar acerca, de los leaderboard y multiboard en un tuto mas avanzado. Cool 
Saludos...

Podría hacer un tuto sobre esos temas, es algo sencillo supongo xD

Saludos.
Volver arriba Ir abajo
http://www.worldofeditors.net
edusx
Capitán
avatar


Barra de Salud : Su salud está al 80% - Este usuario ha recibido una infracción

Mensajes Mensajes : 141
Reputación Reputación : 11
Monedas de oro : 222


Inventario :
Cetro del dominio
Vino

Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Vie Ago 02, 2013 7:24 pm

tengo una duda sobre esto

ponele q yo quiero hacer unos cuantos detonadores de objetos
cada detonador de combinar objetos
tiene un mismo efecto

ahora va mi pregunta
puedo usar la misma variable para ese mismo efecto?

o tengo q usar una variable de efecto por detonador
Volver arriba Ir abajo
http://warcraftcondota.forumotion.com/
MuSe

avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 216
Reputación Reputación : 46
Monedas de oro : 2587
Monedas de Platino : 5

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Dom Ago 04, 2013 12:39 pm

@edusx escribió:
tengo una duda sobre esto

ponele  q yo quiero hacer unos cuantos detonadores  de objetos
cada detonador de combinar objetos
tiene un mismo efecto

ahora va mi pregunta
puedo usar la misma variable para ese mismo efecto?

o tengo q usar una variable de efecto por detonador

Perdón por tardar en responder silent.
Bueno, si vas a hacer un detonador para combinar objetos, lo más probable es que hagas esto

Citación :
Special Effect - Create a special effect attached to the chest of (Triggering unit) using Abilities\Spells\Items\AIim\AIimTarget.mdl
Special Effect - Destroy (Last created special effect)

Como estas mostrando tu efecto solo una vez, lo destruyes en ese mismo instante.
En otras palabras, para este caso no es necesaria una variable.

Saludos.
Volver arriba Ir abajo
matchet
Capitán
avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 124
Reputación Reputación : 18
Monedas de oro : 1829
Monedas de Platino : 3

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Jue Ago 15, 2013 12:29 pm

Excelente para optimizar mi mapa cuando lo tenga en beta. Gracias por el aporte


... ¿Sabíais que un doble negativo o un cálculo dentro de las condiciones hará fallar el spell? ...:
 

"Hazlo o no lo hagas, pero no lo intentes"
- Maestro Yoda

Mi filosofía:
 
Volver arriba Ir abajo
TRISTAN
Caballero
avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 297
Reputación Reputación : 60
Monedas de oro : 1788
Monedas de Platino : 3

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Sáb Ene 18, 2014 6:19 pm

Buen aporte hermano MuSe.. a alguien le tocaba y lo hiciste vos Very Happy gran explicación y muy importante a la hora de crear un mapa.. de hecho indispensable te dejo reputación



Valar Morghulis|Mis aportes|
Volver arriba Ir abajo
racelom
Aprendiz


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 14
Reputación Reputación : 0
Monedas de oro : 14
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Vie Feb 06, 2015 8:41 pm

genial Smile interesante
Volver arriba Ir abajo
xoloems
Iniciado


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 10
Reputación Reputación : 0
Monedas de oro : 10
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Vie Nov 13, 2015 5:10 am

me servira bastante
Volver arriba Ir abajo
samuel567
Soldado
avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 91
Reputación Reputación : 15
Monedas de oro : 416
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Lun Mayo 09, 2016 4:31 pm

Que buen tutorial, me servirá mucho ya que en el proyecto en el que estoy genera mucho lag en creación de unidades y demás.

¡Gracias!


SAMUEL567

 Mapa de La Ciudadela de Corona de Hielo  


Samuel567
Volver arriba Ir abajo
armando368
Caballero
avatar


Barra de Salud : Su salud está al 80% - Este usuario ha recibido una infracción

Mensajes Mensajes : 334
Reputación Reputación : 20
Monedas de oro : 1311
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Sáb Nov 19, 2016 9:38 am

Excelente,aunque sigo desconociendo el automaticclean
Volver arriba Ir abajo
Marcos_M

avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 3019
Reputación Reputación : 500
Monedas de oro : 9283
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Sáb Nov 19, 2016 12:08 pm

@armando368 escribió:
Excelente,aunque sigo desconociendo el automaticclean

No cruces cosas armando... Lo del automaticClean es un sistema de un usuario, esto es para quitar los leaks vos mismo.
Volver arriba Ir abajo
armando368
Caballero
avatar


Barra de Salud : Su salud está al 80% - Este usuario ha recibido una infracción

Mensajes Mensajes : 334
Reputación Reputación : 20
Monedas de oro : 1311
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Sáb Nov 19, 2016 12:15 pm

@Marcos_M escribió:
@armando368 escribió:
Excelente,aunque sigo desconociendo el automaticclean

No cruces cosas armando... Lo del automaticClean es un sistema de un usuario, esto es para quitar los leaks vos mismo.

Ok pero,quitando leaks de memoria en "Variable de Unidad" Solo hay que nullear ?
Volver arriba Ir abajo
Marcos_M

avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 3019
Reputación Reputación : 500
Monedas de oro : 9283
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Sáb Nov 19, 2016 6:10 pm

Hay que nullear las variables que sean locales, las globales no es necesario nullear, ya que se reutilizan. En GUI no se usan variables locales por lo general
Volver arriba Ir abajo
Jack-Miller
Aprendiz


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 15
Reputación Reputación : 1
Monedas de oro : 53
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Vie Jun 09, 2017 11:31 am

que verga, esto signicica que tenemos que usar variables para todo en los mapas...
Volver arriba Ir abajo
armando368
Caballero
avatar


Barra de Salud : Su salud está al 80% - Este usuario ha recibido una infracción

Mensajes Mensajes : 334
Reputación Reputación : 20
Monedas de oro : 1311
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Vie Jul 14, 2017 10:52 pm

Oye , tengo un Problema 
[gui]
Custom script:   call DestroyGroup(udg_EF_Group[EF[3]])
[/gui]
Esto me da error , y quiero nullear una Variable de grupos , como lo hago ?
Volver arriba Ir abajo
Marcos_M

avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 3019
Reputación Reputación : 500
Monedas de oro : 9283
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Vie Jul 14, 2017 11:12 pm

@armando368 escribió:
Oye , tengo un Problema 
[gui]
Custom script:   call DestroyGroup(udg_EF_Group[EF[3]])
[/gui]
Esto me da error , y quiero nullear una Variable de grupos , como lo hago ?

Pues, las variables tienen la regla, de que cuando las usas en JASS tienen un "udg_" al inicio de su nombre
Ahora, qué es "EF"? una variable, entonces, qué te falta agregar?
Volver arriba Ir abajo
Mr.Neko
Soldado
avatar


Barra de Salud : Su salud está al 100% - Este usuario no ha recibido infracciones

Mensajes Mensajes : 66
Reputación Reputación : 13
Monedas de oro : 215
Monedas de Platino : 0

Inventario :



Mensaje(#) Tema: Re: Fugas de Memoria [GUI] • Jue Dic 21, 2017 9:16 pm

Tengo una duda sobre remover el leak de una variable de point con array, quiero remover el leak de un array especifico(en este caso el array 12) y no se si esto funciona:



PD: Creo que si funciona, probé hacer que me dijera la ubicación en X y en Y de la variable "PosicionMago[12]" despues de colocar el custom script y me dió 0 así que creo que si sirve, pero me gustaría que me lo confirmes para evitar meter la pata xd


"Noblesse Oblige, Aquellos que se proclamen Nobles, deben actuar como tal y usar su poder por el bien de los que no lo tienen"

Volver arriba Ir abajo
Contenido patrocinado




Mensaje(#) Tema: Re: Fugas de Memoria [GUI] •

Volver arriba Ir abajo
 

Fugas de Memoria [GUI] •

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

Permisos de este foro:No puedes responder a temas en este foro.
Warcraft III - WorldEditor :: Academia :: Area GUI-