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 года.

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

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