Boris: Difference between revisions
en>BurnsBA (add Boris facts topic info) |
m (1 revision imported) |
(No difference)
|
Latest revision as of 08:31, 9 April 2022
Boris is an NPC that shows up in GoldenEye 007.
Bunker 1
Boris is needed to complete 00 objective on Bunker 1.
Technical Details
Broadly, it's all around how Boris "flees", which is all about the navigation graph.
- Points on the navigation graph are called pads.
- Ever spot on the map has a "closest pad" which has a special meaning.
- Each pad is in a set. Nearly all of the main room is set 6, notable exceptions from the picture below are 60 & 62 which are in set 0, and 51 which is in set 5.
Here's the map of the area for which pads are closest in the main room (this map is super important): 62 and 41 are different pads at the same coordinates in different sets and on this map the steel grey is 41's area, and the tan L-shape is 62's.
These wacky shapes are produced by a breadth-first-search which assigns tiles to points followed by a bugged test for the closest neighbor.
Boris' script contains an (unique? *) instruction which drives his fleeing behaviour. This is command 6E 20 and it was very fun to reverse. It repeated uses a "random choice of neighbour", which is important to understand. This works by:
- Getting the ordered list of the pad's neighbours
- Choosing one at random (uniformly)
- Stepping through the list, wrapping if necessary, searching for one which fits some criteria
\* maybe some civilians on streets use it or something but no one relevant
If 6E 20 fails (no such pad exists to choose np from randomly / deterministically) then it falls back on 6E 08, 04 and 02, 01 in that order.
The key point is how (in an IL atleast) you want to go to WALK initially because it means only waiting a 3s timer rather than 10, but there's no need to stay there. By injuring Boris we can escape from a 5 second timer and thanks to a friendly flag check, Boris doesn't start walking again. Once we're out of range, Boris will flee.
When Boris flees, it's always a single segment on the navigation graph. He either walks (20% odds) or runs (80%) along it, with running being 2x as fast I think.
Finally you do need to know some specific orders of neighbours in the navigation graph to understand what's going on. They seem to be ordered pretty erratically. Here's the dump from the setup editor.
- Staying in the middle of the big room to help Boris' pathing.
If your closest pad is 49 or 4C, and Boris reaches 42, he'll see 46 as a possible pad to flee to (as well as 3D which we want), and will head to it.. 75% of the time! Why not 50%? 42's neighbours are 004C 0047 0046 003D. If Boris randomly picks 4C or 47, he will step forward until he reaches 46, since neither of the former two are away from Bond. Instead if your closest pad is 47, 48 or even 4B then Boris will only see 3D as a possible next pad, so will head on that optimal path 100% of the time.
- The Boris left turn at the top of the stairs.
3D & 51 are the pads joining set 06 (main room) to 05 (the heart of the corridors). If you are in the same set as Boris when he's fleeing at the top of the stairs, 6E 20 will send him towards pad 5D in set 02 (that dead end) because it is the only neighbour of 5D in a different set. Otherwise you'll be in set 06. Considering 05's order of neighbours: "Set: 05 Connections: 01 02 03 04 06" 06 will roll onto 01. Choosing set 01, 03 or 04 all cause Boris to continue ahead like we want. This will happen 80% of the time. 20% he'll turn left, and that's pure RNG.
- Odds of turning into the mainframe room.
Unfortunately, the pad behind the first door is still in set 05, otherwise Boris would pick it every time. As things stand we have to consider 4F (the pad outside)'s neighbours: Preset 004F: 0050 004E 004D 4D is behind the first mainframe door. 4E is further down the corridor, and 50 is where we came from. Bond had to hang back in set 06, so must be behind Boris. As such, 50 rolls onto 4E in the random choice of neighbour. The chance of turning into the mainframe is 33.3%, with a 66.6% chance to carry on ahead. This sucks but there's nothing to be done about it normally. On turbo you can overtake him and have a 2/3 chance of him turning in
Miscellaneous Details
Boris Logic [1]:
If Boris surrenders, 3s must pass, you must be within 15 units from him, and you must have him at gunpoint to make him walk towards the computer room.
If Boris surrenders, 10s passes, you are 80 units away from him, and he is not at gunpoint, Boris will go somewhere else (?) with a 51 / 256 (~19.9%) chance of walking, and a 205 / 256 (~80%) chance of jogging. Once he reaches where he wants to go and stops, he'll check if you're within 20 units or have him at gunpoint. If not, he'll repeat what he did with another location. If Boris is within 100 units of somewhere (glass doors?), he will run to the exit and fail the objective.
When Bond says "Take me to the mainframe terminal!", Boris will walk to the computer mainframes. Exactly every 5s (10s, 15s, 20s, etc) since he started walking, if you are 50 units away, and Boris is not at gunpoint, he will then go somewhere else (?) under the same logic when he surrenders and walks/jogs away.
When Boris reaches the computer mainframes under Bond's command and at least one of the two is undamaged, Boris will begin the objective and continue doing so as long as he isn't shot and both mainframes aren't damaged. After 21s, the objective completes and the mainframe becomes active.
Control
Boris is briefly present on Control.
References
- ↑ Icy. "the-elite Goldeneye facts topic post on miscellaneous function explorer facts". Retrieved July 16, 2021.