Re: URQ игры в INSTEAD

Пофиксил баг делающий невозможность сесть в Джинне. smile В svn.
Обновил  Zip.

Re: URQ игры в INSTEAD

Ух ты, здорово. Только я по-прежнему не могу сбросить скорость ниже 200 с небольшим sad Параметры сейва вроде бы не должны влиять, в коде инициализация высоты и т.п. происходит прямо перед спуском. Это, конечно, наглость, но может быть можно спойлер когда и сколько раз тормозить? smile Или это мне на форум урки?

Re: URQ игры в INSTEAD


На небольшой высоте (кажется 10000) начать тормозить сразу и все топливо. Сбрасывается до  80. Автор игры подтвердил такое поведение. smile

Re: URQ игры в INSTEAD

Спасибо, теперь проходится. Супер!

Re: URQ игры в INSTEAD

Добавил Золотой ключик. В нем встречаются объекты с символом ("). Это сломало save instead smile) В svn версии (1.1.3) пофиксил.

Приаттачил urq.zip в котором это исправлено (до версии 1.1.3) , чтобы можно было поиграть в текущей версии 1.1.2.

Re: URQ игры в INSTEAD

Исправил баг в оригинале "Золотого ключика". Квест полностью проходим. smile

32 (edited by Peter 2010-02-21 12:11:49)

Re: URQ игры в INSTEAD

URQ модуль переходит в финальную фазу тестирования.

Вы можете скачать 12 игр для URQ вместе с модулем одним архивом по этому адресу:
http://instead-games.googlecode.com/fil … es-0.1.zip

Установить instead:
Windows: http://instead.googlecode.com/files/instead-1.1.3.exe
Unix: http://instead.googlecode.com/files/ins … 1.3.tar.gz

И оценить золотой фонд URQ игр. smile

P.S.
После официального релиза архив будет заменен на индивидуальные пакеты на http://instead-games.googlecode.com.

33 (edited by Odyssey 2010-03-08 13:18:54)

Re: URQ игры в INSTEAD

Прошёл "Холм фей", там есть небольшая проблемка - если в конце игры выбрать "Начать с начала", инвентарь не обнуляется и состояние игры тоже остаётся. Это фишка оригинала, или instead-urq может это исправить?

Плюс огромная просьба засчитывать щелчок мышкой за "anykey". Я не смог начать игру "Во ржи" пока не заглянул в исходники. Или может быть выводить сообщение типа "Для продолжения нажмите любую клавишу", которое стиралось бы последуюшим выводом?

Re: URQ игры в INSTEAD

Исправил ошибку в холме (это в оригинале так). Можно обновляться через ланчер. smile

Насчет клика -- наверное в 0.2 версии модуля сделаю. Насчет anykey -- сложнее -- так как некоторые игры выводят сами этот anykey а некоторые  (как во ржи) -- не выводят. Может быть клика будет достаточно.

Другое дело, что мышка пока поддерживается в зачаточном состоянии, и получается, что кликнув на значке меню, например, игрок передаст игре anykey, а не вызов меню... Должно созреть короче... smile

Для эксперимента закоммитил в svn, посмотри, не будет ли это раздражать... Если будет -- то надо допиливать мышиный ввод. wink 1.1.4?

35 (edited by Odyssey 2010-02-24 13:44:53)

Re: URQ игры в INSTEAD

Теоретически, это конечно нехорошо. Ведь горячие клавиши instead (escape, f1..f12 и т.п.) не считаются за anykey, поэтому щелчок мышью тоже должен считаться только если он на пустом месте, не на ссылке и не на системном объекте, типа кнопки меню.

Практически -- терпимо, горячие клавиши работают, поэтому вызвать меню всё равно можно.

В допиливании мышиного ввода не совсем понятно, должны ли мышиные события проходить через stead в любом случае, или должны глушиться на уровне фронтенда если он сам знает как их обработать. С клавиатурой мы уже используем первый способ, наверное с мышью было бы логичнее пойти по тому же пути. Но тогда возникает вопрос, как в stead узнать, нужно ли обрабатывать конкретный клик мышью или отдать его обработку фронтенду.

Как вариант, можно передавать в обработчик дополнительный флаг, типа "мышь над ссылкой", "мышь над меню", и на его основе прекращать обработку в stead и разрешать фронтенду обработать это событие.

Re: URQ игры в INSTEAD

Да -- с мышью все не просто. Я даже ее не документировал пока. Ведь щелчек даже в поле над текстом может восприниматься как motion scroll. И вроде бы квесту не нужно знать особенностей интерфейса.

В принципе, уже сейчас можно добится того, что event уйдет как в квест так и в движок (создать таймер, который выполнит отложенное действие а обработчику мыши вернуть nil) но.... короче у меня пока нет ответа. В svn закоммитил для теста click = anykey а дальше -- посмотрим...

P.S. Еще в instead svn внес такое изменение, что обработчик input может вернуть и действие и сигнал, что клавиша должна уйти инстеду. Напр: return 'look',false.

Может быть это подойдет. Тогда и пауза снимется и меню сработает.

Re: URQ игры в INSTEAD

Peter wrote:

Ведь щелчек даже в поле над текстом может восприниматься как motion scroll.

Упс, а вот про это я забыл.

Peter wrote:

И вроде бы квесту не нужно знать особенностей интерфейса.

Проблема в том, что сейчас квест уже может знать особенности интерфейса, и завязаться на них, например чтобы заблокировать горячие клавиши Instead.
Может быть тогда стоит переключиться на второй из упомянутых способов, когда instead отправляет в lua только те события, которые не обрабатывает сам?

Peter wrote:

В принципе, уже сейчас можно добится того, что event уйдет как в квест так и в движок...

Еще в instead svn внес такое изменение, что обработчик input может вернуть и действие и сигнал, что клавиша должна уйти инстеду. Напр: return 'look',false.

Может быть это подойдет. Тогда и пауза снимется и меню сработает.

Имхо не совсем правильно. Вызов меню подразумевает, что это действие никак не скажется на игре. Что если человек лезет в меню изменить настройки, а в это время в игре меняется текст?

Re: URQ игры в INSTEAD

Выпустил URQ 0.3. Кто может, погоняйте. smile Доступна через ланчер.

Re: URQ игры в INSTEAD

Выпустил. 0.4. smile

Re: URQ игры в INSTEAD

ааа!! я тестить не успеваю!!!

Александр Яковлев, к вашим услугам.

Re: URQ игры в INSTEAD

Кепперлейс прошел. В принципе -- неплохая штука. Но есть опечатки жесткие smile

42 (edited by nusuth 2010-03-06 06:23:13)

Re: URQ игры в INSTEAD

Peter, а как у вас с поддержкой подстановочных скобок в URQL?
То есть, когда #%VAR$ выводит значение переменной (в данном случае, текстовоe). Это одна из самых "вкусных" особенностей URQL, так как позволяет использовать значение переменной не только при выводе текста, но и напрямую в коде.
Например, корректный с точки зрения URQL код:

instr TXT_VAR=pln Hello World ;Текстовой переменной присвоено значение "pln Hello world"
#%TXT_VAR$ ;Интерпретатор развернет переменную в ее значение и выполнит команду pln Hello World

Что позволяет создать простейший интерпретатор URQL –команд во время выполнения игры

:interpretator
Instr Command=; Присваиваем  (текстово) переменной  Command пустое значение (фактически – инициализируем ее как текстовую
Input Command
If Command = "exit"  then goto End_interpretator
#%Command$
Goto interpretator
:End_interpretator
end

Причем, например, URQ_DOS, корерктно обработает  даже введенную строку, подобную "if a=1 then pln ONE else NOT ONE", в то время как FireURQ, автор которой – суровый программист, считает, что <if then else> является конструкцией языка, а не оператором, и подобный код не обработает.
Далее, следующий хитрый код

Instr  TEST_VAR="some text"
Instr  VAR_NAME=
Input VAR_NAME ; Введем текст "TEST_VAR"
VAR_VALUE=#%VAR_NAME$;  эквивалентно VAR_VALUE=TEST_VAR
Pln #%VAR_VALUE$ 

Запросит имя переменной и выведет ее значение.

Что еще...
Ну вот, возможно динамическое формирование метки перехода, то есть, например,  goto #%LABEL_NAME$ - тоже сработает, при условии, что в LABEL_NAME содержится имя существующей метки

Далее, с точки зрения логики URQL, вполне корректным является вложенность подстановочных скобок, например, код подобный этому

index=1
instr #%array#index$$="some text "
pln #%array#index$$

используется для работы с псевдо-массивами. А код вывода значения переменной по ее имени можно было бы записать короче: pln #%#%VAR_NAME$$ (FireURQ вложенные скобки не поддерживает ИЗВИНЯЮСЬ, Поддерживает)

Если бы INSTEAD смог обрабатывать подобные "хитрые" конструкции URQL, он бы являлся ведущим гуй-интерпретатором этого странного, но симпатичного языка:)

Re: URQ игры в INSTEAD

Кстати, почему - ведущий.
Мне очень понравились URQ-игры на INSTEAD - выглядят очень красиво. В то же время среди "родных" URQ-интрерпретаоров наблюдается неизменный разброд и шатание. Единственным классическим интерпретатором фактически является URQ_DOS, но это консольное приложение. Гуй-приложение RipURQ 1.4 - безнадежно устарело и не поддерживает многие вкусности языка, в частности - практически полностью отсутствует работа с текстовыми переменными. AkURQ имеет кучу разных версий, каждая из которых обладает уникальным набором багов и глюков, превращающих работу с ними в увлекательный поиск корректно работающего диалекта URQL. FireURQ - частично не поддерживает фактические стандарты DOS_URQ, частично вводит свои собственные. Кроме того - в гуйном смысле выглядит хотя и красиво, но слишком уж агрессивно "индивидуально" и не настраивается. INSTEAD же - графическое приложение, поддерживает вставку изображений, внешний вид (тема) может быть настроена для каждой игры, плюс к тому - поддерживается не только осторылевшими виндами

Re: URQ игры в INSTEAD

nusuth wrote:

Если бы INSTEAD смог обрабатывать подобные "хитрые" конструкции URQL, он бы являлся ведущим гуй-интерпретатором этого странного, но симпатичного языка:)

