Здесь показаны различия между двумя версиями данной страницы.
Both sides previous revision Предыдущая версия Следущая версия | Предыдущая версия | ||
help:locations [2013/11/11 06:42] 109.205.253.156 |
help:locations [2024/10/10 17:14] (текущий) aleks_versus |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
[[help:qsp|Назад: Что такое QSP?]] | [[help:qsp|Назад: Что такое QSP?]] | ||
- | =====Локации и переходы===== | + | ====== Локации ====== |
- | **Локация** - элементарная единица игрового мира. Это может быть пещера, дом, комната, улица и т.п.\\ | + | **Локация** - элементарная единица игрового мира. Это может быть пещера, дом, комната, улица, большой город или даже целая планета. |
- | С точки зрения игрока он исследует игровой мир перемещаясь по локациям, но с точки зрения создателя игры понятие локации гораздо шире. | + | |
- | Применения для локаций: | + | С точки зрения игрока он исследует игровой мир, перемещаясь по локациям. Но с точки зрения создателя игры понятие “локация” гораздо шире. В **QSP** локации — это отдельные блоки кода, и они могут использоваться не только для описания различных мест. |
- | * **Игровые локации** - локации, по которым ходит игрок, основа игрового мира. | + | |
- | * **Служебные локации** - локации, на которые не попадает игрок: | + | Возможные назначения локаций: |
- | * **Локации-обработчики** - локации, обрабатывающие определенные события в игре (переходы между локациями, таймер, выбор предмета и т.п.) | + | |
+ | * **Игровые локации** - локации, по которым ходит игрок, основа игрового мира. Такие локации можно разделить по назначению: | ||
+ | * **локации мест** - локации, в которых описывается некоторый кусочек игрового мира. Комнаты, дома, города, пещеры, подземелья и т.д. | ||
+ | * **информационные локации** - локации, на которых размещается информация об игре, своего рода страницы. Это могут быть: стартовый экран, страницы главного меню, страницы информации об авторе и об игре. | ||
+ | * **локации главы, параграфы, или разделы** - локации, составляющие основу книг-игр. В книгах-играх игрок перемещается не столько по игровому миру, сколько между страницами интерактивной истории. Вот в такой роли и могут в данном случае выступать локации. | ||
+ | * **Служебные локации** - локации, на которые игрок не может попасть, но которые необходимы для работы игры: | ||
+ | * **Локации-обработчики** - локации, обрабатывающие определенные события в игре (переходы между локациями, таймер, выбор предмета и т.п.). | ||
* **Локации-данные** - иногда удобно хранить игровые тексты в отдельных переменных, а переменные - в отдельной локации, чтобы не захламлять код. | * **Локации-данные** - иногда удобно хранить игровые тексты в отдельных переменных, а переменные - в отдельной локации, чтобы не захламлять код. | ||
- | * **Локации-функции** - в QSP есть возможность сделать локацию-функцию | + | * **Локации-функции** - в QSP есть возможность сделать локацию-функцию. |
* **Локации с кодом** - иногда удобно вынести часть кода в отдельную локацию. Чаще всего это код, который используется в нескольких локациях. | * **Локации с кодом** - иногда удобно вынести часть кода в отдельную локацию. Чаще всего это код, который используется в нескольких локациях. | ||
- | Локация состоит из: | + | **Вы сами определяете назначение локации**. Для плеера абсолютно все локации равнозначны. |
+ | |||
+ | Любая локация может состоять из трёх полей: | ||
* Базовое описание локации | * Базовое описание локации | ||
- | * Базовые действия | + | * Базовые действия локации |
- | * Код "Выполнить при посещении" | + | * Код “Выполнить при посещении” |
- | ====Именование локаций==== | + | Вы можете заполнять эти поля по своему усмотрению. Можно заполнить их все, или одно из них, или не заполнять ни одного, — всё зависит от того, какое назначение вы выбрали для вашей локации, и как вам удобнее воплощать вашу идею. |
- | Имя локации в процессе игры не отображается и может быть любым. Но есть общие рекомендации: | + | Поля **Базовое описание локации** и **Базовые действия локации** доступны для заполнения только в редакторе [[help:qgen|Quest Generator]], если вы работаете в обычном текстовом редакторе, весь код пишется только для поля **Выполнить при посещении**. |
- | * Имя локации должно соответствовать её смыслу - если локация описывает дом, то это может быть "Дом", "House", но никак не "Пещера". | + | ===== Именование локаций ===== |
+ | |||
+ | Имя локации в процессе игры не отображается и может быть любым. Вы сами решаете, как назвать вашу локацию и какие символы использовать для названия. Но есть общие рекомендации: | ||
+ | |||
+ | * Имя локации должно соответствовать её смыслу - если локация описывает дом, то это может быть “Дом”, “House”, но никак не “Пещера”. | ||
* Можно пользоваться префиксами в названии: | * Можно пользоваться префиксами в названии: | ||
- | * __//!название//__ или __//$название//__ - служебная локация (не с базой данных) | + | * **''%%!название%%''** или **''%%$название%%''** - служебная локация (не с базой данных) |
- | * __//#название//__ - локация с базой данных | + | * **''%%#название%%''** - служебная локация с [[help:glossary|базой данных]] |
- | * __//^название//__ - локация, вложенная в предыдущую. Например, названия локаций через запятую: //Северная площадь//, //^Магазин игрушек//, //^^Продавец игрушек//, //^Магазин оружия//, //^^Мечи//, //^^Булавы//, //^^Оружейник// | + | * **''%%^название%%''** - локация, вложенная в предыдущую. Например, названия локаций через запятую: **''%%Северная площадь%%''**, **''%%^Магазин игрушек%%''**, **''%%^^Продавец игрушек%%''**, **''%%^Магазин оружия%%''**, **''%%^^Мечи%%''**, **''%%^^Булавы%%''**, **''%%^^Оружейник%%''**.\\ Подобная маркировка префиксами была актуальна для старых версий [[help:qgen|Quest Generator]], в которых не было возможности распределять локации по папкам. Сейчас такая маркировка менее актуальна, так как названия без префиксов использовать намного удобнее, а в [[help:qgen|Quest Generator]] есть возможность размещать локации в отдельных папках. |
* Названия локаций из нескольких слов можно писать любым удобным способом, например: | * Названия локаций из нескольких слов можно писать любым удобным способом, например: | ||
- | * //Дом с трубой// | + | * **''%%Дом с трубой%%''** |
- | * //Дом_с_трубой// | + | * **''%%Дом_с_трубой%%''** |
- | * //ДомСТрубой// | + | * **''%%ДомСТрубой%%''** |
- | * Регистр букв не важен: //"Домструбой"// и //"ДомСТрубой"// - одна и та же локация. | + | * Регистр букв не важен: “домструбой”, “ДОМСТРУБОЙ” и “ДомСТрубой” - одна и та же локация. |
+ | * **Если вы пишете [[help:organizing|локацию-функцию]]**, рекомендуется использовать в названии только буквы, цифры, символ подчёркивания и точку. Остальные символы могут поломать работу кода при упрощённом (неявном) вызове таких локаций-функций. | ||
+ | * Рекомендуется выбирать названия локаций не совпадающие с [[help:keywords|ключевыми словами]] **QSP**. | ||
- | ====Переходы==== | + | ===== Команды для работы с локациями ===== |
- | * **GOTO** //[$локация]//**,**//[параметр 1]//**,**//[параметр 2]//**, ...** или | + | ==== Функции для обработки локаций ==== |
- | * **GT** //[$локация]//**,**//[параметр 1]//**,**//[параметр 2]//**, ...** - переход на локацию с названием //[$локация]//. | + | |
- | * Основное описание локации и список действий __//заменяются//__ описанием и действиями новой локации. | + | * **''%%$CURLOC%%''** — данная функция возвращает название **текущей** (“активной”) локации, т.е. локации на которой “находится” игрок. Пример: |
- | * Переданные параметры хранятся в массиве ARGS. Максимальное количество параметров - **9**((10 включая имя локации)). | + | |
- | * //Примеры:// <sxh qsp> | + | <sxh qsp> |
- | GT 'локация' &! переход на локацию "локация". Массив ARGS пуст. | + | *pl $curloc & ! выводим название текущей локации в Окно основного описания |
- | GT 'локация',1,'данные' &! переход с передачей 2-х параметров. | + | *pl "Сколько раз перезашли: <<перезашёл>>" |
- | !ARGS[0] равен 1, $ARGS[1] содержит строку "данные". | + | act "Перезайти на текущую локацию": |
+ | перезашёл += 1 | ||
+ | goto $curloc | ||
+ | end | ||
</sxh> | </sxh> | ||
- | * **XGOTO** //[$локация]//**,**//[параметр 1]//**,**//[параметр 2]//**, ...** или | + | |
- | * **XGT** //[$локация]//**,**//[параметр 1]//**,**//[параметр 2]//**, ...** - переход на локацию с названием //[$локация]//. | + | ===== Порядок воспроизведения локаций ===== |
- | * __//Не//__ очищается поле основного описания локации. | + | |
- | * Базовое описание новой локации __//добавляется//__ к текущему основному описанию. | + | При запуске игры автоматически воспроизводится только самая первая локация, на все остальные локации нужно делать [[help:goto|переходы]], или [[help:organizing|вызывать]] их иным образом. |
- | * В остальном аналогично **GT**/**GOTO**: | + | |
- | * Список действия заменяется действиями новой локации | + | Так же, автоматически может выполняться код локации-счётчика и [[help:service_locations|служебных локаций]], отвечающих за обработку разных событий. |
- | * Переданные параметры хранятся в массиве ARGS. Максимальное количество параметров - **9**((10 включая имя локации)). | + | |
- | * **GOSUB** //[$локация]//**,**//[параметр 1]//**,**//[параметр 2]//**, ...** или | + | Подробнее о порядке воспроизведения локаций смотри статью [[help:principle|“Порядок работы интерпретатора”]]. |
- | * **GS** //[$локация]//**,**//[параметр 1]//**,**//[параметр 2]//**, ...** - обработка локации с названием //[$локация]//. | + | |
- | * Базовое описание обрабатываемой локации __//добавляется//__ к текущему основному описанию. | + | [[help:main|Вперёд: Окно основного описания]] |
- | * Базовые действия обрабатываемой локации __//добавляются//__ к текущим действиям. | + | |
- | * Происходит выполнение операторов в поле "Выполнить при посещении", затем возврат на исходную строку (продолжение выполнения программы). | + | |
- | * Переданные параметры хранятся в массиве ARGS. После обработки локации предыдущие значения ARGS восстанавливаются. Максимальное количество параметров - **9**((10 включая имя локации)). | + | |
- | ---- | + | |
- | [[help:variables|Вперёд: переменные]] | + |