В общем, мне подсказали, что это base64. И после расшифровки данные выглядят так:
_nۆo86w}:m7 o4y4~彺s4wٮs7mZn { “id10beta”: -1.0, “score5”: 987345.0, “score5beta”: 0.0, “score9beta”: 0.0, “iddlc1”: -1.0, “scorerush”: 0.0, “id7beta”: -1.0, “scoredlc2”: 0.0, “score2beta”: 0.0, “score1”: 591587.0, “iddlc3”: -1.0, “score7”: 1458799.0, “score9”: 1685073.0, “score3”: 1051614.0, “idbeta”: -1.0, “scorekrampus”: 0.0, “idtest”: -1.0, “id4”: 100963.0, “id2”: 290938.0, “id2beta”: -1.0, “idrushbeta”: -1.0, “score7beta”: 0.0, “id5beta”: -1.0, “id9beta”: -1.0, “id6”: 41591.0, “id8”: 23348.0, “scoredlc3”: 0.0, “scorerushbeta”: 0.0, “id10”: 13239.0, “username”: “AIW”, “score4”: 1706292.0, “score10”: 569536.0, “id6beta”: -1.0, “score3beta”: 0.0, “score2”: 1099632.0, “scoredlc1”: 0.0, “id”: 376937.0, “idrush”: -1.0, “score4beta”: 0.0, “iddlc2”: -1.0, “score8beta”: 0.0, “score8”: 1312925.0, “score10beta”: 0.0, “score6”: 2200470.0, “id5”: 62428.0, “id4beta”: -1.0, “id8beta”: -1.0, “score1beta”: 0.0, “scorehc”: 0.0, “id3beta”: -1.0, “score6beta”: 0.0, “id9”: 14421.0, “id7”: 27085.0, “scoretest”: 1051614.0, “id3”: 175886.0 }� _ Как мы видим, это таблица рекордов из моего сохранения. Логика такая: В начале всей строки есть рандомный кусочек, назовем его ID — nۆo86w}:m7 o4y4~彺s4wٮs7mZn. Затем идет JSON с данными сохранения, в данном случае количество очков. Все это шифруется в base64.
На старте игры проверяется ID. Если он совпадает - игра загружает сейвы, если нет, то всё трётся, делаются новые файлы. Таким образом мы можем взять старые сейвы, в них после расшифровки заменить ID на новый и добавить в игру, не теряя, таким образом, свой прогресс.
Понравилось ли мне тратить время на то, чтобы в этом разобраться? Безусловно. Хотел ли бы я этим заняться опять? Конечно, нет.
Сказать честно, я не понял для чего разрабы так запарились и не позволили просто менять файлы сейвов, как в любой другой человеческой игре, но было прикольно узнать, что такое бывает. Я даже запилил гайд в стим.