Page 1 of 2 12 LastLast
Results 1 to 15 of 20
http://idgs.in/199757
  1. #1

    Join Date
    May 2009
    Posts
    50
    Points
    66.20
    Thanks: 0 / 0 / 0

    Default [Toturial] Memory Leak [Penting dalam membuat map]

    1. Introducion

    Memory Leak adalah hal yangg sudah mengganggu para mapper dari pertama kali World Editor dibuat. Banyak orang menggangap Memory Leak itu adalah hal sepele, tetapi jika diberitahu faktanya, mereka mungkin akan merinding dan cepat cepat mengcek trigger map mereka.

    Fakta-Fakta Memory Leak :

    1. Walaupun leak itu hanya sepele, jika dibiarkan terus, akan mengakibatkan lag yg serius bagi pada player, dan biasanya map yg banyak leak nya disebut "Leak *****" ato LW.

    2. Memory Leak sudah hadir dari pertama komputer dibuat. Leak itu diambil dari orang pertama yg menciptakan Memory Leak di komputer bermerek Python900 yg tidak terkenal, yaitu John "Leak" Faroe. Leak adalah username dia.

    Walaupun hanya memiliki 2 fakta, itu pun sudah menggetarkan kita kan? Mau tau apa yg bisa diperbuat untuk mencegah Memory Leak? Di bagian selanjutnya akan di kasih tau cara-cara mencega dan Menanggulangi Memory Leak....

    2. Preventing

    Ada mapper handal yg terkenal dulu yg bernama Aeon..... dia yg menciptakan sistem permainan "Aeon Of Strife" itu terkenal dengan sistem map nya dan 1 hal lagi..... Leakless/Flawless map nya.....
    Setelah dia mengasih tau semua mapper bagaimana cara menanggulani & Memory Leak

    __________________________________________________ __________________________________
    Dalam Unit Groups:


    Unit Group Bad

    Events
    Conditions
    Actions

    Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions)
    Loop - Actions
    Unit - Kill (Picked unit)



    Note :
    Ilustrasi di atas adalah menggambarkan Unit yang dipilih / picked, yang ke depend berapa kali trigger ini dilansanakan.

    __________________________________________________ __________________________________

    Unit Group Good

    Events
    Conditions
    Actions

    Set Temp_Group = (Units in (Playable map area))
    Unit Group - Pick every unit in Temp_Group and do (Actions)
    Loop - Actions Unit -
    Kill (Picked unit)
    Custom script: call DestroyGroup (udg_Temp_Group)


    Note :
    Nah, kalau yg diatas ini adalah Unit Group yg leakless, memang membutuhkan banyak variable, tetapi ini sangat seimbang ketimbang Memory Leak. inget, harus menggunakan underline(_) untuk spasi.

    __________________________________________________ __________________________________

    Dalam Point:

    Point Bad

    Events
    Conditions
    Actions

    Unit - Create 1 Footman for Player 1 (Red) at (Center of (Playable map area)) facing Default building facing degrees

    Note :
    Unit ini di create di region leak. Ini bukan leak yg sering, tetapi berdependan di berapa unit yg dibikin, dan berapa sering unit itu muncul.

    __________________________________________________ __________________________________

    Point Good

    Events
    Conditions
    Actions

    Set Temp_Point = (Center of (Playable map area))
    Unit - Create 1 Footman for Player 1 (Red) at Temp_Point facing Default building facing degrees


    Note :
    Custom script: call RemoveLocation (udg_Temp_Point)
    Nah, seperti Unit Group, trigger satu ini menunjukkan Trigger yg leakless.

    __________________________________________________ __________________________________

    Dalam Special Effects:

    Special Effect Bad

    Events
    Conditions
    Actions

    Special Effect - Create a special effect at (Center of (Playable map area)) using Abilities\Spells\Human\ThunderClap\ThunderClapCast er.mdl

    Note :
    Ini memperkenalkan Leak yg baru, special effect leak, dan yg baru saja kita lewati, point leak. Kita harus menghilangkan semua leak tersebut

    __________________________________________________ __________________________________

    Special Effect Good 1

    Events
    Conditions
    Actions

    Set Temp_Point = (Center of (Playable map area))
    Special Effect - Create a special effect at Temp_Point using Abilities\Spells\Human\ThunderClap\ThunderClapCast er.mdl


    Special Effect - Destroy (Last created special effect)
    Custom script: call RemoveLocation (udg_Temp_Point)


    Note :
    Nah, yangg trigger satu ini Mengfix Leak dalam Point & Special Effect Leak tersebut, tetapi, ada satu kendala dalam trigger satu ini. Trigger yg satu ini langsung menghilangkan efek Thunder Clap yg ada, tanpa ada kesempatan untuk terlihat. Solusinya ada di Special Effect ke 2.

    __________________________________________________ __________________________________

    Special Effect Good 2

    Events
    Conditions
    Actions

    For each (Integer A) from 1 to 10, do (Actions)
    |-----Loop - Actions
    |-----Set Temp_Point = (Center of (Playable map area))
    |-----Special Effect - Create a special effect at Temp_Point using Abilities\Spells\Undead\UnholyAura\UnholyAura.mdl
    |
    |-----Set Temp_SFX[(Integer A)] = (Last created special effect)
    |-----Custom script: call RemoveLocation (udg_Temp_Point)
    |-----Wait 2.00 seconds
    |-----For each (Integer A) from 1 to 10, do (Actions)
    |-----Loop - Actions Special Effect -
    |-----Destroy Temp_SFX[(Integer A)]


    Note :
    Nah, yangg ini baru trigge Special Effect yg sangat sempurna

    __________________________________________________ __________________________________

    Dalam Unit(Last Leak):

    Dummy unit adalah unit yg sering dipakai dalam skill skill yg rumit. tetapi, jika tidak di tanggulani, para "dummy" ini akan berkumpul di suatu tempat dan mengakibatkan Lag yg sangat serius
    __________________________________________________ __________________________________

    Units Bad

    Events
    Conditions
    Actions

    Unit - Create 1 Dummy Caster for Player 1 (Red) at (Center of (Playable map area)) facing Default building facing degrees


    Note :
    Leak yg sangat terlihat sekali, ada cara untuk membuat mereka hilang dengan gampang, yaitu dengan trigger di bawah ini:

    __________________________________________________ __________________________________

    Units Good

    Events
    Conditions
    Actions

    Set Temp_Point = (Center of (Playable map area))

    Unit - Create 1 Dummy Caster for Player 1 (Red) at Temp_Point facing Default building facing degrees

    Custom script: call RemoveLocation (udg_Temp_Point)
    Unit - Add a 2.00 second Generic expiration timer to (Last created unit)


    Note :
    Trigger yg sangat sering gw pakai. Setelah Dummy itu melakukan tugasnya, mereka langsung hilang dengan timer yg sudah ditentukan.

    Note :
    Contoh Leakless Trigger
    Ini adalah skill dengan trigger yg bebas-leak!!

    __________________________________________________ __________________________________

    Final Good Trigger

    Events
    Unit - A unit Starts the effect of an ability

    Conditions
    (Ability being cast) Equal to Animate Dead

    Actions

    Set Temp_Point = (Position of (Casting unit))

    Special Effect - Create a special effect at Temp_Point using Abilities\Spells\Human\ThunderClap\ThunderClapCast er.mdl

    Special Effect - Destroy (Last created special effect)
    Set Temp_Group = (Units within 512.00 of Temp_Point matching (((Matching unit) is A structure) Equal to False))

    Custom script: call RemoveLocation (udg_Temp_Point)

    Unit Group - Pick every unit in Temp_Group and do (Actions)
    |-----Loop - Actions
    |-----Set Temp_Point = (Position of (Picked unit))
    |-----Unit - Create 1 Dummy Caster for (Owner of (Casting unit)) at Temp_Point facing Default building facing degrees

    |-----Unit - Order (Last created unit) to Human Priest - Inner Fire (Picked unit)
    |-----Unit - Add a 2.00 second Generic expiration timer to (Last created unit)
    |-----Custom script: call RemoveLocation (udg_Temp_Point)
    |-----Custom script: call DestroyGroup (udg_Temp_Group)



    Semua ini saya buat sendiri....

    Memang mungkin banyak kesalahan...

    karena tidak ada unsur copas disini

  2. Hot Ad
  3. #2
    l0git3c's Avatar
    Join Date
    Oct 2006
    Location
    England, Manchester
    Posts
    3,968
    Points
    4,650.70
    Thanks: 0 / 3 / 3

  4. #3

    Join Date
    May 2009
    Posts
    50
    Points
    66.20
    Thanks: 0 / 0 / 0

    Default

    Owh....

    maklum member baru jadi gak tau yang dulu2

    tapi kan gw gak copas dari situ

    asli made by me ^^

  5. #4
    KingB00ker's Avatar
    Join Date
    Jan 2007
    Posts
    622
    Points
    783.40
    Thanks: 35 / 22 / 17

    Default

    Ya gpp, berguna juga kok :P.
    Walaupun gw dah bookmark tutorial memory leak punya Thanatos.

    BTW, bukannya arti leak itu "kebocoran"?

    Wahahaha, tapi 1 hal lagi.

    Untuk map single player keknya point ama region leak ga usa terlalu diurus, soalnya efeknya kecil sekali (kecuali untuk trigger yang mengeksploitasi point, seperti sliding)

    BTW, it's tutorial no toturial :P

  6. #5
    fire_god's Avatar
    Join Date
    Jun 2008
    Posts
    1,477
    Points
    2,789.00
    Thanks: 0 / 15 / 6

    Default

    toturial.... torturing?

    anyway thx kk, referensi bagus lagi buat saya ^_^

  7. #6
    valkemiere's Avatar
    Join Date
    Oct 2006
    Location
    In my Rainbow Castle
    Posts
    1,874
    Points
    5,111.21
    Thanks: 65 / 32 / 31

    Default

    gmn kalo 10 orang bergerak slide bersamaan? gmn tu trigernya

  8. #7
    Section's Avatar
    Join Date
    Nov 2006
    Location
    about.me/SECTION
    Posts
    2,095
    Points
    11,041.04
    Thanks: 45 / 112 / 98

    Default

    Lupa gw kasi tau... Meski kita dapat bernapas lega terhadap leak, ternyata kita juga punya musuh baru : Global Variable (udg)

    loh kenapa? Karena meski global variabel dapat membersihkan leak, perlu diketahui bahwa untuk menciptakan udg dibutuhkan memory (local vars bukan masalah karena java sudah punya dealokasi memori otomatis). Seperti boolean membutuhkan 1byte,integer 2byte, real 10byte, unit,unitgroup,player,point,rect,dll gw ga tau pasnya karena mereka sebenernya Class dalam c++ tapi di parsing Jass itu dah jd tipe data, tapi yang pasti konsumsi memory mereka lebih dari 100byte per var.

    Efek ini langsung terasa ketika awal map.
    Maka dari itu penemuan Cache system sangat membantu karena selain tetap dapat dipakai global, jass akan mendealokasikannya secara otomatis setelah tidak terpakai.

    Informasi berasal dari analisa gw selama belajar C,C# dan C++.

  9. #8
    l0git3c's Avatar
    Join Date
    Oct 2006
    Location
    England, Manchester
    Posts
    3,968
    Points
    4,650.70
    Thanks: 0 / 3 / 3

    Default

    tapi...ga terlalu berpengaruh ah

  10. #9
    Section's Avatar
    Join Date
    Nov 2006
    Location
    about.me/SECTION
    Posts
    2,095
    Points
    11,041.04
    Thanks: 45 / 112 / 98

    Default

    Ya... karena variabel bebannya lari ke RAM... nah jaman sekarang RAM dah pada gede-gede...

    Tapi kalo global vars udah kelewat banyak bener-bener terasa.... Mo array atau gak juga sama terasanya...

  11. #10
    _TriniTY_'s Avatar
    Join Date
    Oct 2006
    Location
    PLuit
    Posts
    107
    Points
    229.70
    Thanks: 1 / 1 / 1

    Default

    btw itu mo sbanyak apapun trigger yg menyangkut point, variablenya bole cuma 1? si Temp_point doank misalnya?

    contohnya gini

    Reincarnation Friend
    Events
    Unit - A unit owned by Player 11 (Dark Green) Dies
    Conditions
    Actions
    Wait 60.00 seconds
    Set Temp_point = (Position of (Dying unit))
    Special Effect - Create a special effect at (Position of (Dying unit)) using Abilities\Spells\Human\Resurrect\ResurrectCaster.m dl
    Unit - Create 1 (Unit-type of (Dying unit)) for Player 11 (Dark Green) at (Position of (Dying unit)) facing Default building facing degrees
    Custom script: call RemoveLocation (udg_Temp_Point)


    sama 1 lagi

    Reincarnation Enemy
    Events
    Unit - A unit owned by Neutral Hostile Dies
    Conditions
    ((Dying unit) is A Hero) Not equal to True
    Actions
    Wait 30.00 seconds
    Set Temp_point = (Position of (Dying unit))
    Special Effect - Create a special effect at Temp_point using Abilities\Spells\Human\Resurrect\ResurrectTarget.m dl
    Unit - Create 1 (Unit-type of (Dying unit)) for Neutral Hostile at (Position of (Dying unit)) facing Default building facing degrees
    Custom script: call RemoveLocation (udg_Temp_Point)



    ada 2 trigger gitu digabung pake 1 variable Temp_point doank bole?
    Tr1NiTY's ORPG v 1.3 (2.0 is in progress)
    Download link: RPG here (or comment here)

  12. #11
    valkemiere's Avatar
    Join Date
    Oct 2006
    Location
    In my Rainbow Castle
    Posts
    1,874
    Points
    5,111.21
    Thanks: 65 / 32 / 31

    Default

    klo 2 trigger itu bisa bekerja bersamaan. bsa jd leak

  13. #12
    l0git3c's Avatar
    Join Date
    Oct 2006
    Location
    England, Manchester
    Posts
    3,968
    Points
    4,650.70
    Thanks: 0 / 3 / 3

    Default

    @trinity
    kalo gw sih, tiap trigger, siapin 1 variable buat ngilangin leaknya, takut ada error2

  14. #13
    SrZ]Xevirath's Avatar
    Join Date
    Feb 2007
    Location
    Dragon Palace
    Posts
    3,427
    Points
    5,090.80
    Thanks: 0 / 20 / 16

    Default

    Nga leak kok barengan juga, karena IIRC cuma satu trigger yg jalan bersamaan tanpa SleepAction

  15. #14
    _TriniTY_'s Avatar
    Join Date
    Oct 2006
    Location
    PLuit
    Posts
    107
    Points
    229.70
    Thanks: 1 / 1 / 1

    Default

    tapi koq setela gw coba save
    dia bilang trigger cannot be used
    gara2 custom scriptnya
    kenapa ya itu?
    gw gag ngerti custom script ne
    Tr1NiTY's ORPG v 1.3 (2.0 is in progress)
    Download link: RPG here (or comment here)

  16. #15
    SrZ]Xevirath's Avatar
    Join Date
    Feb 2007
    Location
    Dragon Palace
    Posts
    3,427
    Points
    5,090.80
    Thanks: 0 / 20 / 16

    Default

    Temp_point dengan Temp_Point itu beda loh

    nb. Sory telat bales, lg muter2 di subforum lain >_<

Page 1 of 2 12 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •