(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 его ра- боты. * * *