You can know more about editing the articles in the wiki by reading guidelines.

Difference between revisions of "Guards"

From Speedrunwiki.com
Jump to navigationJump to search
(add info from facts topic)
(change to single column on references)
 
(7 intermediate revisions by 2 users not shown)
Line 4: Line 4:
  
 
=== Guards (General) ===
 
=== Guards (General) ===
* General guards have an 11 / 256 (~4.3%) chance to perform a grenade pulling animation, but if the guard is unable to pull grenades, or their individual grenade RNG check fails (different chance for different guards), they will do something else (I think). <ref name="function explorer misc facts">{{cite web | url=https://forums.the-elite.net/index.php?topic=18518.msg455830#msg455830|title=the-elite Goldeneye facts topic post on miscellaneous function explorer facts|author=Icy|access-date=July 16, 2021}}</ref>
+
* Guards who dual-wield any weapon can never pull grenades. <ref name="function explorer misc facts">{{cite web | url=https://forums.the-elite.net/index.php?topic=18518.msg455830#msg455830|title=the-elite Goldeneye facts topic post on miscellaneous function explorer facts|author=Icy|access-date=July 16, 2021}}</ref>
* Guards who dual-wield any weapon can never pull grenades. <ref name="function explorer misc facts" />
+
* Guards have a 1 in 128 chance to do an idle animation per frame.<ref name=":0">https://ryandwyer.gitlab.io/gepd-function-explorer/ge-global-0003.html</ref>
* Guards have a 1 in 256 chance to do an idle animation per frame. <ref name="function explorer misc facts" />
+
* For idle animations, guards have a 5 / 256 chance (~1.95%) to sneeze.<ref name=":0" />
* For idle animations, guards have a 5 / 256 chance (~1.95%) to sneeze. The other 5 idle animations have a 50 in 256 chance (one with a 51 in 256 chance). <ref name="function explorer misc facts" />
 
* When a guard hears a shot (and is loaded?) they have a 50% chance of firing back (or at least performing a firing animation), and a 50% chance of looking around first. <ref name="function explorer misc facts" />
 
* Alarm guards must be within 10 units of the alarm to activate them. <ref name="function explorer misc facts" />
 
* Guards who are able to clone will always do so if they can. <ref name="function explorer misc facts" />
 
* Most guards in the game have 40 health. <ref name="function explorer misc facts" />
 
 
* Targeting guards that do a sharp angle change can become frozen, but it is unclear why. This only occurs on NTSC-U, and not PAL or NTSC-J. They must lose health to become unfrozen, but can later become re-frozen. All dual-wielding Moonraker guards and [[Frozen Baron Glitch|third Baron]] can also become similarly frozen with a rolling animation under more unknown specifics, but this can occur on all versions. <ref name="function explorer misc facts" />
 
* Targeting guards that do a sharp angle change can become frozen, but it is unclear why. This only occurs on NTSC-U, and not PAL or NTSC-J. They must lose health to become unfrozen, but can later become re-frozen. All dual-wielding Moonraker guards and [[Frozen Baron Glitch|third Baron]] can also become similarly frozen with a rolling animation under more unknown specifics, but this can occur on all versions. <ref name="function explorer misc facts" />
  
=== Scientists ===
+
== Types of Guards ==
* Scientists have 4 "hacking animations". 3 of them have a 60 in 256 chance to occur, while the 4th has a 76 in 256 chance to occur. <ref name="function explorer misc facts" />
+
 
* Scientists become angry after getting shot twice, regardless of their health. Because of this, the only way to get angry scientists on Agent is by 2x limb shots with Klobb <ref name="function explorer misc facts" />
+
=== [https://ryandwyer.gitlab.io/gepd-function-explorer/ge-global-0002.html 0002 Guard] ===
* Angry scientists' AI are exactly like normal guards. Auto-aim works on them. <ref name="function explorer misc facts" />
+
The most common guard. Stays idle, runs to you/fires at you when he sees/hears you. Afterwards continues chasing your former positions until seeing you again or 10s passes, if the latter, becomes idle again.
 +
 
 +
=== Patrolling Guard ===
 +
Normal guard but will initially be moving along a path
 +
 
 +
=== Targeting Guard ===
 +
Aims at you and updates their angle continuously.
 +
 
 +
=== Cloner Guard ===
 +
Normal guard, but capable of cloning if you haven't looked at him yet. They clone themselves and send off the clone instead, while staying in place and being otherwise idle. <ref name="guard ai types">{{cite web | url=https://forums.the-elite.net/index.php?topic=18518.msg456102#msg456102|title=the-elite forum Goldeneye facts post on guard AI|author=Icy|access-date=July 16, 2021}}</ref>
 +
 
 +
=== Spawn Guard ===
 +
Guards who spawn after an event.
 +
 
 +
=== [https://ryandwyer.gitlab.io/gepd-function-explorer/ge-global-0009.html Alarm guards] ===
 +
Look around when alerted by a noise, a nearby shot or a hit on a guard that they can see. They then run to their assigned alarm and activate it on arrival, before becoming a normal guard and chasing bond (once). If they see Bond directly then they run to the alarm without looking around.
 +
 
 +
== Guard Attack Scripts ==
 +
 
 +
This is an outline of the [[Scripts|AI Script]] the guard uses to attack.
 +
 
 +
=== Standard Attack Script ===
  
== Types of Guards ==
+
Most guards run this standard attack script<ref>{{cite web | url=https://ryandwyer.gitlab.io/gepd-function-explorer/ge-global-0006.html|title=Goldeneye/Perfect Dark function explorer|author=Ryan Dwyer|access-date=July 16, 2021}}</ref> to select an attack (there are still plenty of exceptions, i.e. spawn guards on S2, blue hat caverns guards to name a few). The randomness used to decide an attack is kinda clear if you can read these scripts, but there are requirements for most of the attacks which I've dug out of the assembly<ref>{{cite web | url=https://forums.the-elite.net/index.php?topic=18518.msg469573#msg469573|title=the-elite forum Goldeneye facts post on standard guard attack script|author=Whiteted|access-date=July 16, 2021}}</ref>.
 +
 
 +
Note: all space related tests ignore other guards and even objects, they're just looking at 'level geometry'.
 +
 
 +
Listing these in the order that they are potentially tried, and splitting them into 4 groups:
 +
 
 +
Group 1 : grenade
 +
 
 +
* [1A] Roll for grenade
 +
** Selects a random number 0-254 (255 possibilities) and this must be less than the guard's grenade probability. I've often said this was 0-255 (256 possibilities) before but I was wrong :p
 +
 
 +
Group 2 - dodging
 +
 
 +
* [13] Roll and fire
 +
** Requires 2m to the left / right of the guard looking at the guard from the player's point of view. Selects direction randomly, but will try the other direction if the first is blocked.
 +
* [0F] Side hop
 +
** Similarly requires 2m to the left / right but from the guard's point of view.
 +
** Additionally the player must be in the front or rear quadrants of the guard. i.e. if ahead of the guard is north, the player must be between NW and NE or between SE and SW.
 +
* [0E] Sidestep - identical to the hop, but only requires 1m of room.
 +
* [10] Run sideways
 +
** Has a weird first test, which is something like "the guard hasn't begun anything in the last 3 seconds".
 +
** Then it uniformly selects a random distance between 2 and 4m. It requires this to the left / right of the guard looking at the guard from the player's point of view, as for Roll & fire.
 +
 
 +
Group 3 : charging
 +
 
 +
* [12,13] Walk / Run & Fire
 +
** Same 3s tests as for running sideways
 +
** The player must be more than 10m away from the guard (3D test)
 +
 
 +
Group 4 : stationary attacks
 +
 
 +
* [14, 15] Stand / Crouch & Shoot
 +
** These always succeed.
 +
 
 +
With the probabilities, working backwards kinda makes sense.
 +
In group 4 the guard has a 50% chance to crouch, and 50% to stand. Simple.
 +
In group 3, if the guard started something in the last 3s, or is within 10m of Bond, then continue to group 4. Otherwise:
 +
 
 +
* 25% chance to walk & fire
 +
* 25% chance to run & fire
 +
* 50% chance to continue to group 4 anyway
 +
 
 +
 
 +
Group 2 is more complicated because some are from the player's POV, some from the guard's, and some care about which quadrant the player is in and others don't. So possibilities and odds will vary, but lets pick the simplest case where the guard is directly facing Bond, so left / right from the two POV's are just reversed which doesn't matter, and Bond is in the NW -> NE quadrant so that check passes. Further assuming that there's plenty of space either side of the guard, we have these odds:
 +
 
 +
* 4.3% chance to roll & fire
 +
* 4.1% chance to hop
 +
* 9.3% chance to sidestep
 +
* 16.4% chance to run sideways
 +
* 65.9% chance to continue to group 3
 +
 
 +
So more than 1/3 chance of doing trollery basically. But note that if he doesn't have much space then he may only be able to side step, which would then have higher odds of 10.2% because the previous attacks would never prevent you rolling for a side step.
 +
 
 +
Finally group 1 is very simple. It has an X/255 chance of pulling a grenade. If it fails to, continue to group 2. X varies depending on the guard.
 +
 
 +
== Technical Details ==
 +
 
 +
=== Ghost Doors ===
 +
 
 +
Conditions for a guard to open a door<ref>{{cite web | url=https://forums.the-elite.net/index.php?topic=18518.msg467679#msg467679|title=the-elite Goldeneye facts topic post on ghost doors|author=Whiteted|access-date=July 16, 2021}}</ref>:
 +
 
 +
# The guard is walking along a path or chasing Bond
 +
# The guard is within 2m of it (3D test, door considered as a point)
 +
# The guard's chase timer is a multiple of 10
 +
# The door is the 1st one that the line from the guard to his local target point intersects
 +
 
 +
All doors opened by guards are opened by this mechanic. It's worth noting that all double doors / gates / glass are actually just individual doors which are linked. Aztec glass consists of 3 doors.
 +
 
 +
; The chase timer
 +
When a guard starts chasing Bond, the chase timer is set to a random value from 0 to 99, chosen uniformly. It increases by 1 every time the guard updates, which is every drawn frame I think (unlike PD).
 +
So for 'frame perfect' tricks like ghost doors (see below), you effectively have a 1 in 10 chance of passing the chase timer test. And strats like mainframe glass get their consistency from having a large number of consecutive frames for which the guard passes the other tests.
 +
 
 +
;The local target
 +
The intended purpose of the local target is to avoid dynamic objects like other guards and to navigate using the clipping tiles when they get close to their target. The standard way we manipulate these into / behind doors is by placing a second guard by the door, and the 1st guard sets their local target inside the door, trying to avoid the 2nd guard. But when a guard unloads, the local target doesn't get updated. And in fact the local target doesn't get updated until the 2nd frame that the guard is loaded. This will give rise to ghost doors.
 +
 
 +
; Example: Aztec Glass
 +
 
 +
Video: [https://www.youtube.com/watch?v=_4ZNCrHcAkQ Behind the mainframe strat curtain].
 +
 
 +
Key:
 +
* The 2m circle around the doors
 +
* The guard's normal target
 +
* The guard's local target
 +
 
 +
The conditions are monitored in the top left. Condition 4 is True the whole time that the guard's local target is inside the door.
 +
 
 +
The magic of the mainframe strat is that
 +
 
 +
* because the 1st guard arrives unloaded, the 2nd guard's local target is always inside the glass
 +
* the 2nd guard spends a long period in range of the door that he'll open
 +
 
 +
Note that you mustn't be too far behind the crack when you do the lures, else the guard will only be able to open the middle glass "door". This completely loses this 2nd great advantage and the consistency will plummet.
 +
 
 +
; Example: Archives
 +
 
 +
This is a general mechanic, so can be applied to any level but we'll deal with the classic archives one. As Henrik showed, it's the patrolling guard who opens it on the 1st frame that he loads, as he heads away from it.
 +
 
 +
On Archives, Miskin is in the path of this guard, and the patrolling guard can spend a long time circling him, staying loaded. When I set up this ghost door myself, he was loaded when I lured him, and stayed loaded for a little while, even opening the door to Miskin's room. This put his local target directly behind the ghost door, before he then unloaded.
 +
 
 +
He goes through the door unloaded and starts going along the corridor. When I loaded him then the line mentioned in condition (4) goes straight through the middle of the door. Conditions (1) and (2) are trivially true. And (3) is essentially a 10% chance.
 +
 
 +
; Limitations
 +
 
 +
Local targets persist after resetting the level. But when guards first start chasing Bond (when the 28 command succeeds for the guard script boffins) they always set a flag invalidating the current local target.
 +
 
 +
This restriction is worse though because it means that the guards must set their local target then unload and move to the front of the door in a single movement. They can't arrive somewhere and then hear you again or even chase you because they were alerted recently.
 +
 
 +
=== Shoot Alert Time ===
 +
 
 +
When you shoot near a guard and alert him you have a 50% chance of him attacking and a 50% chance for him to look about.
 +
If he looks about, the length of the animation is equally likely to be<ref name="misc guard facts">{{cite web | url=https://forums.the-elite.net/index.php?topic=18518.msg470061#msg470061|title=the-elite Goldeneye facts topic post on a few more guard details|author=Whiteted|access-date=July 16, 2021}}</ref>:
 +
 
 +
* 0.60s
 +
* 1.38s
 +
* 2.20s
 +
 
 +
=== Misc ===
  
=== 0002 Guard ===
+
* For guard hops there are 4 different ones but they are all a frame within 1.47s <ref name="misc guard facts" />
0002 type.
+
* And again for both the guard stands up briefly at the end of the animation.
  
 
== References ==
 
== References ==
{{Reflist|2}}
+
{{Reflist}}
  
 
[[Category:GE Strats]]
 
[[Category:GE Strats]]
 
[[Category:GoldenEye 007]]
 
[[Category:GoldenEye 007]]

Latest revision as of 18:48, 18 July 2021

This is a description of NPC guards within GoldenEye 007

Facts

Guards (General)

  • Guards who dual-wield any weapon can never pull grenades. [1]
  • Guards have a 1 in 128 chance to do an idle animation per frame.[2]
  • For idle animations, guards have a 5 / 256 chance (~1.95%) to sneeze.[2]
  • Targeting guards that do a sharp angle change can become frozen, but it is unclear why. This only occurs on NTSC-U, and not PAL or NTSC-J. They must lose health to become unfrozen, but can later become re-frozen. All dual-wielding Moonraker guards and third Baron can also become similarly frozen with a rolling animation under more unknown specifics, but this can occur on all versions. [1]

Types of Guards

0002 Guard

The most common guard. Stays idle, runs to you/fires at you when he sees/hears you. Afterwards continues chasing your former positions until seeing you again or 10s passes, if the latter, becomes idle again.

Patrolling Guard

Normal guard but will initially be moving along a path

Targeting Guard

Aims at you and updates their angle continuously.

Cloner Guard

Normal guard, but capable of cloning if you haven't looked at him yet. They clone themselves and send off the clone instead, while staying in place and being otherwise idle. [3]

Spawn Guard

Guards who spawn after an event.

Alarm guards

Look around when alerted by a noise, a nearby shot or a hit on a guard that they can see. They then run to their assigned alarm and activate it on arrival, before becoming a normal guard and chasing bond (once). If they see Bond directly then they run to the alarm without looking around.

Guard Attack Scripts

This is an outline of the AI Script the guard uses to attack.

Standard Attack Script

Most guards run this standard attack script[4] to select an attack (there are still plenty of exceptions, i.e. spawn guards on S2, blue hat caverns guards to name a few). The randomness used to decide an attack is kinda clear if you can read these scripts, but there are requirements for most of the attacks which I've dug out of the assembly[5].

Note: all space related tests ignore other guards and even objects, they're just looking at 'level geometry'.

Listing these in the order that they are potentially tried, and splitting them into 4 groups:

Group 1 : grenade

  • [1A] Roll for grenade
    • Selects a random number 0-254 (255 possibilities) and this must be less than the guard's grenade probability. I've often said this was 0-255 (256 possibilities) before but I was wrong :p

Group 2 - dodging

  • [13] Roll and fire
    • Requires 2m to the left / right of the guard looking at the guard from the player's point of view. Selects direction randomly, but will try the other direction if the first is blocked.
  • [0F] Side hop
    • Similarly requires 2m to the left / right but from the guard's point of view.
    • Additionally the player must be in the front or rear quadrants of the guard. i.e. if ahead of the guard is north, the player must be between NW and NE or between SE and SW.
  • [0E] Sidestep - identical to the hop, but only requires 1m of room.
  • [10] Run sideways
    • Has a weird first test, which is something like "the guard hasn't begun anything in the last 3 seconds".
    • Then it uniformly selects a random distance between 2 and 4m. It requires this to the left / right of the guard looking at the guard from the player's point of view, as for Roll & fire.

Group 3 : charging

  • [12,13] Walk / Run & Fire
    • Same 3s tests as for running sideways
    • The player must be more than 10m away from the guard (3D test)

Group 4 : stationary attacks

  • [14, 15] Stand / Crouch & Shoot
    • These always succeed.

With the probabilities, working backwards kinda makes sense. In group 4 the guard has a 50% chance to crouch, and 50% to stand. Simple. In group 3, if the guard started something in the last 3s, or is within 10m of Bond, then continue to group 4. Otherwise:

  • 25% chance to walk & fire
  • 25% chance to run & fire
  • 50% chance to continue to group 4 anyway


Group 2 is more complicated because some are from the player's POV, some from the guard's, and some care about which quadrant the player is in and others don't. So possibilities and odds will vary, but lets pick the simplest case where the guard is directly facing Bond, so left / right from the two POV's are just reversed which doesn't matter, and Bond is in the NW -> NE quadrant so that check passes. Further assuming that there's plenty of space either side of the guard, we have these odds:

  • 4.3% chance to roll & fire
  • 4.1% chance to hop
  • 9.3% chance to sidestep
  • 16.4% chance to run sideways
  • 65.9% chance to continue to group 3

So more than 1/3 chance of doing trollery basically. But note that if he doesn't have much space then he may only be able to side step, which would then have higher odds of 10.2% because the previous attacks would never prevent you rolling for a side step.

Finally group 1 is very simple. It has an X/255 chance of pulling a grenade. If it fails to, continue to group 2. X varies depending on the guard.

Technical Details

Ghost Doors

Conditions for a guard to open a door[6]:

  1. The guard is walking along a path or chasing Bond
  2. The guard is within 2m of it (3D test, door considered as a point)
  3. The guard's chase timer is a multiple of 10
  4. The door is the 1st one that the line from the guard to his local target point intersects

All doors opened by guards are opened by this mechanic. It's worth noting that all double doors / gates / glass are actually just individual doors which are linked. Aztec glass consists of 3 doors.

The chase timer

When a guard starts chasing Bond, the chase timer is set to a random value from 0 to 99, chosen uniformly. It increases by 1 every time the guard updates, which is every drawn frame I think (unlike PD). So for 'frame perfect' tricks like ghost doors (see below), you effectively have a 1 in 10 chance of passing the chase timer test. And strats like mainframe glass get their consistency from having a large number of consecutive frames for which the guard passes the other tests.

The local target

The intended purpose of the local target is to avoid dynamic objects like other guards and to navigate using the clipping tiles when they get close to their target. The standard way we manipulate these into / behind doors is by placing a second guard by the door, and the 1st guard sets their local target inside the door, trying to avoid the 2nd guard. But when a guard unloads, the local target doesn't get updated. And in fact the local target doesn't get updated until the 2nd frame that the guard is loaded. This will give rise to ghost doors.

Example
Aztec Glass

Video: Behind the mainframe strat curtain.

Key:

  • The 2m circle around the doors
  • The guard's normal target
  • The guard's local target

The conditions are monitored in the top left. Condition 4 is True the whole time that the guard's local target is inside the door.

The magic of the mainframe strat is that

  • because the 1st guard arrives unloaded, the 2nd guard's local target is always inside the glass
  • the 2nd guard spends a long period in range of the door that he'll open

Note that you mustn't be too far behind the crack when you do the lures, else the guard will only be able to open the middle glass "door". This completely loses this 2nd great advantage and the consistency will plummet.

Example
Archives

This is a general mechanic, so can be applied to any level but we'll deal with the classic archives one. As Henrik showed, it's the patrolling guard who opens it on the 1st frame that he loads, as he heads away from it.

On Archives, Miskin is in the path of this guard, and the patrolling guard can spend a long time circling him, staying loaded. When I set up this ghost door myself, he was loaded when I lured him, and stayed loaded for a little while, even opening the door to Miskin's room. This put his local target directly behind the ghost door, before he then unloaded.

He goes through the door unloaded and starts going along the corridor. When I loaded him then the line mentioned in condition (4) goes straight through the middle of the door. Conditions (1) and (2) are trivially true. And (3) is essentially a 10% chance.

Limitations

Local targets persist after resetting the level. But when guards first start chasing Bond (when the 28 command succeeds for the guard script boffins) they always set a flag invalidating the current local target.

This restriction is worse though because it means that the guards must set their local target then unload and move to the front of the door in a single movement. They can't arrive somewhere and then hear you again or even chase you because they were alerted recently.

Shoot Alert Time

When you shoot near a guard and alert him you have a 50% chance of him attacking and a 50% chance for him to look about. If he looks about, the length of the animation is equally likely to be[7]:

  • 0.60s
  • 1.38s
  • 2.20s

Misc

  • For guard hops there are 4 different ones but they are all a frame within 1.47s [7]
  • And again for both the guard stands up briefly at the end of the animation.

References

  1. 1.0 1.1 Icy. "the-elite Goldeneye facts topic post on miscellaneous function explorer facts". Retrieved July 16, 2021.
  2. 2.0 2.1 https://ryandwyer.gitlab.io/gepd-function-explorer/ge-global-0003.html
  3. Icy. "the-elite forum Goldeneye facts post on guard AI". Retrieved July 16, 2021.
  4. Ryan Dwyer. "Goldeneye/Perfect Dark function explorer". Retrieved July 16, 2021.
  5. Whiteted. "the-elite forum Goldeneye facts post on standard guard attack script". Retrieved July 16, 2021.
  6. Whiteted. "the-elite Goldeneye facts topic post on ghost doors". Retrieved July 16, 2021.
  7. 7.0 7.1 Whiteted. "the-elite Goldeneye facts topic post on a few more guard details". Retrieved July 16, 2021.