• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

My pet project, and it's problem. Map related Crashing.

Status
Not open for further replies.
Level 3
Joined
Jul 11, 2013
Messages
38
Eventual Crash, undetermined issue.

I've made a map as an on and off project, and I'm quite happy with it, but unfortunately, after an extended amount of play, anywhere from 10 mins in, to nearly an hour, it crashes with an access violation error.

This is definitely map induced, as it doesn't occur anywhere else.

So, if anyone feels up to flexing their knowledge, and could take a look at it.

Please don't hurt it.
 

Attachments

  • Eternal Song_1.2.w3x
    17.6 MB · Views: 93
Last edited:
Level 31
Joined
Aug 6, 2015
Messages
636
I've made a map as an on and off project, and I'm quite happy with it, but unfortunately, after an extended amount of play, anywhere from 10 mins in, to nearly an hour, it crashes with an access violation error.

This is definitely map induced, as it doesn't occur anywhere else.

So, if anyone feels up to flexing their knowledge, and could take a look at it.

Please don't hurt it.
You should put it on this thread ( this theme is only for projects not for asking)
http://www.hiveworkshop.com/forums/world-editor-help-zone-98/
i will look at map, and see if i can help you.
You got huge leaks in triggers,
read this : http://www.hiveworkshop.com/forums/general-mapping-tutorials-278/complete-list-things-leak-126761/
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
Like MadMax said, your map has a crap ton of leaks. I prefer this tutorial :3

pile%20of%20dung.jpg
 
Level 3
Joined
Jul 11, 2013
Messages
38
First, VERY quick replies, I'm amazed to see this place so active.
That aside, thank you for the information, sorry I posted it incorrectly, long time user, first time poster really.

Will look into Leakage problem...

Though the last time I tried to use custom script it corrupted my .wtg file, probably did it wrong.
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
First, VERY quick replies, I'm amazed to see this place so active.
That aside, thank you for the information, sorry I posted it incorrectly, long time user, first time poster really.

Will look into Leakage problem...

Though the last time I tried to use custom script it corrupted my .wtg file, probably did it wrong.

Most likely :) custom scripts are really sensitive, so make sure you're typing the variable names + call functions properly.
 
Level 3
Joined
Jul 11, 2013
Messages
38
Considering I don't know any Moderators, I suppose I am at the mercy of time...

That said, I'm currently going over my map, and after having read the tutorials, I'm already pruning down that which I can identify as the "Leaks" Special effects, sounds, player groups, and locations.

Odd question, is there a way to DIRECTLY identify a leak, like a performance monitor or some jazz?
 
Level 31
Joined
Aug 6, 2015
Messages
636
Considering I don't know any Moderators, I suppose I am at the mercy of time...

That said, I'm currently going over my map, and after having read the tutorials, I'm already pruning down that which I can identify as the "Leaks" Special effects, sounds, player groups, and locations.

Odd question, is there a way to DIRECTLY identify a leak, like a performance monitor or some jazz?
i'm not using jass, but i think jass doesn't have leaks.
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
1) Destroy Player Groups outside of the loop :)
  • Player Group - Pick every player in PlayerGroupRed and do (Actions)
    • Loop - Actions
      • Player - Change color of (Picked player) to Red, Changing color of existing units
  • Custom script: call DestroyForce(udg_PlayerGroupRed)
2) You're only destroying the most recent WorgenSpawn. The first two uses of WorgenSpawn are still causing leaks. Do something like this.
  • Actions
    • Set WorgenSpawn = (Random point in Doggies <gen>)
    • Unit - Order Duskhowl 0905 <gen> to Night Elf Ancients - Uproot
    • Unit - Create 5 Grove Worgen (Black) for Neutral Hostile at WorgenSpawn facing (Random angle) degrees
    • Custom script: call RemoveLocation(udg_WorgenSpawn)
    • Set WorgenSpawn = (Random point in Doggies <gen>)
    • Unit - Create 5 Grove Worgen (White) for Neutral Hostile at WorgenSpawn facing (Random angle) degrees
    • Custom script: call RemoveLocation(udg_WorgenSpawn)
    • Set WorgenSpawn = (Random point in Doggies <gen>)
    • Unit - Create 1 Valitheria Dreamwalker for Neutral Hostile at WorgenSpawn facing (Random angle) degrees
    • Custom script: call RemoveLocation(udg_WorgenSpawn)
3) You're still leaking a unit group in the SMASH trigger xP

4) You leak Player Groups in DELETE Blue, Teal, & Purple. You got rid of Red, why didn't you do the rest ?!

5) Your Critters Trigger is the same problem you had in #1. You're going to want to reassign the location after removing it after each use.



