URQ

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
URQ
Класс языка язык программирования
Тип исполнения интерпретируемый
Появился в 5 мая 2000
Автор Тимофей Басанов a.k.a. RipOs
Расширение файлов .qs1, .qs2, .qs3 (зашифрованные квесты), .qsz (архив, в который могут быть запакованы все ресурсы квеста, только для FireURQ), .qst.
Основные реализации RipSoft URQ, URQ_DOS, FireURQ, AkURQ, INSTEAD URQ module, OverUrK, BEST_URK, aurk, SURK
Диалекты каждая реализация вводит свой диалект языка

URQ (Universal RipSoft Quest, по названию первой программы-интерпретатора, RipOs — никнейм Тимофея Басанова, автора первоначальной версии[1]) — это известная в рунете[2][3] платформа предназначенная в основном для создания небольших текстовых игр в жанре Interactive Fiction (IF)[4]. Представляет собой интерпретатор специализированного языка URQL.

История[править | править код]

Первая версия URQ (оригинальный RipSoft URQ) написана на Visual Basic. Вопреки распространённому мнению, URQ не был первой отечественной платформой для разработки текстовых квестов, ему предшествовала система OrcZero[5]. Тем не менее, URQ стал одной из первых подобных отечественных платформ,[2][6] впрочем его ориентированность на простые игры с «менюшным» вводом (когда пользователь фактически выбирает варианты действий) стала причиной несколько пренебрежительного к ней отношения у некоторых участников IF-сообщества[7].

Однако простота языка привлекла внимание создателей квестов. В период 2001—2004 гг. было создано около полутора сотен игр для этой платформы. Качество этих игр было весьма различным, часто — весьма низким. В числе прочих следует отметить такие разработки, как «Древний кинжал»[8] — квест в 2-х частях по мотивам произведений Дж. Р. Р. Толкиена, Дед-пердед, короткие «Приключения хомяка Семёна» в 3+ частях (от разных авторов)[9] (вместе с написанной позднее другим автором третьей частью) и незаконченный большой квест «Без права на надежду»[10] с использованием практически всех тогдашних мультимедийных возможностей Win URQ: музыки, картинок, и отличающийся хорошим литературным стилем.

RipOs вносил изменения и новые возможности в оригинальный интерпретатор. Последней стала версия 2.0 альфа 3, которая содержала интересные нововведения, но работала очень неустойчиво. Затем он внезапно прекратил работу над проектом (предположительно в связи с утратой исходного кода из-за разрушения дискового накопителя). Последняя, относительно устойчивая версия URQ 1.4. Она содержит множество расширенных возможностей: позволяет вставлять в квест картинки (в 6 разных форматах) и отслеживать клики мышкой по ним, использовать звуки и музыку (wav и mid), делать квесты, состоящие из нескольких файлов, и многое другое, включая ввод чисел и строк пользователем.

Впрочем, эталонной реализацией URQL считается написанный на языке Си консольный интерпретатор[11] URQ_DOS. Её автор — выпускник мехмата МГУ Виктор Корянов. Вот что он пишет о его создании:

Почти все здесь, наверное, знают как я пришел к Урке, но поскольку соответствующие посты и текстовые файлы имеют обыкновение теряться и закапываться :) …

Это был самый конец 2000 года, буквально несколько дней до праздника. Так получилось, что у меня в то время на «домашней» машине не было хоть сколько-нибудь нормального монитора, приходилось как-то жить на переделанной советской Электронике (модель уже не помню). Более или менее приемлемо этот агрегат работал только в текстовом монохромном режиме EGA, графический EGA теоретически был, но постоянно в нём находиться было трудно из-за проблем с частотой — быстро уставали глаза (теоретически был и VGA, но только для быстрого просмотра графики — что-то читать в нём было невозможно совсем). Жил я, в общем, полностью в мире текстового Доса — много читал с экрана в Дос Навигаторе, играл в Адом, программил в bc++ 3.1 … Естественно, иногда искал в Инете на университетской машине что-нибудь соответствующее и как-то раз по запросу «текстовые квесты» (или, может, «текстовые игры») нашел сайт Кащея (текстовыми играми интересуюсь давно, ещё с до-PСшных времен). Там я сразу обратил внимание на Древний кинжал, Урка Рипа не запустилась из-за традиционного для старых версий Windows отсутствия ВБ-библиотек, да даже если и запустилась бы, все равно я тогда грузил его только в случае совсем уж крайней необходимости (кстати, в 95-м нет штатной поддержки EGA). Самая первая версия Досурки была написана буквально в Новый Год за два дня.

