Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su

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

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

О:

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

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

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

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

debug=1

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

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

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

Лаунчер

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

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

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

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