All though you cleared most of the leaks, I should also recommend that you use different variables for different triggers. Some of your triggers have wait times, what's going to happen if another trigger is using the same Point variable thats still being used in another trigger?

I admire that you're trying to learn how to clear leaks, but you're also going to want to learn how to make some efficient triggers, and remove some unneccesary ones.

EX:

  1. You don't need to put And - All (Conditions) are true. By default, the Conditions section is ALWAYS checking to make sure they are all true. You only need to specify an "Or (Conditions)".
    • Waygate Activate
      • Events
        • Unit - A unit Finishes casting an ability
      • Conditions
        • And - All (Conditions) are true
          • Conditions
            • (Unit-type of (Casting unit)) Equal to Way Gate
            • (Ability being cast) Equal to |cff48d1ccEnable Waygate|r
      • Actions
        • Neutral Building - Enable (Casting unit)
  2. You don't need to use a Do nothing action. Putting nothing there will already do nothing xP

    • Unit Group - Pick every unit in (Units in Grove <gen>) and do (Actions)
      • Loop - Actions
        • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • (Unit-type of (Picked unit)) Equal to Grove Worgen (Black)
            • (Unit-type of (Picked unit)) Equal to Grove Worgen (White)
            • (Unit-type of (Picked unit)) Equal to Valitheria Dreamwalker
          • Then - Actions
            • Unit - Order (Picked unit) to Attack (Attacking unit)
          • Else - Actions
            • Do nothing
  3. This trigger is horrific to look at. Why would you even want to create 9 random critters in a random location EVERY 0.01 seconds? ._.
    • Critters
      • Events
        • Time - Every 0.01 seconds of game time
      • Conditions
      • Actions
        • Set Point = (Random point in (Playable map area))
        • Unit - Create 1 Frog for Neutral Passive at Point facing (Random angle) degrees
        • Unit - Create 1 Rabbit for Neutral Passive at Point facing (Random angle) degrees
        • Unit - Create 1 Raccoon for Neutral Passive at Point facing (Random angle) degrees
        • Unit - Create 1 Stag for Neutral Passive at Point facing (Random angle) degrees
        • Unit - Create 1 Butterflies for Neutral Passive at Point facing (Random angle) degrees
        • Unit - Create 1 Light Bugs for Neutral Passive at Point facing (Random angle) degrees
        • Unit - Create 1 Hermit Crab for Neutral Passive at Point facing (Random angle) degrees
        • Unit - Create 1 Skink for Neutral Passive at Point facing (Random angle) degrees
        • Unit - Create 1 Crab for Neutral Passive at Point facing (Random angle) degrees
        • Custom script: call RemoveLocation(udg_Point)
 
Level 3
Joined
Jul 11, 2013
Messages
38
Okay, that last one, I KNOW is crazy XD, I made that trigger to populate the map with critters, in Initialization after 0.50 seconds it turns off the critters trigger.

I did this because I didn't want to hand place critters, as doing so never looks quite right to me. Though I will edit its leakage appropriately.

As for the others, will do!
 
Level 3
Joined
Jul 11, 2013
Messages
38
Okay... I think... after secondary review and scan. IT... IS... better, I've no idea, I've only started learning how to fix leaks today honestly.

I've also got my Australian friend map testing it with me. He crashed on the last version, but it took much longer than before, though the last version still had some leaks.

Work in progress. :thumbs_up:

Also chopped together a custom loading screen, Woo!

Edit: As of the current version, I still had an access violation crash on my map. After around maybe... 15 20 minutes.

X_X
 

Attachments

  • Eternal Song_1.35.w3x
    17.3 MB · Views: 75
