Презентация - Программа для создания адвентюр QUILL.

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

                 * * *