Что внутри persistentgamedata.dat: как устроен файл сохранения Isaac
persistentgamedata.dat это небольшой двоичный файл, обычно меньше 10 КБ, с фиксированной раскладкой, которую команда REPENTOGON задокументировала по коду игры. Здесь краткое описание этой раскладки, контрольной суммы, из-за которой правка в hex-редакторе ломает файл, и чисел, по которым различают версии.
Раскладка
| Часть | Содержимое |
|---|---|
| Заголовок, 16 байт | Строка ISAACNGSAVE09R и два пробела. Она общая для Afterbirth+, Repentance и Repentance+; у Afterbirth 08R, у Rebirth 06R. |
| 4 байта | Контрольная сумма, связанная с текущим забегом, ноль, если забега нет |
| 11 чанков | Каждый чанк это id, размер, число элементов и данные, всегда в одном порядке |
| Счётчик загрузок | По наблюдениям растёт на 2 при каждой загрузке сейва |
| Контрольная сумма, 4 байта | Считается по всему после заголовка; при несовпадении игра считает файл повреждённым |
Одиннадцать чанков в файле Repentance+
| # | Чанк | Элементов | Что хранит |
|---|---|---|---|
| 1 | Достижения | 642 | Байт на секрет; индекс 0 не используется, поэтому реальных достижений 641 |
| 2 | Счётчики событий | 523 | Статистика, донат-машины, серии и метки прохождения как битовые поля по персонажам |
| 3 | Счётчики этажей | 14 | Счётчики по этажам |
| 4 | Предметы | 733 | Флаги коллекции по id предмета |
| 5 | Мини-боссы | 7 | Семь грехов |
| 6 | Боссы | 104 | Встреченные боссы по id |
| 7 | Челленджи | 46 | Флаги пройденных челленджей |
| 8 | Заставки | 27 | Счётчики концовок и заставок |
| 9 | Настройки | 2 | Два целых числа |
| 10 | Особые сиды | 80 | Флаги сид-эффектов |
| 11 | Бестиарий | переменное | Четыре секции в порядке смерти, убийства, попадания, встречи; ключ это тип и вариант сущности |
REPENTOGON отмечает, что поле размера у большинства булевых чанков записано как число элементов, умноженное на четыре, и реальному размеру не соответствует, так что парсеры должны верить числу элементов. Бестиарий это единственный чанк переменной длины; в старых файлах Afterbirth+ у него может быть пять секций вместо четырёх.
Как различают версии
Заголовок у Afterbirth+, Repentance и Repentance+ одинаковый. Надёжный признак это число элементов в чанке достижений: 349 у Afterbirth+, 404 с Booster Pack 5, 638 у Repentance и 642 у текущей Repentance+. Эталонные сейвы, которые публикует Zamiell, показывают, что ранние файлы Repentance+, с конца 2024 до сентября 2025, имели 641 запись достижений и 521 счётчик; нынешние 642 и 523 появились около патча 1.9.7.13, добавившего Item Descriptions. REPENTOGON упоминает и ошибку игры «Attempt to load a save file with the wrong number of achievements!», которая срабатывает при загрузке файла не той версии.
Ограничения, о которых стоит знать
- REPENTOGON ограничивает сейв 65 536 байтами, потому что запись файла больше в Steam Cloud, по отчётам, роняет немодифицированную игру; обычные файлы намного меньше, тяжёлые бестиарии с модами доходят примерно до 30 КБ.
- Страница Corrupt Data на вики предупреждает, что правка без учёта контрольной суммы «скорее всего сделает файл непригодным», и это ровно то, что делает сырая правка в hex.
- Версия игры показывается на титульном экране и в главном меню и пишется в log.txt; последняя сборка Repentance+ на момент публикации это v1.9.7.17.J460 от 20 апреля 2026.
Источники
Отредактируй файл в браузере
Перетащи rep+persistentgamedata.dat в Isaac Save Editor, поменяй что нужно, скачай валидный файл. Ничего никуда не отправляется.