Конечно, urq модуль обрабатывает подобные конструкции, в том числе вложенные. smile Иначе бы 90% игр просто не работали бы.

Вопрос только в том,  насколько точность соответствует ожиданиям и что в данном случае считать эталоном.

Я не эксперт в URQ и ориентировался на док-цию DOS_URQ (От Корвина) и реализацию furq, цель проекта была просто охватить максимум игр. Пока это, кажется, удается. Насчет ведущего, я не знаю. Мне кажется сообщество urq вполне удовлетворено fireurq ой и у меня нет основания им не доверять. smile Цели же инстеда -- максимум рабочих игр + язык для несложных игр типа книг-игр.

Конечно, если есть заинтересованность в URQ модуле для НАПИСАНИЯ игр, я всячески это поддержу.
Например, если какая-то конструкция не работает, то можно обсуждать это здесь. Так как модуль это небольшой lua код -- исправление ошибок обычно не является проблемой.

Я не вчитывался внимательно во все варианты подстановок (да и не помню уже точно) но с ходу замечу, что else и then в модуле URQ также не являются командами,. так как я не смог разрешить следующую задачу:

Пусть у нас самогенерируется код -- я выполняю первую часть подстановки (до &) и выясняю что это if, затем выполняю условие и понимаю что оно ложно. Мне нужно найти else. Но else еще не сформирован. Что делать? Выполнять каждую часть конструкции до & в холостую?

