Unloaded movement: Difference between revisions
m (1 revision imported) |
|||
Line 55: | Line 55: | ||
* [[Dam]] tunnel. The lookup strat loads the main area sooner, which contains the end of the gate guard's current segment. He loads and starts walking to open both gates for us. Originally he is between the two gates but moves unloaded through the back gate. This significant movement in the "wrong direction" is caused by the sparseness of the navigation graph, as mentioned above. | * [[Dam]] tunnel. The lookup strat loads the main area sooner, which contains the end of the gate guard's current segment. He loads and starts walking to open both gates for us. Originally he is between the two gates but moves unloaded through the back gate. This significant movement in the "wrong direction" is caused by the sparseness of the navigation graph, as mentioned above. | ||
* [[Dam]] open door (00A). The guard is moving unloaded away from the door. The perfect lookup timing is rather precise to load him and force him back to the pad next to the door exactly when the pad is in range to hear Bond. If done too early the guard will move loaded away from the door and will have to run back to open it. If done too late the guard will either finish his segment before he is loaded, or it will simply delay him opening the door. | |||
* The infamous chair on [[frigate]] agent, which the hostage will ignore completely if moving unloaded, but which will cause further delays if the hostage is loaded. | * The infamous chair on [[frigate]] agent, which the hostage will ignore completely if moving unloaded, but which will cause further delays if the hostage is loaded. | ||
* [[Depot]] train guard(s), who can "warp" the train door without opening it. One requirement for this to happen is that the room outside of the train must be unloaded, which will happen when you look away i.e. if the guard(s) pull longer animations. Also the 2nd guard must not load on the first guard (at the end of his first segment). This is possible if your shot only went nearby one guard (rather than between them / hitting one). | * [[Depot]] train guard(s), who can "warp" the train door without opening it. One requirement for this to happen is that the room outside of the train must be unloaded, which will happen when you look away i.e. if the guard(s) pull longer animations. Also the 2nd guard must not load on the first guard (at the end of his first segment). This is possible if your shot only went nearby one guard (rather than between them / hitting one). |
Latest revision as of 18:38, 18 June 2022
Unloaded movement of guards and other characters is one of the most fundamental mechanics in Goldeneye.
It can only happen when the two rooms that the guard is in, and immediately travelling to, are not loaded. Rather than actually animate, which is normally what drives the movement of guards, the guard simulates the movement in a lazy way.
If a character is not unloaded then they are 'loaded', but note that this does not necessarily mean that they are on screen.
Segment start
At the moment that unloaded movement starts, the character effectively computes:
- a speed computed from the animation that they would have otherwise used
- the distance to their immediate destination
- the time it'll take from distance / speed
And then waits this amount of time, rounded up to the nearest game frame.
This line from their start point to their immediate destination is called a segment.
Potential low speed
If the guard was previously idle (i.e. is just starting some movement) then this speed that they pick will always be what we'd expect.
However if they were already moving loaded, then they can be slower than we'd expect. This is because when guards turn their speed drops by 20%, and when they open a door it drops by 90% before they come to a stop. If you are unfortunate (generally we're looking for fast movement) then the character unloads at a moment that their speed has dropped.
This lower speed will persist for as long as they are unloaded, not just for that segment. This is detrimental to hostages on Frigate / Nat on Control.
Segment end
After that time has elapsed, the character wishes to teleport to his destination.
If there is no space for them there then they will become loaded back at the start of the segment. Likewise if at any point the player loads either of the rooms that the start / end of the segment are in then the character loads back at the start of the segment.
Both cases are often called reloading a guard. The entire time spent moving unloaded has been wasted.
Note that what is between the character and the end of the segment isn't taken into consideration. In particular guards will teleport straight through closed doors without any issues. This is commonly called 'warping' - usually we were hoping that a guard would open the door for us - but should not be confused with the player warping which is completely unrelated.
After teleporting, if the character's next pad on the route is in a loaded room, then they load immediately, without losing any time, and facing their next pad. If you must load a guard again after they've become unloaded, then this is the way to have it happen without them losing progress.
Pad-floor gap
The check to see if the guard can fit at the end of the segment uses the position of the pad. However this is often elevated significantly off of the floor, or stans. As such there are situations where the guard will load despite not actually being blocked from finishing his segment.
A good example from frigate is shown on the right. The setup editor shows the pads of the navigation graph in green, on the floor, but their true location is elevated above this.
Indeed the marked pad is actually up at the feet of that standing guard. With the guard still there, the two hostages will load at the end of the short segment to the foot of the stairs there. A few frigate TASes alert or kill this guard to aid hostage pace, but the effects in a real run are complicated since loading so 'cheaply' may be preferable to loading on a longer segment if there are guards on those stairs.
Routing
Unloaded movement is made up of these straight line segments, but normally more than just one.
One of the crucial properties of unloaded movement is that except for the start and final destination, all the intermediate points will be pads on the navigation graph. When loaded, guards will still use the navigation graph to plot a route, but they are always looking to see if they can 'shortcut' past their next intermediate point, and will navigate some obstacles to do so.
This doesn't happen while unloaded.
The navigation graphs can be quite sparse in some areas, leading to very inefficient paths. They can easily be viewed in the setup editor, by turning on "sets" (sets make up the navigation graph). In particular there are usually two pads (nodes of the navigation graph) either side of any door.
Notable examples
Obviously there is unloaded movement nearly everywhere (except where you look), but there are some particularly sharp examples:
- Dam tunnel. The lookup strat loads the main area sooner, which contains the end of the gate guard's current segment. He loads and starts walking to open both gates for us. Originally he is between the two gates but moves unloaded through the back gate. This significant movement in the "wrong direction" is caused by the sparseness of the navigation graph, as mentioned above.
- Dam open door (00A). The guard is moving unloaded away from the door. The perfect lookup timing is rather precise to load him and force him back to the pad next to the door exactly when the pad is in range to hear Bond. If done too early the guard will move loaded away from the door and will have to run back to open it. If done too late the guard will either finish his segment before he is loaded, or it will simply delay him opening the door.
- The infamous chair on frigate agent, which the hostage will ignore completely if moving unloaded, but which will cause further delays if the hostage is loaded.
- Depot train guard(s), who can "warp" the train door without opening it. One requirement for this to happen is that the room outside of the train must be unloaded, which will happen when you look away i.e. if the guard(s) pull longer animations. Also the 2nd guard must not load on the first guard (at the end of his first segment). This is possible if your shot only went nearby one guard (rather than between them / hitting one).
- Looking up 'at :37:XX' on streets agent. This loads the room at the corner which contains the end of the spawn guard's segment, causing him to load back at the start of the segment. If you look up too late (by the timer) then he'll have completed his segment and will be on the other side of the road.
- Nat's return to the lift on control. Not only does she "warp" through her door while unloaded, but she is a particularly good example of the speed being fixed at the moment that the character first unloads. This is why if she doesn't take the normal amount of time (~17s), she'll take significantly longer - probably an additional 25% i.e. 4.25s due to unloading at 80% speed.
- On Aztec, where there is a pad inside the movable mainframe. Each of the little enclosures on the sides of the black room are actually separate rooms, and the mainframe itself is in a different room to the main part of the black room. The Illu mainframe strat works because the guard hears Bond and moves towards his nearest pad, which is inside the mainframe. If he crosses into the room that it's in without shortcutting on his plotted route, he'll unload and move into the mainframe. His next pad after that is back in the black room and so he loads and is stuck. The normal mainframe unloads both the mainframe's room and the main black room, so the guard always moves unloaded into the mainframe, and then we reload him before he reaches his next pad in the black room.
Trivia
Doak does not give the developer's name for this process in an interview where it came up, but parts of the Perfect Dark code suggest it may simply have been called "magic".