Every player now has a permanent identity, and their entire appearance is generated from it. Rice of Brackfield United looks the same in every save, on every machine, for every player in the world. His ID comes from the data file, not from a random number at load.
One line: the database loader minted a fresh random GUID for every player, every time the data loaded. So "the same" player in two careers was two different people, and with appearance generated from the ID, two different faces.
Now the ID is derived from a stable key already in the data file, hashed with FNV-1a. Not the engine's hash function: these IDs end up written into save games, so the hash has to be mine and has to never change. Engine hash functions can be changed by an engine update.
Why it matters beyond faces:
- Saves. A save that would need forty thousand appearances in it now needs none.
- Online, one day. A match sends a 16-byte ID instead of every player's appearance. Both machines build the identical squad locally.
- Mods. Keep a player's ID and it is the same person. Change it and it is someone new. Roster packs and appearance packs can ship separately without conflicting.
Small change. Unlocks quick play, online and community mods all at once.
Shipped: stable player IDs hashed from the data file · appearance derived from ID