Короче, замена if then else целиком, наверное, сработает -- но вот по частям????  Но если есть четкое понимание как ДОЛЖНО быть, то можно делать исправления в требуемом направлении.

Создавать новые расширения я не планировал.  Декораторы furq -- тоже.

Есть также один архитектурный момент, который является особенностью уже instead. Модуль URQ в каком то смысле сервер (как и любая игра в инстед) -- он ничего не выполняет, только возвращает текстовые строки. В следствие этого комбинация самомодифицируемого кода (определенного вида -- довольно замороченного) вместе с pause может давать некорректный вывод. К счастью, пока я не встречал такой код, но теоретически он возможен.

Спасибо за отзыв. smile

Re: URQ игры в INSTEAD

С конца.
Насчет декораторов - оформление все равно в каждом интерпретаторе свое собственное и игнорируется другими, так что это не есть важно.
FireURQ, при всей ее красоте, стандартным интерпретатором URQL все же не может являться - все из за той же частичной поддержки существующих стандартов и наличия своих собственных.

Насчет языка. Черт его знает, язык URQL - вообще очень раcплывчатое понятие, каждый интерпретатор "владеет" своим собственным диалектом. Но если подходить чисто по "духу языка", то, кажется, логика URQL вполне подразумевает корректное выполнение кода вроде такого:

