Difference between revisions of "Hyper Triggers"
m (1 revision imported: Restoring SC1 backup) |
m (add categ ref) |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
− | '''Hyper triggers''' (often shortened to "'''hypers'''") are '' | + | '''Hyper triggers''' (often shortened to "'''hypers'''") are ''StarCraft'' [[triggers]] that use game glitches to speed up the rate at which trigger cycles are executed. Under normal circumstances, triggers are checked every two game seconds; hyper triggers cause triggers to be checked every other frame of animation (about twelve times per real-time second on the fastest game speed). |
== Basic hyper triggers == | == Basic hyper triggers == | ||
− | The basic hyper trigger method uses Wait actions. To avoid [[wait | + | The basic hyper trigger method uses Wait actions. To avoid [[wait blocks]], the player that owns these triggers cannot own any other triggers that use Waits -- unless there is another player also running hyper triggers. Furthermore, these triggers must be placed at the bottom of the trigger list. This is for several reasons, firstly that (so long as you have at least two players running hyper triggers), one of them will be able to run a Wait action and the map hyper triggers will not pause (because there will be another player still properly running hyper triggers). If no computer players are available to run hyper triggers, hyper triggers must be included in the trigger lists of every player, thus ensuring that there will always be at least one set of hyper triggers running. |
The following trigger is a hyper trigger. It is strongly recommended that you use multiple copies of it in your map; generally, about four of them will do. | The following trigger is a hyper trigger. It is strongly recommended that you use multiple copies of it in your map; generally, about four of them will do. | ||
Line 82: | Line 82: | ||
=== How it works === | === How it works === | ||
− | These hyper triggers cause ''StarCraft'' to check the map's trigger list about 11.904761904761904761904761904762 times per second. This happens because ''StarCraft'' checks all trigger conditions | + | These hyper triggers cause ''StarCraft'' to check the map's trigger list about 11.904761904761904761904761904762 times per second. This happens because before a Wait action, ''StarCraft'' checks all trigger conditions in any trigger for any player. Thus, by stacking very short wait periods in a single trigger, ''StarCraft'' is forced to check all triggers many times per second. |
The reason that multiple copies of the trigger are needed is because once ''StarCraft'' has finished running through all hyper triggers in a map (which does happen eventually), there will be a gap (known as an '''NEO''', or '''Next Ending Occurrence''') of approximately two seconds -- the normal cycle time. This gap can cause problems with timing. However, the more hyper triggers there are in a map, the longer the period between gaps will be, via the following formula: | The reason that multiple copies of the trigger are needed is because once ''StarCraft'' has finished running through all hyper triggers in a map (which does happen eventually), there will be a gap (known as an '''NEO''', or '''Next Ending Occurrence''') of approximately two seconds -- the normal cycle time. This gap can cause problems with timing. However, the more hyper triggers there are in a map, the longer the period between gaps will be, via the following formula: | ||
Line 101: | Line 101: | ||
== Complex Hyper Triggers == | == Complex Hyper Triggers == | ||
− | Complex hyper triggers are a rather ironically-named pair of triggers that are fairly easy to implement. They may be placed anywhere on the trigger list and do not cause wait blocks, making them more convenient than basic hypers. Furthermore, they rely on [[switch]]es or [[death counters]] (either may be used), so they can be activated or deactivated with ease. However, they are trickier to set up, because the two triggers must be assigned to two different players. | + | Complex hyper triggers are a rather ironically-named pair of triggers that are fairly easy to implement. They may be placed anywhere on the trigger list and do not cause wait blocks, making them more convenient than basic hypers. Furthermore, they rely on [[switch]]es or [[Death Counters|death counters]] (either may be used), so they can be activated or deactivated with ease. However, they are trickier to set up, because the two triggers must be assigned to two different players. As a note of trivia, complex hypers also have no NEOs. |
Here are the triggers for complex hypers that use a switch. To convert them over to death counters, simply use the Deaths condition and Set Deaths action. | Here are the triggers for complex hypers that use a switch. To convert them over to death counters, simply use the Deaths condition and Set Deaths action. | ||
Line 108: | Line 108: | ||
|description=Complex Hyper 1 | |description=Complex Hyper 1 | ||
|players=*Player 1 ''[can be any player, but the hypers must use different players]'' | |players=*Player 1 ''[can be any player, but the hypers must use different players]'' | ||
− | |conditions=*Switch 1 is | + | |conditions=*Switch 1 is Cleared. |
|actions= | |actions= | ||
*Wait 0 milliseconds. | *Wait 0 milliseconds. | ||
− | * | + | *Set Switch 1. |
*Wait 0 milliseconds. | *Wait 0 milliseconds. | ||
*Preserve trigger. | *Preserve trigger. | ||
Line 119: | Line 119: | ||
|description=Complex Hyper 2 | |description=Complex Hyper 2 | ||
|players=*Player 2 ''[can be any player, but the hypers must use different players]'' | |players=*Player 2 ''[can be any player, but the hypers must use different players]'' | ||
− | |conditions=*Switch 1 is | + | |conditions=*Switch 1 is Set. |
|actions= | |actions= | ||
*Wait 0 milliseconds. | *Wait 0 milliseconds. | ||
− | * | + | *Clear Switch 1. |
*Wait 0 milliseconds. | *Wait 0 milliseconds. | ||
*Preserve trigger. | *Preserve trigger. | ||
Line 128: | Line 128: | ||
== Nonzero waits == | == Nonzero waits == | ||
− | Should hyper triggers ever noticeably lag the map, the amount waited can be increased, which will delay each trigger cycle by an additional frame past multiples of 42 on fastest. On other speeds, there are different breakpoints for waits (faster is multiples of 48). Therefore, wait 0-42 will produce 2 frame hyper triggers, wait 43-84 will produce 3 frame hyper triggers, wait 85-126 will produce 4 frame hyper triggers, and so on. In practice, this has little use, as hypers should always be on wait 0 for speed. If you want any sort of delay, it's best to use [[death | + | Should hyper triggers ever noticeably lag the map, the amount waited can be increased, which will delay each trigger cycle by an additional frame past multiples of 42 on fastest. On other speeds, there are different breakpoints for waits (faster is multiples of 48). Therefore, wait 0-42 will produce 2 frame hyper triggers, wait 43-84 will produce 3 frame hyper triggers, wait 85-126 will produce 4 frame hyper triggers, and so on. In practice, this has little use, as hypers should always be on wait 0 for speed. If you want any sort of delay, it's best to use [[death Counters]] as a timer. 3 frame hypers are peculiar, since they allow you to run triggers on frames which 2 frame hypers can't (ie frame 0, 3, 6, 9 vs frame 0, 2, 4, 6, 8). By utilizing complex hyper triggers, it is also possible to change the speed of hyper triggers from 2 or 3 frame on the fly. |
[[Category:StarCraft]] | [[Category:StarCraft]] | ||
[[Category:Tutorials]] | [[Category:Tutorials]] | ||
+ | [[Category:Reference]] |
Latest revision as of 21:52, 2 August 2015
Hyper triggers (often shortened to "hypers") are StarCraft triggers that use game glitches to speed up the rate at which trigger cycles are executed. Under normal circumstances, triggers are checked every two game seconds; hyper triggers cause triggers to be checked every other frame of animation (about twelve times per real-time second on the fastest game speed).
Basic hyper triggers
The basic hyper trigger method uses Wait actions. To avoid wait blocks, the player that owns these triggers cannot own any other triggers that use Waits -- unless there is another player also running hyper triggers. Furthermore, these triggers must be placed at the bottom of the trigger list. This is for several reasons, firstly that (so long as you have at least two players running hyper triggers), one of them will be able to run a Wait action and the map hyper triggers will not pause (because there will be another player still properly running hyper triggers). If no computer players are available to run hyper triggers, hyper triggers must be included in the trigger lists of every player, thus ensuring that there will always be at least one set of hyper triggers running.
The following trigger is a hyper trigger. It is strongly recommended that you use multiple copies of it in your map; generally, about four of them will do.
If you wish to add a Comment action, simply remove one Wait action to make room for it. (The number of actions in the trigger should be sixty-four -- the maximum amount of actions a trigger can hold. So without a Comment, you should have 63 Waits; with a Comment, you should have 62. Do not forget the Preserve Trigger action.)
- [any player following the above recommendations]
- Always
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Wait 0 milliseconds.
- Preserve trigger.
Multiple copies of this trigger (at least four) are strongly recommended.
How it works
These hyper triggers cause StarCraft to check the map's trigger list about 11.904761904761904761904761904762 times per second. This happens because before a Wait action, StarCraft checks all trigger conditions in any trigger for any player. Thus, by stacking very short wait periods in a single trigger, StarCraft is forced to check all triggers many times per second.
The reason that multiple copies of the trigger are needed is because once StarCraft has finished running through all hyper triggers in a map (which does happen eventually), there will be a gap (known as an NEO, or Next Ending Occurrence) of approximately two seconds -- the normal cycle time. This gap can cause problems with timing. However, the more hyper triggers there are in a map, the longer the period between gaps will be, via the following formula:
(x + 1)n * 0.084 = number of seconds until NEO
where x is the number of Wait actions in a hyper trigger, and n is the total number of separate hyper triggers in your map. Using the example of four copies with 63 wait actions in each:
(63 + 1)4 * 0.084 seconds
(64)4 * 0.084 seconds
16777216 * 0.084 seconds
1409286.144 seconds
Therefore, the time between NEOs will be approximately 391.5 hours, or about 16 days. All maps last considerably less time than this, and so this number of hyper triggers will be sufficient in all situations. Bear in mind, however, that there will be one NEO at the beginning of the map, which happens because StarCraft does not cycle triggers at the beginning of the game, instead waiting for a standard cycle period and then running through the trigger lists. As soon as the first cycle has been completed, however, you need not worry about NEOs.
Complex Hyper Triggers
Complex hyper triggers are a rather ironically-named pair of triggers that are fairly easy to implement. They may be placed anywhere on the trigger list and do not cause wait blocks, making them more convenient than basic hypers. Furthermore, they rely on switches or death counters (either may be used), so they can be activated or deactivated with ease. However, they are trickier to set up, because the two triggers must be assigned to two different players. As a note of trivia, complex hypers also have no NEOs.
Here are the triggers for complex hypers that use a switch. To convert them over to death counters, simply use the Deaths condition and Set Deaths action.
- Player 1 [can be any player, but the hypers must use different players]
- Switch 1 is Cleared.
- Wait 0 milliseconds.
- Set Switch 1.
- Wait 0 milliseconds.
- Preserve trigger.
- Player 2 [can be any player, but the hypers must use different players]
- Switch 1 is Set.
- Wait 0 milliseconds.
- Clear Switch 1.
- Wait 0 milliseconds.
- Preserve trigger.
Nonzero waits
Should hyper triggers ever noticeably lag the map, the amount waited can be increased, which will delay each trigger cycle by an additional frame past multiples of 42 on fastest. On other speeds, there are different breakpoints for waits (faster is multiples of 48). Therefore, wait 0-42 will produce 2 frame hyper triggers, wait 43-84 will produce 3 frame hyper triggers, wait 85-126 will produce 4 frame hyper triggers, and so on. In practice, this has little use, as hypers should always be on wait 0 for speed. If you want any sort of delay, it's best to use death Counters as a timer. 3 frame hypers are peculiar, since they allow you to run triggers on frames which 2 frame hypers can't (ie frame 0, 3, 6, 9 vs frame 0, 2, 4, 6, 8). By utilizing complex hyper triggers, it is also possible to change the speed of hyper triggers from 2 or 3 frame on the fly.