Перейти к основному содержимому

17.2. Во время теста игры делал сохранения, затем внёс в игру несколько правок, но сохранения перестали загружаться. Почему так происходит, и что теперь делать?

В: Во время теста игры делал сохранения, затем внёс в игру несколько правок, но сохранения перестали загружаться. Почему так происходит, и что теперь делать?

О: Поскольку для всех игр QSP файлы сохранений создаются одинаковым образом, нельзя допустить, чтобы игроки могли загружать сохранения от одной игры в другой игре. Игрок может легко запутаться, если играет в несколько игр.

Чтобы не допустить загрузки "неправильного" файла сохранения, в QSP предусмотрен простой механизм.

Каждый раз при сохранении игры, в файл сохранения записывается хэш-сумма игры, а когда игрок пытается загрузить файл сохранения, хэш-сумма, записанная в файл, сравнивается с хэш-суммой текущей игры. Если они не совпадают, плеер указывает игроку, что он загружает неправильное сохранение.

Чтобы плеер не сравнивал хэш-суммы текущей игры и записанную в файле сохранения, в QSP предусмотрен специальный режим. Этот режим включается изменением значения переменной debug на значение, отличное от нуля:

debug=1

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

Таким образом, когда Вы занимаетесь отладкой игры, в ней обязательно нужно прописывать debug=1, если Вы хотите загружать сохранения, сделанные до момента правки.

Однако, если Вы сделали сохранение до того, как внесли в код строку debug=1, при дальнейшей загрузке этого сохранения значение переменной debug вновь будет сбрасываться на ноль, и Вы не сможете вновь загрузить даже то же самое сохранение. Заранее пропишите строку debug=1 в своей игре уже в самом начале разработки.

Лаунчер

При debug=1 есть опасность того, что вы сами загрузите сохранение от другой игры, это сохранение покажет вам неправильные данные, вы решите, что допустили в коде ошибку, и много времени потратите на поиск несуществующей ошибки (у меня такое бывало). Хорошо бы иметь возможность проверять игру, изменяя её файлы, и при этом не допускать загрузки сохранений от других игр.

Такая возможность есть.

Необходимо написать игру-лаунчер — небольшой файл qsp, из которого подключаются остальные компоненты игры, в том числе и основной файл игры.

Теоретически лаунчер - это отдельная игра и хэш высчитывается только на его основе без учёта подключаемых модулей. Поэтому мы спокойно можем править модули, и сэйвы игры всё-равно будут загружаться. А вот сэйвы чужих игр - нет.