:label
instr CODE_TEXT=<some code>
instr CODE_TEXT=#%CODE_TEXT$ #&$ <more some code> ; #&$ - кажется, именно так в ТЕКСТ вставляется символ разделителя операторов &
;выполнение
#%CODE_TEXT$ 
end

то есть, за исключением меток, которые все таки в код должен вставлять кодер, ВСЕ остальное вполне может выполняться через расшифровки скобок в текстовых переменных.

Насчет поддержки INSTEAD'om скобок - спросил я потому, что достаточно хитрый кусок URQL-кода, который по моему замыслу, должен был выполнять некоторые отладочные функции, в INSTEAD у меня не пошел. Ну что ж, буду пробовать по частям и отчитываться smile

Re: URQ игры в INSTEAD

Ага, ошибки могут быть. Но я боюсь, если там самогенерация кода, то это тот самый случай с pause (input) и генератором кода. smile Смысл в том, что когда URQ модуль встречает pause / input он ВЫХОДИТ, выполняет нужные действия (ввод/ таймер) и ПОВТОРЯТ прошлую цепочку кода до паузы/input. Типа таким образом восстанавливая контекст. При этом код выполняется в ro режиме + вывод остается старым + все if выполняются как в прошлый раз. И вот тут то и может быть проблема.

Вообще-то решить это можно, но за счет усложнения кода модуля (вводить контекст состояния URQ более глубокий), пока я не заморачивался так как цель была прагматичная вполне -- работа чужих игр.

По моему это единственная из архитектурных проблем.

Re: URQ игры в INSTEAD

В случае такого кода:
instr CODE_TEXT=#%CODE_TEXT$ #&$ <more some code> ; #&$ - кажется, именно так в ТЕКСТ

По моему надо заменить #&$ на ##38$.

Но тут вопрос, что делать сначала -- разбиение  (&) или подстановку?
Пусть CODE_TEXT равен "pln aaa & pln bbb"

Тогда в:
#%CODE_TEXT$

сейчас выполнится СНАЧАЛА разбиение (разбивать НЕЧЕГО ) а ПОТОМ подстановка....Как результат вывод будет (должен быть):

aaa & pln bbb  smile.... Вроде бы в доках именно так.


Короче не все просто sad

P.S. И кстати, кроме этого нашел таки маленькую ошибку. smile Строки 1056, 1515 в urq.lua -- убрать subst режущий & -- так как это уже было сделано ранее... (В svn) Но без решения вопроса о порядке подстановок все равно не поможет

Re: URQ игры в INSTEAD

А зимнее приключение проходимо? (использую последние версии urq и игры из launcher'а). А то чего-то застрял в избе, хотя вроде уже всё пробовал...

PS: там, кстати, есть один баг: когда старуха входит, можно безнаказано продолжать ходить по избе, просто не щёлкать по новым пунктам меню.

Re: URQ игры в INSTEAD

Я проходил. Насчет бага гляну. Если что  спойлер.


Открыть шкаф нужно гавканьем. Как гавкать написано на шкафу. Но в свете шара.

P.S. Насчет старухи -- кажется баг в модуле (хоть и мелкий, но проявился), пофиксил в svn, когда дотестирую -- выложу в реп.

Re: URQ игры в INSTEAD

Да, всё работает. Значит просто не додумался, хотя и смотрел на шкаф при свете.