Статический контент, загруженный из постоянной памяти в оперативную, потерять не страшно — его оригиналы всё равно хранятся в постоянной памяти. Динамический контент, в виде накопленных данных и игрового прогресса, существует только в оперативной памяти.Если его потерять, то при следующем запуске игры придётся всё начинать с самого начала, в лучших традициях ретро-гейминга. Что для современных игр, которые могут требовать порой и 100ч для прохождения, будет непростительно.
А как же сохранение прогресса в .ini файле?)
Да хоть в `.жпг` 😁
Это всё относится к работе с файловой системой (пример с FileSystemDataStorage). Название или целый путь до файла — это ключ, по которому происходит запись.
Сформированный путь до файла может храниться как готовый ключ в KeysProvider (типа "Game/Save/Data.ini").
Но если помимо этого хранилища в проекте используются другие, то скорее всего ключ будет иметь укороченный формат (типа "Data"), и тогда для реализации с файловой системой потребуется ключ как-то декорировать, чтобы получить полный путь.
Декорировать нужно как: префиксом к ключу (корневая директория) и постфиксом (расширение файла).
Это можно сделать в самой FileSystemDataStorage (см. метод GetFilePath).
Или наделать декораторов для IKeysProvider (пример с KeysProviderPrefixDecorator).
Сложность итогового решения зависит от того, насколько гибкое и разнообразное поведение нужно иметь в проекте. Чем меньше гибкости требуется, тем меньше необходимость во всяких избыточных абстракциях, декораторах и сущностях.