First published at 07:48 UTC on February 22nd, 2024.
World Record Speedrun of the Halo 2 Anniversary mission Sacred Icon on the Easy Difficulty in Co-op.
--- AUP Explanation ---
In Halo 2, there is a runtime pool of all objects, which is basically a giant fixed array where each index points elsewhere …
MORE
World Record Speedrun of the Halo 2 Anniversary mission Sacred Icon on the Easy Difficulty in Co-op.
--- AUP Explanation ---
In Halo 2, there is a runtime pool of all objects, which is basically a giant fixed array where each index points elsewhere in memory to the real object. The reason for this, is that there are many different object types, and they can all have different types of info and different sizes, so this simplifies keeping track of them a little bit.
Each object in the game is referred to by its 'datum index' (that I'll now just call datum), which tells the game how to find it in the object pool.
This datum can be broken up into two parts;
The first part is called the salt, which is a number the pool keeps track of that gets incremented every single time an object is created, and that the object saves a copy of. For example, if the salt of the last object created was e576 (hexadecimal), if I then throw a grenade or shoot a bullet, that new projectile object it creates will now have the salt of e577. Next one after that will have e578, then e579 etc. The salt only ever gets incremented, never goes backwards.
The second part is called the index, which is the actual index in the pool where the referenced object _should_ be found at. When you create an object, it will occupy the next available pool index. Once it is deleted, it gives that index back to the pool to be used again. The index for the next object can go up _and_ down, depending on the objects that get deleted and give their index back to the pool before the new object spawns.
So what does this have to do with respawning in Coop? When your player respawns, their new biped (body) takes up the very next available index in the pool. For example, lets say they get a salt of e3ab, and an index of 72. Then that means their datum is e3ab0072. Once the player biped is created, the game then tries to use that datum to teleport the new player biped over to the alive player. At this point, we..
LESS