Last edited:
Level 37
Joined
Jul 22, 2015
Messages
3,485
  1. You have to use DestroyForce outside of the Pick every player loop

  2. The Unit Group in the SMASH Trigger is still leaking

  3. Here's an example of a better looking trigger. Its worth the time making extra variables to make your trigger look cleaner. Trust me... nothing is more upsetting then going back to some old trigger you made months ago and you just ask yourself, "What the fuck was I thinking?"
      • SMASH
        • Events
          • Unit - A unit Is attacked
        • Conditions
          • (Unit-type of (Attacked unit)) Equal to Duskhowl
        • Actions
          • Set WorgenSpawn = (Random point in Doggies <gen>)
          • Unit - Order Duskhowl 0905 <gen> to Night Elf Ancients - Uproot
          • Unit - Create 5 Grove Worgen (Black) for Neutral Hostile at WorgenSpawn facing (Random angle) degrees
          • Custom script: call RemoveLocation(udg_WorgenSpawn)
          • Set WorgenSpawn = (Random point in Doggies <gen>)
          • Unit - Create 5 Grove Worgen (White) for Neutral Hostile at WorgenSpawn facing (Random angle) degrees
          • Custom script: call RemoveLocation(udg_WorgenSpawn)
          • Set WorgenSpawn = (Random point in Doggies <gen>)
          • Unit - Create 1 Valitheria Dreamwalker for Neutral Hostile at WorgenSpawn facing (Random angle) degrees
          • Custom script: call RemoveLocation(udg_WorgenSpawn)
          • Unit - Change ownership of Duskhowl 0905 <gen> to Neutral Hostile and Change color
          • Unit - Change ownership of Raven Spirit 0906 <gen> to Neutral Hostile and Change color
          • Set Grove = Grove <gen>
          • Unit Group - Pick every unit in (Units in Grove) and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Unit-type of (Picked unit)) Equal to Grove Worgen (Black)
                  • (Unit-type of (Picked unit)) Equal to Grove Worgen (White)
                  • (Unit-type of (Picked unit)) Equal to Valitheria Dreamwalker
                • Then - Actions
                  • Unit - Order (Picked unit) to Attack (Attacking unit)
                  • Custom script: call RemoveRect(udg_Grove)
                • Else - Actions
          • Trigger - Turn off (This trigger)

      • SMASHNew
        • Events
          • Unit - A unit Is attacked
        • Conditions
          • (Unit-type of (Attacked unit)) Equal to Duskhowl
        • Actions
          • Set Grove_AttackingUnit = (Attacking unit)
          • Set VDreamwalkerSpawn = (Random point in Doggies <gen>)
          • Set WorgenSpawnBlack = (Random point in Doggies <gen>)
          • Set WorgenSpawnWhite = (Random point in Doggies <gen>)
          • Unit - Create 1 Valitheria Dreamwalker for Neutral Hostile at VDreamwalkerSpawn facing (Random angle) degrees
          • Unit - Create 5 Grove Worgen (Black) for Neutral Hostile at WorgenSpawnBlack facing (Random angle) degrees
          • Unit - Create 5 Grove Worgen (White) for Neutral Hostile at WorgenSpawnWhite facing (Random angle) degrees
          • Set Grove = Grove <gen>
          • Set GroveGroup = (Units in Grove matching (((Unit-type of (Matching unit)) Equal to Grove Worgen (Black)) or (((Unit-type of (Matching unit)) Equal to Grove Worgen (White)) or ((Unit-type of (Matching unit)) Equal to Valitheria Dreamwalker))))
          • Unit Group - Pick every unit in GroveGroup and do (Actions)
            • Loop - Actions
              • Set Grove_PickedUnit = (Picked unit)
              • Unit - Order Grove_PickedUnit to Attack Grove_AttackingUnit
          • Custom script: call RemoveRect(udg_Grove)
          • Custom script: call DestroyGroup(udg_GroveGroup)
          • Custom script: call RemoveLocation(udg_WorgenSpawnWhite)
          • Custom script: call RemoveLocation(udg_WorgenSpawnBlack)
          • Custom script: call RemoveLocation(udg_VDreamwalkerSpawn)
      • I made Variables for picked unit + attacking unit because its always faster this way
      • Created a Grove Group so I remove it later. I prefer this method over bj because bj overall is just nasty.

  4. Crashes can also happen because you have too many jaaazz going on in the screen. I was playing a 6v6, one-lane only Castle Fight earlier and after like 40 minutes, the game crashed because there were too many units in the screen xP
 
Level 3
Joined
Jul 11, 2013
Messages
38
So I've .. tried to contact a moderator on moving this threat and axing the new one, Because I'm an idiot.

As for your post, which now I am aware, because second pages are black magic to me...

I SHALL HEED IT'S WARNING AND FIX MY ABOMINATION OF A TRIGGER...

Also, that x or (x or x) Is kinda great.

Also, angry Kratos and or Orc, when you say crush the size of my map, like... compress it? Or just try to prune it a bit?
 
Last edited by a moderator:
Level 37
Joined
Jul 22, 2015
Messages
3,485
So I've .. tried to contact a moderator on moving this threat and axing the new one, Because I'm an idiot.

As for your post, which now I am aware, because second pages are black magic to me...

I SHALL HEED IT'S WARNING AND FIX MY ABOMINATION OF A TRIGGER...

No need to call yourself an idiot. Just don't let it happen again :p let me see your most recent version of the map.

Also, angry Kratos and or Orc, when you say crush the size of my map, like... compress it? Or just try to prune it a bit?

I think he meant crash, not crush.
 
Level 3
Joined
Jul 11, 2013
Messages
38
Alright, I totally didn't have to do this four or five times by accidentally doing these steps on the normal editor by mistake, or editing an older version by mistake...