Пётр Косых, создатель INSTEAD назвал URQ и QSP в числе предшественников своей программы, в которых его не устроило отсутствие объектной ориентированности[12]. В настоящее время сейчас для INSTEAD доступен URQ-модуль, представляющий собой интерпретатор URQL, написанный на Lua[13].

Основные конструкции языка URQL[править | править код]

Разделителем операторов является символ конца строки или амперсанд &.

Каждая локация игры в исходном тексте должна иметь метку. Имя метки предваряется двоеточием (без пробела). Переходы между локациями осуществляются путём перемещения на указанную метку с помощью операторов btn (имеющий формат btn имя локации, надпись на кнопке) и goto.

Интерпретатор начинает работу с первой метки, после неё он последовательно выполняет операторы URQ, пока не встретит end — оператор останова. После этого он выводит на экран все встреченные ранее кнопки и приостанавливает работу, ожидая команды пользователя.

Операторы p и pln выводят текст.

inv+ и inv- — помещает или удаляет предмет в инвентарь. Можно использовать с указанием количества (например, для денег в кармане у персонажа). Специальные метки вида :use_<предмет> и :use_<предмет>_<действие> указывают на описания действий (по умолчанию — «осмотреть предмет») по отношению к предмету.

Условный оператор if <условие>then … позволяет, в числе прочего, проверять наличие и/или количество чего-либо в инвентаре.

Локацию можно использовать как подпрограмму, осуществив переход на неё с помощью оператора proc.

Специальная локация :Сommon выполняется перед указанной в операторе btn при нажатии по кнопке.

Комментарии в URQL начинаются с точки с запятой и продолжаются до конца строки. Допустимы также комментарии в стиле языка Си, расположенные между /* и */, в том числе многострочные.

Разные интерпретаторы URQ реализуют различные диалекты URQL, различающиеся, главным образом, мультимедийными возможностями.

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

Известные реализации[править | править код]

URQ_DOS; AkURQ (2 основных версии); RipSoft URQ; FireURQ. Все реализации в той или иной степени не совместимы между собой. Приходиться подбирать на каком интерпретаторе пойдёт конкретный квест. URQ_DOS - не выводит картинки и музыку - чисто текст. AkURQ и RipSoft URQ - поддерживают *.mid файлы и вывод графики.

Сообщество[править | править код]

См. также[править | править код]

Примечания[править | править код]

  1. ripsoft.narod.ru — первоначальный сайт URQ
  2. 1 2 RTADS: Russified Text Adventure Development System, About Russian community (англ.). Сайт RTADS. — «It is the advanced CYOA system, easy to learn and develop, the oldest and the most popular development system in Russian IF.». Дата обращения: 21 августа 2011. Архивировано 25 августа 2012 года.
  3. Официальный сайт URQ (а также близкой по идеологии российской платформы QSP) внесён в раздел Компьютерные игры : Приключения : Текстовые приключения на Open Directory Project
  4. Emperor. Пишем Interactive Fiction // Навигатор игрового мира. — 2003. — № 2.
  5. Движки - Текстовые игры на русском
  6. Валерий Аргунов. Interactive Fiction или Используй воображение…. хабрахабр (19 августа 2009). — статья автора QSP. Дата обращения: 23 августа 2011. Архивировано 25 августа 2012 года.
  7. Константин Артемьев. Интерактивная литература или текстовый квест? // Домашний компьютер. — 2002. — № 6(72).
  8. Древний кинжал
  9. Похождения отважного хомяка Семена
  10. Без права на надежду
  11. Скачать | URQ. — «URQ_DOS (Досурка) Виктора Корянова (священная урка!) Классический интерпретатор с консольным интерфейсом. <…> Долгое время оставался стандартом и считался самым стабильным.». Дата обращения: 24 августа 2011. Архивировано 25 августа 2012 года.
  12. Косых, Пётр Как все начиналось. Сайт INSTEAD (13 апреля 2009). — Статья для lingametech. Дата обращения: 21 августа 2011. Архивировано 25 августа 2012 года.
  13. URQ-модуль. INSTEAD wiki. Дата обращения: 21 августа 2011. Архивировано 25 августа 2012 года.

Ссылки[править | править код]

Документация по языку