Staredit Network > Forums > SC1 UMS Mapmaking Assistance > Topic: Hypertrigger failure
Hypertrigger failure
May 9 2009, 9:47 pm
By: Xpenguin17  

May 10 2009, 5:01 am Falkoner Post #21



Quote
you can still use waits that are from 1-300 miliseconds. I always use waits that long and it never screws anything up while using hypers.

Please don't post false information. It has the same effect a long wait does, it just doesn't cause as noticeable of a problem because it's shorter. Only if the wait is 42 milliseconds or below will it not cause any problems.

"Kickass, I was about to ask how I can tune the deathcount to precision. The song is 7266 ms and 85 death ticks is about 7203 ms. Now I would add "Wait 63 milliseconds" somewhere but so far attempts have failed and just made the song overlap. Any suggestions on how to incorporate it properly?"

Well, you see, waits actually are only twice as precise as death counts are, they are rounded up to the nearest multiple of 42, so if you say Wait 0, it's the same as saying Wait 42. (Most likely Nude is going to correct me saying it's 84 ms, I still haven't figured out how this works..)



None.

May 10 2009, 8:09 am Xpenguin17 Post #22



Wait a minute, Tuxedo-Templar uses waits all the time, how come his maps turn out allright?



None.

May 10 2009, 8:35 am Roy Post #23

An artist's depiction of an Extended Unit Death

You can use waits, but if you read the nature of wait blocks, there's limitations to said waits. A single player cannot be operating two waits at one time because the wait times stack on top of each other. For example, if you had a trigger to wait 1000 and create a marine, and another to wait 500 and create a firebat, the marine would spawn 1000 milliseconds later, and once that wait expires, the firebat's wait of 500 starts. So, even though the firebat was supposed to spawn first by a simple concept of time, he does not.

The reason your death count system seems to be going slow may be because it was going up to eight times faster before you changed the trigger owner. You have have to adjust your timing accordingly.

Tuxedo-Templar is obviously a ninja. Or, alternatively, he is aware of wait blocks and knows how to avoid wait blocks. As long as you don't have more than one trigger with a wait running per player (emphasis on the word "running"), you should not encounter wait blocks.

Hyper triggers are known to be a bit troublesome. Be sure they are at the bottom of the trigger list, and it would be best if the player owning the hypers had no other triggers containing waits. If your hypers still seem to be running sluggish, you can try changing the owner to "All Players" and keeping them at the bottom of the list. A great way to see if your hyper triggers are or aren't working properly is to make a "always: create 1 UnitX, kill all UnitX, preserve" trigger and verify that the unit is constantly, rapidly dying throughout the map.

Post has been edited 3 time(s), last time on May 10 2009, 9:21 pm by Roy. Reason: Perhaps a statement was misleading




May 10 2009, 8:54 am Xpenguin17 Post #24



My deathcount system isn't slow anymore, it was solved when I purged every Wait in the triggers, but the problem is that the song either loops too early or too late 'cuz 7266 ain't a quotient of 84. I don't buy the "one wait trigger per player" bullshit because Tux did it more than once, and he also had longass waits (up to 8000 milliseconds) as well as dozens of 100 ms instances. Even if "Play song.wav, "Wait 7266 ms, Preserve trigger" is the only trigger that contains a Wait in my map, problems arise and the deathcount system is no longer accurate.

Looking at Tuxedo-Templar's club map, it seems the amount of milliseconds to play an audio clip is configurable (without appending waits) e.g.

Trigger("Player 1","Player 2","Player 3","Player 4","Player 5","Player 6","Player 7"){
Conditions:
Switch("Switch9", set);
Deaths("Current Player", "Scanner Sweep", Exactly, 1);

Actions:
Set Deaths("Current Player", "Scanner Sweep", Set To, 0);
Play WAV("staredit\\wav\\dance01.wav", 7534); <--- What
Set Deaths("Current Player", "Zerg Extractor", Set To, 11);
Preserve Trigger();
Comment("");
}

Somehow he is able to loop his songs with precision, and I'd try to use his mechanism but backtracking thru his system of switches and death counts is a mindfuck.

Either way, this guy's a fucking genius.

Quote
Hyper triggers are known to be a bit troublesome. Be sure they are at the bottom of the trigger list, and it would be best if the player owning the hypers had no other triggers containing waits. If your hypers still seem to be running sluggish, you can try changing the owner to "All Players" and keeping them at the bottom of the list. A great way to see if your hyper triggers aren't working properly is to make a "always: create 1 UnitX, kill all UnitX, preserve" and verify that the unit is constantly, rapidly dying throughout the map.

