(C) ????
┌─────────────┐
│ │
│ Q U I L L │
│ │
└─────────────┘
"В мире програмного обеспечения время
от времени выпускаются программы,
вносящие значительный вклад в напи-
сание игровых программ. Одной из та-
ких программ была программа Quill.
Она открыла возможность самим созда-
вать адвентюрные игры для тех, у ко-
го хорошо развито воображение, есть
терпение и совершенно нет навыков в
програмировании...
... самые лучшие из них (например,
TOWER of DISPAIR) показывают, каких
успехов можно достичь...
... программа Quill очень долго до-
минировала на рынке..."
/ZX-РЕВЮ, 1991 год./
Итак, Quill - это полностью автома-
тизированная программа для создания ад-
вентюр, которую большинство из тех, кому
надоело играть в адвентюрки,а хочется са-
мому сделать какой-нибудь шедевр, при-
мут с радостью. Она была написана фирмой
GYLSOFT в 1983 году, русифицирована и
адаптирована к системе TR-DOS Томенко Ев-
гением в 1994. Некоторые команды выгодно
отличают его от GAC'а, а об ABS'е и гово-
рить нечего. Отсутствие графики немного
компенсируется возможностью использова-
ния UDG.
Ниже дано описание дисковой версии,
но кассетная практически не отличается.
╔════════════════╗
║ ║
║ Описание опций ║
║ главного меню ║
║ ║
╚════════════════╝
Вначале несколько слов о командах,
присутствующих в каждой опции.
Z - выход в главное меню.
P и L - вывод текста на экран или на
принтер. В некоторых опциях можно ввес-
ти число (B, C, D, E, F) или одно или два
слова (G, H), начиная с которых будет
выводиться текст.
Сервис всех опций очень похож и ра-
зобраться в них вам не составит труда.
╔═══╗
║ A ║ Перво-наперво нужно ввести сло-
╚═══╝ варь вашей будущей игры, причем
некоторые слова уже присутствуют. Это :
названия сторон света, промежуточные нап-
равления, вверх, вниз, взять, положить,
загрузить, сохранить, стоп (смерть), ин-
вентарь, смотреть.
Попробуем ввести слово, например,
"НОЖ":
I нож 20
А теперь его синоним:
I кинжал 20
Просмотрим синонимы слова "НОЖ" :
S нож
И, наконец, сотрем это слово.
D нож
Если у вас все получилось, то радуй-
тесь. На кнопки нажимать вы умеете, и ра-
ботать с Quill'ом сможете.
╔═══╗
║ B ║ В этой опции можно ввести сооб-
╚═══╝ щения, которые будут выскакивать
по ходу игры.
Например:
I
в книге написан странный символ.
╔═══╗
║ C ║ Подробное или не очень подробное
╚═══╝ (это зависит лично от вас) опи-
сание локаций. Предметы, которые будут
путешествовать в течении игры, описывать
здесь не стоит.
╔═══╗
║ D ║ В сей опции описываются связи
╚═══╝ локаций между собой. Пример:
свяжем четыре локации так, что первая ло-
кация находится к северу от нулевой, вто-
рая к западу от нее же, а третья на юго-
западе от нулевой, причем все локации
связаны между собой.
A 0
с 1 в 2 св 3
A 1
ю 0 юв 2 в 3
A 2
з 0 сз 1 с 3
A 3
юз 0 з 1 ю 2
Если вы бросились набирать вышепри-
веденное, а на экране мерцает знак вопро-
са, значит текст локаций не введен. Вооб-
ще, при ссылке к чему-то не существующему
программа отказывается понимать это.
При описи связей не нужно указывать
те, в которых будут какие-либо препятст-
вия, например, двери.
╔═══╗
║ E ║ Сюда записываются названия пред-
╚═══╝ метов, но учтите, что в словарь
обязательно надо вносить эти слова и,
желательно, не одно (его синонимы). За-
помните, чем больше слов будет в словаре,
тем дружественней будет связь с игроком,
тем интересней будет играть в вашу игру.
╔═══╗
║ F ║ Расшвыривание предметов по лока-
╚═══╝ циям. Предметы могут получать
специальные номера, которые делают ниже-
следующее:
252 - присвоить предмету маркер "не
создан".
253 - одеть вашего персонажа в этот
предмет.
254 - всучить его в руки вашему персо-
нажу.
Например:
A 2 7 - отправление предмета с номером
2 в локацию 7.
A 3 252
A 4 253
A 5 254
╔═══╗ ╔═══╗
║ G ║ и ║ H ║ Логика низшего приоритета
╚═══╝ ╚═══╝ (далее н.п.) проверяется
после ввода команды пользователем (в иг-
ре), а логика высшего приоритета (далее
в.п.) проверяется перед вводом. Более
подробно об этих опциях в разделе "Логика
адвентюры".
╔═══╗
║ K ║ Тестирование адвентюры. Этой оп-
╚═══╝ ции также посвящена отдельная
глава с одноименным названием.
╔══╤═══╤══╗
║ I│ J │L ║ У вас спросят имя файла, а
╚══╧═══╧══╝ затем загрузится кодовый
блок или выгрузится готовая адвентюра или
кодовый блок. Не бойтесь, если вы оши-
блись при вводе имени, ничего плохого не
случится. Просто вам будет сообщено, что
допущена ошибка.
╔═══╗
║ M ║ Вывод каталога диска.
╚═══╝
╔═══╗
║ N ║ Сообщение о количестве свободной
╚═══╝ памяти. Эта опция удержит вас от
сверхобилия при описании локаций и вводе
сообщений. Помните, что у вас чуть более
тридцати килобайт свободной памяти и око-
ло пяти нужно оставить для логики.
╔═══╗
║ O ║ Введенное здесь число даст по-
╚═══╝ нять игроку, что он не всесилен
и не сможет нести сразу полсотни предме-
тов. При тестировании удобно вводить сюда
число побольше, чтобы нести очень много
разных вещей.
╔═══╗
║ P ║ Изменение цветов (BORDER, PAPER,
╚═══╝ INK).
╔═══╗
║ (C) ║ Выход в BASIC или, попросту го-
╚═══╝ воря, сброс системы.
╔═══════════════════╗
║ ║
║ Логика адвентюры ║
║ ║
╚═══════════════════╝
43 команды Quill'а подразделяются на
несколько категорий. Команды первой груп-
пы работают с локациями, команды второй
группы относятся к предметам. В третьей
категории команды связаны с переменными.
К четвертой и последней группе относятся
сервисные команды. Рассмотрим каждую ка-
тегорию в отдельности.
┌───────────────────┐
│ Сервисные команды │
└───────────────────┘
CHANSE n - вероятность выполнения
некоего действия в n процентах. Это, на-
верное, самая интересная команда, так как
она позволяет создать приближенные к ре-
альности действия.
Пример : создадим помощника (номер
20), приходящего и уходящего из локации,
в которой находится игрок, через некото-
рое время, причем всегда различное (почти
как в Hobbit'е или Sherlock'е). Сорок
седьмое сообщение говорит, что ваш помощ-
ник пришел, а сорок восьмое объясняет,
что он ушел.
(в.п.) I _ _
CHANSE 40 CREATE 20 MESSAGE 47
I _ _
CHANSE 30 DESTROY 20 MESSAGE 48
DESC - выдать описание локации, в ко-
торой находится игрок.
Пример:
(н.п.) I см _
DESC
INVEN - распечатать список предметов,
имеющихся у играющего.
Пример:
(н.п.) I и _
INVEN
SAVE / LOAD - сохранить/загрузить по-
ложение игры на внешнем носителе инфор-
мации - дискете или кассете (в зависимос-
ти от версии).
Пример:
(н.п.) I сохр _
SAVE
I загр _
LOAD
SCORE - сообщить сколько процентов
игры выполнил игрок или,что будет точнее,
содержимое переменной номер 30.
Пример:
(н.п.) I счет _
SCORE
TURNS - нaпечатать количество ходов,
сделанных игроком.
Пример:
(н.п.) I ходы _
TURNS
QUIT - выяснить, не желает ли игрок
закончить игру. Y - продолжает выполнение
строки команд, другие клавиши прекращают.
END - закончить игру и узнать, будут
ли играть в эту игру еще раз. N - очист-
ка памяти компьютера, другие клавиши -
старт с самого начала. После команды QUIT
обязательно нужно подавать END.
Пример: закончить игру, сообщить ко-
личество очков и ходов.
(н.п.) I стоп _
QUIT SCORE TURNS END
ANYKEY - ожидание нажатия какой-ни-
будь клавиши.
OK - дать понять игроку, что все
О'кей.
Пример:
(н.п.) I взять ключ
GET 7 OK
DONE - прервать проверку дальнейших
условий и перейти к вводу команд. Обычно
используется, когда существует несколько
проверок одной команды (смотри пример к
PRESENT / ABSENT ).
PAUSE n - ожидать n тактов прерываний
(один такт равен 1/50 секунды).
BEEP m n - звуковой сигнал длитель-
ностью m/50 секунды и высотой звука n.
┌────────────────────┐
│ Работа с локациями │
└────────────────────┘
AT n Если персонаж находится в комна-
те n, то выполнение команды продолжится.
Пример: перед запуском игры вы хо-
тите вывести какую-нибудь информацию,
причем она находится в описании нулевой
локации.
В дальнейшем (в.п.) и (н.п.) пока-
зывает в какую опцию необходимо вводить
логику.
(в.п.) I _ _
AT 0 ANYKEY GOTO 1 DESC
Так как стартовой локацией всегда
является нулевая, то перед запуском выве-
дется содержащаяся на ней информация, а
после нажатия клавиши игрок перейдет к
первой локации.
NOTAT n Условие выполняется, если ва-
шего персонажа нет в комнате n.
Пример: ваш персонаж - волшебник,
завладевший бутылкой с джинном, а в лока-
ции 13 находится защитная пентаграмма,
охраняющая от злых сил, в которой его
можно вызвать.
(н.п.) I вызв джин
NOTAT 13 SCORE END
I вызв джин
АТ 13 ...
ATGT n / ATLT n Если персонаж находит-
ся в локации с номером большим / меньшим,
чем n, то выполняются следующие за усло-
вием действия.
Пример: в локациях с номерами от 15
до 27 темно, и живут там ужасные монстры,
боящиеся света свечи.
(в.п.) I _ _
ATGT 14 ATLT 28 NOTCARR 1 END
GOTO n - идти в локацию n.
Пример: игрок в локации 25 открыл
дверь (предмет 18), ведущую на запад в
локацию 29.
(н.п.) I з _
AT 25 PRESENT 18 GOTO 29 DESC
┌─────────────────────┐
│ Работа с предметами │
└─────────────────────┘
PRESENT n / ABSENT n Условие выполня-
ется, если предмет n присутствует / от-
сутствует в одной локации с игроком.
Пример: в локации 5 находится закры-
тый шкаф (он имеет номер 4), который вы
желаете открыть. Пятое сообщение означа-
ет, что шкаф открылся, и в нем оказался
костюм (номер 6). Шестое сообщение гла-
сит: "Шкаф уже открыт."
(н.п.) I откр шкаф
AT 5 PRESENT 4 SWAP 4 5 MESSAGE 5
PAUSE 50 DESC DONE
I откр шкаф
AT 5 ABSENT 4 MESSAGE 6
CARRIED n / NOTCARR n Если персонаж
имет / не имет предмет с номером n, то
выполняются какие-то действия.
Пример: в локации 8 лежит запертый
сундук (номер 10), открыть который можно
ключом (номер 12). В двадцатом сообщении
написано: "Ключ со скрипом повернулся, и
из сундука выпал мешок золота (предмет
14)." В двадцать первом сообщении записа-
но: "Сундук заперт, а у вас нет ключа,
которым его можно было бы открыть."
(н.п.) I отпе сунд
AT 8 PRESENT 10 CARRIED 12 SWAP 10 11
CREATE 14 MESSAGE 20 PAUSE 100 DESC
I отпе сунд
AT 8 PRESENT 10 NOTCARR 12 MESSAGE 21
WORN n / NOTWORN n Если персонаж одет
в предмет n, то выполняются некоторые
действия.
Пример: через стражу в комнате 26
можно пройти только одетым в шапку-неви-
димку (предмет 12).
(в.п.) I _ _
AT 26 NOTWORN 12 END
GET n / DROP n - взять / положить
предмет n.
Пример: сделаем так, чтобы нож
(предмет 7) можно было бы брать и ложить.
(н.п.) I взят нож
GET 7 OK
I брос нож
DROP 7 OK
DESTROY n / CREATE n - создать/унич-
тожить предмет n.
Пример: когда персонаж съедает ябло-
ко (номер 9), оно исчезает. Но его можно
снова вернуть в игру, сорвав на яблоне в
локации 39.
(н.п.) I съес ябло
DESTROY 9 OK
I сорв ябло
AT 39 ABSENT 9 CREATE 9 GET 9 OK
SWAP m n - обмен местонахождений пред-
метов m и n. Эта команда обычно исполь-
зуется для зажигания свечей или факелов,
для открывания и отпирания дверей и т.д.
Пример: зажигание факела (номер 22)
и превращение в горящий факел (номер 23).
(н.п.) I заже факе
CARRIED 22 SWAP 22 23 CLEAR 0 OK
WEAR n/REMO n - одеть/снять предмет n.
Пример: одевание и снятие костюма
(номер 1).
(н.п.) I одет кост
CARRIED 4 WEAR 4 OK
I снят кост
CARRIED 4 REMO 4 OK
┌──────────────────────┐
│ Работа с переменными │
└──────────────────────┘
ZERO n / NOTZERO n Если переменная n
равна / не равна нулю, то дальнейшие
действия выполняются.
EQ n m / GT n m / LT n m Если перемен-
ная n равна / больше / меньше m, то сле-
дующие за условием действия выполняются.
CLEAR n / SET n - присвоить перемен-
ной n значение 0 / 255.
LET n m - присвоить переменной n зна-
чение m.
PLUS n m / MINUS n m - прибавить/вы-
честь число m из переменной n.
Пример: игрок попал в темноту. Если
через пять ходов он не зажжет свет, то
сломает ноги. Предупредительное сообщение
17 появляется за два хода до смерти.
(в.п.) I _ _
NOTZERO 0 ZERO 29 SET 29 LET 5 6
I _ _
LT 5 3 MESSAGE 17
I _ _
ZERO 5 MESSAGE 18 SCORE END
╔════════════════════════╗
║ ║
║ Тестирование адвентюры ║
║ Описание переменных ║
║ ║
╚════════════════════════╝
После выбора этой опции, вам будет
задан вопрос: "Нужна ли вам диагностика?"
Если ответ будет утвердительным (Y), то в
нижних четырех строках экрана появятся
8 колонок цифр. При отрицательном же от-
вете, тестирование окажется аналогично
игре. Переменные имеют нумерацию от 0 до
31. В каждую переменную можно засылать
числа от 0 до 255. Все счетчики уменьша-
ются до нуля. А теперь поподробнее о каж-
дой.
0 - Если она не равна нулю, то в комнате
темно и при попытке осмотреть локацию
выводится соответствующее сообщение. Уйти
из комнаты будет невозможно до тех пор,
пока переменную не обнулят.
1 - В ней содержится количество предме-
тов, которые несет игрок. Одетые предметы
не учитываются, так что можно нацеплять
десяток предметов на себя, в то время как
нести можно всего четыре-пять.
2 - Счетчик, уменьшающийся после выполне-
ния следующих команд: DESC, SAVE, LOAD и
после входа в другую локацию.
5-9 - Четыре счетчика, уменьшающихся пос-
ле каждого хода.
3, 4, 10-29 - Переменные, с которыми мож-
но свободно манипулировать, так как на
действие программы они не влияют, и сама
она их не изменяет.
30 - В этой переменной хранится число,
показывающее, какую часть игры (в процен-
тах прошел игрок. Не имеет смысла засы-
лать сюда числа больше ста.
31 - Содержит номер локации, в которой
находится игрок. При тестировании адвен-
тюры, если, конечно, умеете читать, вы
сразу же поймете в какой локации стоите.
╔════════════════════╗
║ ║
║ Немного полезной ║
║ информации ║
║ ║
╚════════════════════╝
Основная проблема в программах для
создания адвентюр, в Quill'е в частности,
ограниченность ввода до нескольких слов
(обычно до двух). Quill понимает словосо-
четания вида глагол + существительное, и
основная цель авторов адвентюр - обойти
это ограничение.
Рассмотрим такой диалог:
> сделать отмычку
из чего ее сделать ? ;MESSAGE 50
> из проволоки
вы сделали отмычку из проволоки.;MESS 51
"А как создать подобное?" - спросите
вы.
Делается это элементарно.
(н.п.) I сдел отмы
CARRIED 13 (проволока) LET 26 2
MESSAGE 50
I из пров
EQ 26 1 SWAP 13 14 MESSAGE 51
(в.п.) I _ _
NOTZERO 26 MINUS 26 1
Если использовать более сложную ло-
гику, то можно увеличить длину предложе-
ний во много раз.
Приложением к Quill'у является прог-
рамма TestQuill, с помощью которой можно
запускать игры 4 Minute, Africa Garden и
Hampstead под управлением редактора. Это
даст платформу, с которой можно взлететь
на вершины создания адвентюр.
Так пусть же возьмет каждый любитель
адвентюр в свои руки свое позолоченное
перо и напишет в этом великолепном редак-
торе хотя бы одну программу, имеющую
право считаться адвентюрой.
От редакции: Вы, наверное, заметили, что
в начале этого описания отсутствует ко-
пирайт автора ? Увы, автор нам неизвес-
тен. Данная программа и ее описание поя-
вилась у нас благодаря помощи FLASH inc.,
но они также не смогли нам помочь в уста-
новлении личности автора. Поэтому мы за-
ранее приносим ему свои извинения и наде-
емся, что свяжется с нами и вы еще не раз
увидите на страницах ADVENTURER'a его ра-
боты.
* * *