RU

Автосохранение

Nex Moderator 16.06.2013 04:29 0 comments 7015 views

Автосохранение - вещь полезная и очень удобная для игрока. См. предыдущее обсуждение.

Но сделать автосохранение “как надо” не получается из-за ограничений библиотеки QSP. Она не позволяет надёжно сохранить и восстановить состояние в любой момент времени. Только в промежутке между выполнением библиотечного кода. Я ждал пока это исправит Байт, но похоже ждать придётся ещё очень долго.

Поэтому принято компромиссное решение. Выбрал один из вариантов реализации, предоставляющий достаточно удобства игроку и минимум недостатков.

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

2. Сохраняется несколько состояний игры. По умолчанию - 2 (текущее состояние + шаг назад). Таким образом можно будет сделать в игре “откат” действия без особых кодоизвращений. При желании можно увеличить количество хранимых действий, чтобы откатить можно было, например, на два шага назад или более.

3. Чтобы игра не сохранялась где это не нужно, автосохранение будет работать только если переменная NOSAVE = 0. Например, если в игре есть “главное игровое меню”, то в стартовой локации пишем:

NOSAVE = 1

А в локации где уже начинается игровой сюжет, пишем:

NOSAVE = 0

Таким образом во вспомогательных локациях “главного игрового меню”, такие как пункты “Об игре”, “Об авторе”, “Подсказки” и т.п. игра сохраняться не будет.
Также пригодится отключение во время сложных пошаговых комбинаций, таких как бой например.

4. Кнопки на экране “главного меню игры” предполагается делать так.

При первом старте три пункта:
“Новая игра”,
“Об игре”,
“Другие игры”.

После первого автосохранения добавляется ещё один пункт, всего их становится четыре:
“Новая игра”,
“Продолжить”,
“Об игре”,
“Другие игры”.

Таким образом кнопка “Продолжить” не будет мешаться когда игрок впервые откроет игру.

Log in or Register to post comments.