I did notice that keeping hypers at the bottom bugs shit out less frequently, I thought I was the only one who observed this... and yeah I always keep hypers to All players.



None.

May 10 2009, 10:08 am Wormer Post #25



Xpenguin17, do you have a computer player in your map? Better two.

Quote from Xpenguin17
Play WAV("staredit\\wav\\dance01.wav", 7534); <--- What
You can also find the same parameter in transmission action. I believe this number specifies amount of time the WAV will be played. If set to 0, SC will play the whole soundtrack. I had a chance to ask this question to Tuxedo-Templar, and his answer was like "does this matter anyway? I always set this to 0".

EDIT:
Also, I know Tuxlar uses small waits along with hyper triggers, like those of 100ms and spams them like 10 times to get a 1000ms wait, but in case you don't clearly understand what you're doing I'd not recommend you to use such tricks. I myself don't absolutely clear understand how waits functioning (How Waits and Hypers Working?), and think noone does. If you'd like to reveal this secret noone stops you from experimenting.

Post has been edited 2 time(s), last time on May 10 2009, 10:18 am by Wormer.



Some.

May 10 2009, 10:59 am NudeRaider Post #26

We can't explain the universe, just describe it; and we don't know whether our theories are true, we just know they're not wrong. >Harald Lesch

Look, penguin, it's very rude to call bullshit on experienced mappers trying to help you with that delicate topic. There's more polite ways to get the point across.

Also, Falk basically explained everything you need to know, but I will summarize it:
Fact 1: A player can not execute 2 waits the same time. The 2nd wait gets blocked until the first is finished. No exceptions.
Fact 2: Starcraft is divided into frames of 42ms. That makes it technically impossible to act at any given time, so every wait value is rounded to the nearest 42ms value. Exception: 0-100ms waits are rounded to 84ms. For some reason Starcraft can't wait as short as 1 frame.
Fact 3: Starcraft checks triggers every other frame, that's why death count timers only have a precision of 84ms @ fastest and even less on lower speeds.

I would be more than mildly surprised if Tuxlar did break any of these rules. Post triggers if you think he did, to create a common ground for discussion.

About Fact 1: When a hyper trigger blocks another wait, then it will basically never finish, because the hyper triggers are caught in a stacking loop that goes on for 6 hours (with 3) or days (with more). See NEO in the hyper trigger wiki to learn more.




So what does that mean for you?

You should replace every wait with a death counter where possible.
If timing is critical you can leave your wait to get the extra precision, but make sure there's only 1 of these running per player at any given time. Also make sure your hyper triggers are correctly set up. Read the wait block wiki again, I cleared things up yesterday after posting.

You cannot loop your music to the exact millisecond. Either trim/cut your track so you get a nice loop based on a 42ms interval or live with having a short break (<42ms) after the song finishes.
There's audio tools that can help you trimming your track to perfect length. You can alter the speed of the track (without changing pitch). If you only stretch it by 0-42ms this isn't noticeable for anyone, but you'll have a perfect loop.




May 10 2009, 7:55 pm Falkoner Post #27



Tuxedo-Templar was able to get his music to perfectly loop using three tricks:
1. Overlapping music loops, music overlapping sounds better than it turning off for a split second.

2. Correct calculation of Death Counts, obviously, if you aren't calculating the time with precision, possibly into the thousandths, your Death Counts will be slightly off.

3. Adjustment of the music itself, with programs such as Audacity you can modify the music to perfectly hit the intervals of 84 milliseconds, whether this involves cutting off bits at the end, or increasing or decreasing the speed of the entire song slightly, it's up to you and which sounds best.

Tuxlar was also able to use Waits as excessively as you see because he understands fully how they work, in his maps like The Club, no two music loops ever play at once, so long waits do not overlap, Waits can be used, but it requires a solid understanding of how they work and their limitations.



None.

May 10 2009, 10:53 pm Xpenguin17 Post #28



Quote from NudeRaider
Look, penguin, it's very rude to call bullshit on experienced mappers trying to help you with that delicate topic. There's more polite ways to get the point across.

I've been mapping since 1999, even before Tuxedo-Templar, I just haven't been as consistent. We're equal as far as seniority goes.

But whatever, I got it working now. I didn't know that hypers would still have their effect even if not owned by All Players. I gave hypers to the 2nd comp (Player 8) who does nothing except add a little color to the stage with the beacons and I got the 7266 ms song to loop perfectly by adding a 7140 ms Wait (eh?). It seems 42 ms ain't the interval like some of you claim. 7266 is a quotient of 42 so in theory it should've worked perfectly. Meh.

Thanks everyone for the tips, it's really cool when you're actually able to get something to work and reassuring to know it's always a matter of logic (which I was never good at.) If a computer fucks up, YOU fucked up.



