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

Назад: Что такое QSP?

Локации

Локация - элементарная единица игрового мира. Это может быть пещера, дом, комната, улица, большой город или даже целая планета.

С точки зрения игрока он исследует игровой мир, перемещаясь по локациям. Но с точки зрения создателя игры понятие "локация" гораздо шире. В QSP локации — это отдельные блоки кода, и они могут использоваться не только для описания различных мест.

Возможные назначения локаций:

  • Игровые локации - локации, по которым ходит игрок, основа игрового мира. Такие локации можно разделить по назначению:
    • локации мест - локации, в которых описывается некоторый кусочек игрового мира. Комнаты, дома, города, пещеры, подземелья и т.д.
    • информационные локации - локации, на которых размещается информация об игре, своего рода страницы. Это могут быть: стартовый экран, страницы главного меню, страницы информации об авторе и об игре.
    • локации главы, параграфы, или разделы - локации, составляющие основу книг-игр. В книгах-играх игрок перемещается не столько по игровому миру, сколько между страницами интерактивной истории. Вот в такой роли и могут в данном случае выступать локации.
  • Служебные локации - локации, на которые игрок не может попасть, но которые необходимы для работы игры:
    • Локации-обработчики - локации, обрабатывающие определенные события в игре (переходы между локациями, таймер, выбор предмета и т.п.).
    • Локации-данные - иногда удобно хранить игровые тексты в отдельных переменных, а переменные - в отдельной локации, чтобы не захламлять код.
    • Локации-функции - в QSP есть возможность сделать локацию-функцию.
    • Локации с кодом - иногда удобно вынести часть кода в отдельную локацию. Чаще всего это код, который используется в нескольких локациях.

Вы сами определяете назначение локации. Для плеера абсолютно все локации равнозначны.

Любая локация может состоять из трёх полей:

  • Базовое описание локации
  • Базовые действия локации
  • Код "Выполнить при посещении"

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

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

Именование локаций

Имя локации в процессе игры не отображается и может быть любым. Вы сами решаете, как назвать вашу локацию и какие символы использовать для названия. Но есть общие рекомендации:

  • Имя локации должно соответствовать её смыслу - если локация описывает дом, то это может быть "Дом", "House", но никак не "Пещера".
  • Можно пользоваться префиксами в названии:
    • !название или $название - служебная локация (не с базой данных)
    • #название - служебная локация с базой данных
    • ^название - локация, вложенная в предыдущую. Например, названия локаций через запятую: Северная площадь, ^Магазин игрушек, ^^Продавец игрушек, ^Магазин оружия, ^^Мечи, ^^Булавы, ^^Оружейник.
      Подобная маркировка префиксами была актуальна для старых версий Quest Generator, в которых не было возможности распределять локации по папкам. Сейчас такая маркировка менее актуальна, так как названия без префиксов использовать намного удобнее, а в Quest Generator есть возможность размещать локации в отдельных папках.
  • Названия локаций из нескольких слов можно писать любым удобным способом, например:
    • Дом с трубой
    • Дом_с_трубой
    • ДомСТрубой
  • Регистр букв не важен: "домструбой", "ДОМСТРУБОЙ" и "ДомСТрубой" - одна и та же локация.
  • Если вы пишете локацию-функцию, рекомендуется использовать в названии только буквы, цифры, символ подчёркивания и точку. Остальные символы могут поломать работу кода при упрощённом (неявном) вызове таких локаций-функций.
  • Рекомендуется выбирать названия локаций не совпадающие с ключевыми словами QSP.

Команды для работы с локациями

Функции для обработки локаций

  • $CURLOC — данная функция возвращает название текущей ("активной") локации, т.е. локации на которой "находится" игрок. Пример:
*pl $curloc & ! выводим название текущей локации в Окно основного описания
*pl "Сколько раз перезашли: <<перезашёл>>"
act "Перезайти на текущую локацию":
перезашёл += 1
goto $curloc
end

Порядок воспроизведения локаций

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

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

Подробнее о порядке воспроизведения локаций смотри статью "Порядок работы интерпретатора".

Вперёд: Окно основного описания