*Cough*

I DID IT... *Paaain*

On a different note, can custom spells cause leaks, as after this recent swath of changes, the game actually went for probably more than an hour, and only after I had my custom hero Tyrinath use his Soul Storm spell a few times, which is a modified locust swarm in which each locust has a modified phoenix fire spell.... Its a really flashy spell and while correlation is not causation, I can't help but suspect with the timing.

Raincheck on that last part, my last test may have been on an older version my mistake, clearing my test folder.

Confirm, did a long test on current version, still SOMETHING leaking, as eventually it keeled over.:goblin_cry: Unrelated to spell, as at the time of crash, Tyrinath wasn't present in the game.
 

Attachments

  • Eternal Song_1.4.w3x
    17.3 MB · Views: 44
Last edited:
Level 3
Joined
Jul 11, 2013
Messages
38
Found the issue.

Seems having a Visibility - Create an initially Enabled visibility modifier for (Picked player) emitting Black mask across (Playable map area)

Does not agree with Visibility - Create an initially Enabled visibility modifier for (Picked player) emitting Fog of War across (Playable map area)

Enabling these two at the same time seems to cause what feels and acts like a leak, and will eventually crash your game after at latest nearly an hour, 10 mins at earliest.

Fixing this, coupled with patching up my triggers like the sinking titanic, my map may possibly be SAAVED! Hurrah! All hail Killcide! GLORY TO KILLCIDE! DEATH TO SUPERMA- Wait... isn't that Darkseid?.... Oh well... ALL HAIL KILLCIDE! ALL HAIL KILLCIDE!
 
Last edited:
Level 11
Joined
Jun 2, 2013
Messages
613
I played this map for close to two hours and never had a crash.

-played as orc
-used iseedeadpeople
-played 1.3 version.

I looked at your triggers, you shouldn't be leaking a whole lot to crash after 20 minutes. At least as of that version, it's pretty cleaned up. Im guessing your consistent crash is related to a spell, or model of a custom unit on one of the other races.

I built/trained every orc unit and used the Shadow Hunter, Farseer and that weird death knight custom hero with all the spellbooks. Never had a crash.

One thing I did notice was there was a couple of times where I had weird spikes of FPS drop, but I never could tell where the source was. I think it was related to something the undead and nightelves were doing... Those shifty night elf...

Hope some of this helps. Good luck!
 
Level 3
Joined
Jul 11, 2013
Messages
38
Well, as of 1.6 It doesn't crash anymore for MEEEE, but apparently my friend still crashed on it.

*Shrug*

Also, its kinda funny seeing the outsider perspective of Tyrinath "That one weird custom Death Knight with the spellbooks." Cracked me up XD.

Most of the Custom units are equivalent reflections of those you already saw on the Orc Side, secondary Advanced workers that build walls, shipyards, dig goldmines, and the waygates.
 
Level 3
Joined
Jul 11, 2013
Messages
38
I played this map for close to two hours and never had a crash.

-played as orc
-used iseedeadpeople
-played 1.3 version.

I looked at your triggers, you shouldn't be leaking a whole lot to crash after 20 minutes. At least as of that version, it's pretty cleaned up. Im guessing your consistent crash is related to a spell, or model of a custom unit on one of the other races.

I built/trained every orc unit and used the Shadow Hunter, Farseer and that weird death knight custom hero with all the spellbooks. Never had a crash.

One thing I did notice was there was a couple of times where I had weird spikes of FPS drop, but I never could tell where the source was. I think it was related to something the undead and nightelves were doing... Those shifty night elf...

Hope some of this helps. Good luck!

Also that kinda makes sense as the issue I think was the main killer might have been two conflicting mask triggers, with the masks gone, as with Iseedeadpeople, it might have not had that problem...

*Think think*
 
Level 3
Joined
Jul 11, 2013
Messages
38
Round 2. Eventual Crash has reoccurred, and may have never left.

Unfortunately, I've still got this problem.

The latest set of circumstances is as follows.

I started the map, playing as night elves this time around.

Fairly full player roster, was either 9 or full 12 players.

Played for some odd 15-25 minutes, hadn't even left my base, was building up defenses around the starting location. It was at this point I got an access violation error and crash.

The last round focused on plugging all the leaks my map had, fairly sure it is leak free currently, but It might have one or two, that said, even in this case, crashing so early on a map that is a glorified modified melee game is not great.

It should also be noted that even when I thought it leak free after the first round, my Australian friend had a crash on the map.

Any and all insights would be wonderful.

Might be screwy object editor references, Not sure.
 

Attachments

  • Eternal Song_2.2.w3x
    16.5 MB · Views: 66
Status
Not open for further replies.
Top