None.

May 11 2009, 12:04 am Falkoner Post #29



I've been playing soccer since I was 4, I stopped playing at 12, does that mean I should be as good as someone who continued to play?

As I said in the post above yours, overlapping music is a method to make it loop better, which is what you did in this case. 7266 is a quotient of 42, however, death counts work in quotients of 84, so it actually would be rounded to 7308, if you had used Death Counts, and if you had, you could have very slightly increased the length of the song by slowing it down slightly, and could have attained a more perfect loop. 7226 should work perfectly using waits, however, I almost always recommend overlapping at least slightly. A more perfect loop with more overlaps can most likely be achieved using a wait time of 7224.

Glad you got it working though.



None.

May 11 2009, 12:09 am NudeRaider Post #30

We can't explain the universe, just describe it; and we don't know whether our theories are true, we just know they're not wrong. >Harald Lesch

Quote from Xpenguin17
Quote from NudeRaider
Look, penguin, it's very rude to call bullshit on experienced mappers trying to help you with that delicate topic. There's more polite ways to get the point across.

I've been mapping since 1999, even before Tuxedo-Templar, I just haven't been as consistent. We're equal as far as seniority goes.
My point was not you being a noob or us being all knowing sages, but you being rude.
Besides I really started mapping just in 2007 but that doesn't say anything about skill or knowledge (if that's what you mean with seniority).

Quote from Xpenguin17
I got the 7266 ms song to loop perfectly by adding a 7140 ms Wait (eh?). It seems 42 ms ain't the interval like some of you claim. 7266 is a quotient of 42 so in theory it should've worked perfectly. Meh.
It's a fact that sc is divided into 42ms frames and therefore the waits are rounded to that value. Try a wait(7161) which should still be "perfect" and a wait(7163) which should give you a short silence.
I can think of a few reasons why a wait 126ms (42ms actually) too short sounds right:
- When the trigger is done waiting, it only refires the next trigger loop which adds 84ms.
- The wavs are overlapping so you can't make out the exact ending of the first loop and the starting of the next loop
- Your song snippet has very short silences at the end and/or start
Remember that 42ms are really short and barely audible except when the song would stop for that duration, which is obviously not the case if you start the next loop slightly too early.

Quote from Xpenguin17
it's really cool when you're actually able to get something to work and reassuring to know it's always a matter of logic (which I was never good at.) If a computer fucks up, YOU fucked up.
hehe, so true :)




May 11 2009, 12:26 am Xpenguin17 Post #31



Quote
My point was not you being a noob or us being all knowing sages, but you being rude.

Oh, it's just the way I talk; I cuss all the time, even when speaking to my mother.

Quote
Besides I really started mapping just in 2007 but that doesn't say anything about skill or knowledge (if that's what you mean with seniority).

Seniority means how long someone's been at the job, and implies skill, but not always.

Anyway, if you like techno you can check out the finalized map at the designated forum.



None.

May 11 2009, 5:20 am samsizzle Post #32



Quote from Falkoner
Waits can be used, but it requires a solid understanding of how they work and their limitations.

Thats what I meant to say, sorry.



None.

Options
  Back to forum
Please log in to reply to this topic or to report it.
Members in this topic: None.
[10:53 pm]
Oh_Man -- https://youtu.be/MHOZptE-_-c are yall seeing this map? it's insane
[2024-5-04. : 1:05 am]
Vrael -- I won't stand for people going around saying things like im not a total madman
[2024-5-04. : 1:05 am]
Vrael -- that's better
[2024-5-04. : 12:39 am]
NudeRaider -- can confirm, Vrael is a total madman
[2024-5-03. : 10:18 pm]
Vrael -- who says I'm not a total madman?
[2024-5-03. : 2:26 pm]
UndeadStar -- Vrael, since the ad messages get removed, you look like a total madman for someone that come late
[2024-5-02. : 1:19 pm]
Vrael -- IM GONNA MANUFACTURE SOME SPORTBALL EQUIPMENT WHERE THE SUN DONT SHINE BOY
[2024-5-02. : 1:35 am]
Ultraviolet -- Vrael
Vrael shouted: NEED SOME SPORTBALL> WE GOT YOUR SPORTBALL EQUIPMENT MANUFACTURING
Gonna put deez sportballs in your mouth
[2024-5-01. : 1:24 pm]
Vrael -- NEED SOME SPORTBALL> WE GOT YOUR SPORTBALL EQUIPMENT MANUFACTURING
[2024-4-30. : 5:08 pm]
Oh_Man -- https://youtu.be/lGxUOgfmUCQ
Please log in to shout.


Members Online: Wing Zero