Skip to main content
S
SaveEditor.Online
rpg-maker техническое json структура-данных

Структура файла сохранения RPG Maker - Технический разбор

9 января 2026 г. By Команда SaveEditor

Введение

Для разработчиков и энтузиастов редактирования сохранений понимание формата .rpgsave имеет решающее значение. В отличие от движков, использующих сложные бинарные базы данных, RPG Maker MV и MZ используют веб-подход, используя JSON для хранения данных.

Эта статья представляет собой глубокое техническое погружение в то, как RPG Maker структурирует свои сохраненные данные, обрабатывает сжатие и организует состояние игры.

RPG Maker Save File Structure decoded showing JSON data

Сжатие и кодирование файлов

Прежде чем добраться до фактических данных JSON, движок применяет несколько слоев преобразования:

1. Слой сжатия (LZString)

Исходный объект JSON сначала преобразуется в строку, а затем сжимается с использованием алгоритма LZString. LZString — это быстрая библиотека сжатия на основе LZW, разработанная специально для хранения больших объемов данных в localStorage (который имеет строгие ограничения по размеру).

Примечание: RPG Maker MZ часто пропускает этот шаг и сохраняет более прямой JSON, но MV использует его повсеместно.

2. Слой кодирования (Base64)

Сжатая бинарная строка затем кодируется в Base64, чтобы сделать ее безопасной для передачи и сохранения в текстовом виде.

Поток сохранения: Объект JSON -> Строка JSON -> LZString (Сжато) -> Base64 -> .rpgsave

Поток загрузки: .rpgsave -> Декодировать Base64 -> Декомпрессия LZString -> Парсинг JSON -> Игровой Объект

Корневая структура JSON

После декодирования корневой объект сохранения содержит несколько ключей верхнего уровня, которые разделяют состояние игры:

{
  "system":Object,
  "screen":Object,
  "timer":Object,
  "switches":Object,
  "variables":Object,
  "selfSwitches":Object,
  "actors":Object,
  "party":Object,
  "map":Object,
  "player":Object
}

1. System ($gameSystem)

Хранит настройки системного уровня.

  • _versionId: Случайный ID, проверяемый по файлам данных игры для обеспечения совместимости.
  • _saveCount: Сколько раз игра была сохранена.
  • _bgmOnSave: Фоновая музыка, играющая в момент сохранения.

2. Switches ($gameSwitches)

Простой массив булевых значений.

  • Индекс: ID переключателя (как видно в редакторе).
  • Значение: true (ВКЛ) или false (ВЫКЛ/null).

Совет по редактированию: Установка определенного индекса в true может пропустить квесты или разблокировать контент.

3. Variables ($gameVariables)

Массив числовых или строковых значений.

  • Индекс: ID переменной.
  • Значение: Обычно целое число, но может быть любого типа.

4. Party ($gameParty)

Управляет “глобальным” состоянием группы игрока.

  • _gold: Текущее количество денег.
  • _steps: Всего пройденных шагов.
  • _items: Объект {ItemID: Количество}.
  • _weapons: Объект {WeaponID: Количество}.
  • _armors: Объект {ArmorID: Количество}.
  • _actors: Массив ID актеров, находящихся в данный момент в активной группе.

5. Actors ($gameActors)

Хранит индивидуальное состояние каждого персонажа.

  • _classId: ID текущего класса актера.
  • _level: Текущий уровень.
  • _exp: Объект, отображающий ID класса в общее количество очков опыта.
  • _skills: Массив изученных ID навыков.
  • _equips: Массив надетых ID предметов (Оружие, Щит, Голова, Тело, Аксессуар).

6. Map ($gameMap)

Состояние текущей карты.

  • _mapId: ID карты, на которой находится игрок.
  • _events: Состояние событий, выполняемых в данный момент.

Различия: MV против MZ

Хотя логическая структура данных почти идентична, формат файла немного отличается:

ХарактеристикаRPG Maker MVRPG Maker MZ
Расширение.rpgsave.rmmzsave
СжатиеLZString (Почти всегда)Часто просто “сырой” JSON или Zip
ЗаголовокНет (Начинается с контента)Нет

Обработка пользовательских скриптов

Многие игры RPG Maker используют плагины (Yanfly, VisuStella). Эти плагины часто внедряют свои собственные данные в файл сохранения.

  • Менеджеры плагинов: Часто сохраняют данные в System или в совершенно новом отдельном объекте.
  • Алиасы свойств: Плагины могут добавлять суффиксы, такие как _GoldMax или _ClassLevel_2, к существующим объектам.

Внимание: Если вы отредактируете сохранение и удалите данные, требуемые плагином, игра, скорее всего, вылетит при загрузке.

Руководство по реализации для разработчиков инструментов

Если вы создаете свой собственный редактор сохранений:

  1. Обнаружение: Проверьте, является ли файл валидным JSON. Если нет, попробуйте декодировать Base64.
  2. Декомпрессия: Если результат JSON выглядит как бинарный мусор, попробуйте распаковать с помощью LZString.
  3. Безопасность: Никогда не используйте eval() для сохраненных данных. Всегда используйте JSON.parse().
  4. Повторное кодирование: Вы должны применить ровно те же трансформации (LZString -> Base64) при сохранении, иначе игра не распознает файл.

Заключение

Архитектура сохранений RPG Maker надежна и гибка, опираясь на стандартные веб-технологии. Это делает её одной из самых простых структур сохранений для анализа и модификации, при условии, что вы правильно обрабатываете слои сжатия.

Чтобы увидеть эту структуру в действии, загрузите любой файл .rpgsave в наш Редактор RPG Maker и переключитесь в “Расширенный вид” (Advanced View), чтобы изучить сырое дерево JSON.


Последнее обновление: Январь 2026

Связанные статьи

Готовы редактировать?

Используйте наш бесплатный онлайн редактор прямо сейчас.

Запустить редактор