Форум » » исходники и новая версия URQ-интерпретатора. Стандарт парсера » Ответить

исходники и новая версия URQ-интерпретатора. Стандарт парсера

abcdef: Представляю тестовую версию программы URQ-интерпретатора с исходным кодом на языке Pascal. Оформление отображения текста пока не проводилось, основная задача - проектирование парсера для стандартизации и единообразия представления алгоритма разбор команд языка URQL. Практически все, если не все, программы URQL построены по принципу вычленения подстрок, когда считанная строка делится по позиции вхождения какого-либо слова, а эти половинки обрабатываются по отдельности... Здесь-же предлагаю алгоритм, работающий по принципиально-другому способу - разбору как у стандартных языков программирования. что реализовано в данной (0.0.1) версии: поддержка всех арифметических и логических операций, операторы: if ... then ... [else не поддерживается] p, pln, btn - строки текста с подстановками #выражение$ #%текстовая_переменная$ ##выражение$ instr - единственный способ создания текстовых переменных (длины хранимой строки пока ограничена 63 символами) с подстановками #выражение$ #%текстовая_переменная$ ##выражение$ goto, proc, common, inv, rnd, cls, input, invkill, perkill, save, pause, end. Характеристики: * работа с файлами неограниченной длины * при переходе по метке файл перечитывается заново * таблица переменных (переменные/инвентарь/метоки/строки) длиной 750 элементов. (строковые типы занимают по два элемента). * история возврата из подпрограмм на 1025 позиций. * анализатор ошибки отображает: необходимый оператор для данной конструкции, указание строки, позиции в строке где обнаружена. * запуск с командной строки (help - выводится при запуске без параметров) * пока интерпретатором обрабатываются файлы только в dos-кодировке (ASCII). Режимы работы: 0 - запуск квеста 1 - запуск из сохранения (не тестировался) 2 - сканирование квеста на наличие ошибок 3 - сканирование квеста на наличие ошибок и проверка наличия всех переходов по меткам (долго обрабатывает...) не знаю как здесь выложить файл... а так смотрите сюда: http://forum.ifiction.ru/viewtopic.php?pid=14929#p14929

Ответов - 117, стр: 1 2 3 4 5 6 All

noname: в теме 'стандарт URQL' можно найти некоторые пожелания игростроителей (напр про xbtn и inv, на последней страничке темы): http://urq.borda.ru/?1-0-0-00000148-000-40-0 думаю, так же интересно может быть ознакомиться с темой про FireURQ (кроме отзывов там можно найти пару примеров для тестирования интерпретатора): http://urq.borda.ru/?1-0-0-00000258-000-0-0-1236741921 ну, собственно- пока всё. обязательно попробую твоё детище, НО- не сейчас... люблю дебажить :) p.s. что касается 'стандарта парсера', то ИМХО игрописателям на его нутро... не так уж важно, а важно- поддержка языка URQL, и интересных доп возможностей. советую двигаться в сторону приближения к устоявшемуся стандарту досурки(urq_dos) и чуточку расширенной фурки(FireURQ). ну, а в плане функциональности- в сторону Акурки(AkURQ), в которой и ссылки поддерживаются, и наиболее продивнутая работа с картинками, из всех имеющихся русскоязычных текстовых платформ на сегодняшний день p.p.s. ну, а ещё мне будет интересно глянуть код, если он не слишком запутанный- у меня есть своя тз на 'идеальную URQ', мож когда начну писать :)

Серый Волк: Когда вы уже игры начнёте писать, а не плэеры? ;)

fireton: omg


Nex: На то она и урка. Скоро каждый будет на конкурс под свой личный интерпретатор писать.

abcdef: Дорабатываемый интерпретатор за счет стандартизации разбора, единообразно обрабатывает конструкции языка, поэтому практически во всех ситуациях нет такого понятия как стабильность. Существует четкое определение того, почему не обработана ошибочная команда языка. При написании же программ в произвольном URQL каждый руководствуется негласными правилами, ни где не обозначенными, только ценой собственного опыта и конкретных реализаций (а может недоработок) интерпретаторов. __ В моем интерпретаторе достаточно придерживаться всего нескольких правил: 1. метка должна занимать всю строку (т.е. больше ни каких команд) 2. имена переменных не должны содержать служебные символы и слова языка URQL 3. текстовые строки команд должны заканчиваться символом "&" или концом строки 4. команды END, PROC должны стоять в конце строки, или единственными на текущей строке 5. оператор ELSE, если есть, должен стоять в начале следующей строки после строки IF ... THEN ... 6. пока поддерживается только кодировка DOS (ASCII) (переконвертить можно в WordPad - переименовать в файл *.txt - открыть - сохранить как - Тип файла: текстовый документ MS-DOS) 7. команда INPUT пока вводит только числа 8. список поддерживаемых команд смотрите в исходниках 9. еще что-то (если забыл)... :) ___ p.s. если не трудно, выкладывайте здесь тестовые программки, которые не верно обрабатывает интерпретатор, буду дорабатывать. Последнюю версию можно скачать на http://forum.ifiction.ru/viewtopic.php?pid=14929#p14929

Saruman: Гммм... и кто возбьмется переделать ВСЕ существующие игры под этот стандарт?

qwerty: abcdef,Дорабатываемый интерпретатор за счет стандартизации разбора, единообразно обрабатывает конструкции языка, поэтому практически во всех ситуациях нет такого понятия как стабильностьстранно, досурка тоже единообразно обрабатывает конструкции языка, НО она вполне стабильна При написании же программ в произвольном URQL каждый руководствуется негласными правилами, ни где не обозначенными,дай этому несчастному, чей ник 'каждый', ссылку на этот форум. фраза 'произвольный URQL' мне непонятна. и, серьёзно: с чего можно было сделать подобный вывод? ... только ценой собственного опыта и конкретных реализаций (а может недоработок) интерпретаторовинтерпретаторов URQL, собственно, пока всего один- досурка. есть пара реализаций(wcl и dos32) и да, они имеют недоработки. а где их нет в нашем несовершенном мире, где баги встречаются даже в 'конкретных реализациях' языков программирования от крупных фирм, на которых они потом пишут следующую версию этого языка и да, есть куча других начатых интерпретаторов. до релиза пока никто, кроме досурки не дополз и да, они имеют некоторые отличия не только из-за недоделанности, но так же и от попыток идти 'своим путём'. и это- хорошо. думаю, урка может, и должна развиваться. по ссылкам от noname (см выше) можно насобирать пожелания сообщества к платформостроителям- кому чего нехватает В моем интерпретаторе достаточно придерживаться всего нескольких правил:...7. команда INPUT пока вводит только числа 8. список поддерживаемых команд смотрите в исходниках 9. еще что-то (если забыл)... :) хмм... а как насчёт #$ и #%$ ? - это ж 'изюминка' URQL. пожалуй, продумывание интерпретатора URQL надо начинать с того, что бы решить, как именно должна быть реализована возможность вставлять с помощью #$ что угодно и куда угодно Saruman пишет: Гммм... и кто возбьмется переделать ВСЕ существующие игры под этот стандарт?из примера AkURQ, которая является недоделанным, не придерживающимся стандарта, НО вместе с тем- популярным интерпретатором, можно сделать вывод, что urq-сообщество не склонно к строгому формализму. особенно, если у новой платформы будут несомненные преймущества например: в чём преймущество AkURQ перед досуркой? - в более удобном интерфейсе, продвинутой поддержке графики, гипер-ссылок html, поддержке xbtn (впрочем, часть сообщества таки предпочитает 'классическую' досурку) в чём преймущество FireURQ перед досуркой? - в более удобном(графическом) интерфейсе в чём преймущество FireURQ перед AkURQ? - в поддержке стандарта URQL. даже при добавлении расширенных возможностей (а-ля xbtn) автор позаботился о том, что бы подчинить их общей логике языка URQL в чём преймущество твоего, abcdef интерпретатора? или в чём оно будет тогда, когда оно будет? //что-то вроде подсказки: урку выбирают за простоту и широкие возможности языка; главный на данный момент недостаток урки- нет окончательного релиза ни одной графической URQL-платформы

abcdef: Saruman - можно переделать квесты, запустив с опцией "проверка синтаксиса". (запускаем - смотрим что не обрабатывается - исправляем...), А еще скорее всего, так можно найти места не запускающиеся в каком-либо интерпретаторе. Единственное что не отобразит проверка - ELSE, это можно исправить открыв в текстовом редакторе и поиском найдя все ELSE перенести все на следующую строку. __ qwerty - вопросов будет меньше если прочитать что написано на странице с выложенной программой и скачать ее. >>> дай этому несчастному, чей ник 'каждый', ссылку на этот форум - впечатление не лучшее после того, где говорится что лишний пробел и т.д. - и команда не обрабатывается... >>>фраза 'произвольный URQL' мне непонятна - это как раз то, что квесты сделаны под определенную реализацию интерпретатора. >>>должна быть реализована возможность вставлять с помощью #$ что угодно и куда угодно - такая возможность есть, а в произвольном месте через команду system >>>в чём преймущество твоего, abcdef интерпретатора? - полная предпроверка всего синтаксиса абсолютно всех локаций квеста, тогда как простое тестирование достаточно долгий и трудоемкий процесс. - отладка квеста когда при выходе с ошибкой (или нажатием кнопки ESC) производится сохранение виртуальной машины в файл DEBUG.TXT, после переименования этого файла в SAVE.TXT запуск происходит с метки локации в которой наступила ошибка - структурированность разбора - простота алгоритма и структур интерпретатора - имеющийся алгоритм легко перести в 32 битную среду, когда снимаются ограничения на длину строки, а реализация легко модифицируется в графический режим с поддержкой html. - доступность исходного кода, когда любой желающий может исправить или дополнить имеющийся алгоритм ____ p.s.: а вообще давайте протестируем, поэтому пишите свои тестовые примеры, которые не работают...

Byte: Да никому такое не нужно :)

Byte: Я про какие-то "свои" новые стандарты.

qwerty: abcdef пишет: qwerty - вопросов будет меньше если прочитать что написано на странице с выложенной программой и скачать ее. да читал я её. и скажу, что system никуда не годится. нужно продумать интерпретатор так, что бы #%$ можно было использовать без дополнительных ограничений(т е без таких, которых нет в досурке) - впечатление не лучшее после того, где говорится что лишний пробел и т.д. - и команда не обрабатывается... этот эффект проявляется только в Акурке. на соответствие каким-бы-то-ни-было стандартам она не претендует. более того, это- неоконченный интерпретатор, автор которого бросил его доработку. популярность Акурки лишний раз подчёркивает востребованность хорошего графического интерпретатора. кста, если в описании к твоему интепретатору не говориться, какие случаи он обрабатывает неверно, это ещё не значит, что таких случаев нет это как раз то, что квесты сделаны под определенную реализацию интерпретатораа надо, что б они проигрывались любым, так? хороший принцип. а будут ли уже написанные квесты проигрываться твоим интерпретатором? или под него придётся писать другие- конкретно под этот интерпретатор? - полная предпроверка всего синтаксиса абсолютно всех локаций квеста, тогда как простое тестирование достаточно долгий и трудоемкий процесс. - отладка квеста когда при выходе с ошибкой (или нажатием кнопки ESC) производится сохранение виртуальной машины в файл DEBUG.TXT, после переименования этого файла в SAVE.TXT запуск происходит с метки локации в которой наступила ошибка - структурированность разбора - простота алгоритма и структур интерпретатора .... - доступность исходного кода, когда любой желающий может исправить или дополнить имеющийся алгоритм что-то не вижу, что бы твой интерпретатор имел здесь какие-то преймущества, c точки зрения автора квеста. ну, видимо, какую-то часть ошибок он отловит. в отличие от обычного интепретатора, который и не почешется заранее что-нибудь ловить. интересно, чем придётся расплачиваться автору за такое удобство? - имеющийся алгоритм легко перести в 32 битную среду, когда снимаются ограничения на длину строки, а реализация легко модифицируется в графический режим с поддержкой html. вот, это уже лучше. и когда можно будет посмотреть графический интерфейс?

noname: abcdef пишет: При написании же программ в произвольном URQL каждый руководствуется негласными правилами, ни где не обозначенными, например, нигде не обозначено, что твой интерпретатор ограничивает общее кол-во меток в программе. а-я-я-й! Также в имя не могут входить <зарезервированные слова>т е нельзя, что бы имя содержало в качестве подстроки служебное слово? напр, panda- недопустимо? кста, скачал свежую версию, и не смог ею воспользоваться: дай пример проги под твой интерпретатор пример проги, которая 'вылетает' через секунду, после отображения первой локации : :1 pln один btn 2,2 btn 3,3 end :2 pln два btn 1,1 btn 3,3 end :3 pln три btn 1,1 btn 2,2 end

abcdef: noname - см. описание: ...таблица имен 750 мест... квесты вылетают из-за windows кодировки, пока обрабатываются только в DOS кодировке. в имя не могут входить зарезервированные слова, а слово это группа букв отделенная от других слов. например так можно: 'p_anda', a так нельзя: 'х and y' ___ qwerty - насчет неверно обрабатываемых случаев - вот это я и хочу узнать, прося тестовые примеры неверно работающие; вопрос про то что будут ли все квесты обрабатываться в моем интерпретаторе - не корректен, мне что прийдется подстраиваться под нестандарты всех интерпретаторов? Вот то что написано в моем, должно работать в других, за исключением пары команд, которые можно легко исправить в текстовом редакторе автозаменой. ___ qwerty - ты видимо ни когда не писал квестов в 40 и более килобайт, я себе не представляю системы без элементарных средств проверки и отладки, сканирование имеющихся квестов говорит о необходимости подобных систем ;)

qwerty: abcdef пишет: мне что прийдется подстраиваться под нестандарты всех интерпретаторов?написать интерпретатор, обрабатывающий прогу не только на стандартном URQL, но и на его Акурковском диалекте таки возможно. в отличие от заведомо невозможного:Вот то что написано в моем, должно работать в других, за исключением пары команд, которые можно легко исправить в текстовом редакторе автозаменойбоюсь, ты слишком рано взялся за дело. тебе бы для начала написать пару квестов, пообщаться на форуме... сканирование имеющихся квестов говорит о необходимости подобных систем ;)а реакция сообщества ни о чём не говорит? впрочем, да- реакции пракически нет. подождём... qwerty - ты видимо ни когда не писал квестов в 40 и более килобайту меня есть недописанные вещи большего объёма. отладка никаких сложностей не вызывала. возникающие трудности описал в теме 'уроки URQ'. упомянутые средства отладки не помогут я себе не представляю системы без элементарных средств проверки и отладкиинтерпретаторы создаются, что бы ими могли пользоваться не-программисты. авторы квестов. тут совсем другой подход нужен. и в этом деле, требования к интерпретатору хорошо бы согласовать с будущей целевой аудиторией. если ты планируешь таковую когда-нибудь иметь таблица переменных (переменные/инвентарь/метоки/строки) длиной 750 элементов. (строковые типы занимают по два элемента). надо бы прикинуть, сколько у меня уходит переменных на генерацию случайного лабиринта 8х8(тема ЖИМ:продолжение)? что-то около ((8*2+1)^2)=289, не считая вспомогательных переменных. данный интерпретатор явно не для масштабных задумок и ещё: когда будет готово описание языка aurq? упомянутых 8-ми правил явно не достаточно, что бы разобраться... и последнее: у меня щаззз нет редактора, который бы позволял писать в дос-кодировке. можешь дать ссылку на что-нить подходящее?

uux: abcdef пишет: квесты вылетают из-за windows кодировки, пока обрабатываются только в DOS кодировке. У меня она прекрасно вылетала и/или висла в т. ч. и для квеста в DOS-кодировке...

abcdef: пока вспоминается простая истина: пока не разжуешь и в рот не положишь... я здесь не для споров, мне просто понравился квест "Буратино", большой респект авторам! пользоваться автоматизированной системой, или нет - личное дело каждого. Ошибки в готовых квестах, отлавливающихся моим интерпретатором - Есть. Я бы на месте qwerty, если он от имени всех, сначала глянул в исходники (Pascal в детстве многие учили) - там все как на ладони. WordPad - переконвертит в dos, уже писал --^ текстовый лабиринт 8х8 занимает 8*8*2=128 в интерпретаторе 8 правил, остальное, если чего кто-то не вспомнит - в редакторе SMS-QUEST и в исходниках (в самом начале список команд, а ближе к концу их разбор. Все достаточно просто, если хоть немножко программируешь) __________ uux - квест в студию!, т.е. желательно локацию в которой произошла ошибка (ИМЯ локации можно узнать если сделался файл DEBUG.TXT)

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

abcdef: поговорка: как встречают - так и отвечаю. А как по вашему назвать то, о чем уже по нескольку раз писал? если для вас, как профессионала, что-то сделано безграмотно - указывайте что именно, и то как вы видите решение, а лучше реализацию своего алгоритма.

qwerty: Я бы на месте qwerty, если он от имени всех, сначала глянул в исходники я, естественно, только от своего имени. в исходники заглядывал WordPad - переконвертит в dos, уже писал --^как это ни позорно- нету у меня wordpad. пользуюсь notepad текстовый лабиринт 8х8 занимает 8*8*2=128это если без стен- только текстовые описания локаций. а если в каждой локации хранить для каждого направления флаг о возможности выйти- добавим ещё 8*8*4=256 переменных. итого 384. плюс метки, переменные, и прочее... в интерпретаторе 8 правил, остальное, если чего кто-то не вспомнит - в редакторе SMS-QUEST и в исходниках офигительно удобно что-то сделано безграмотно отвечаю(от имени только себя,(ну, может ещё и от имени noname)): советую, отложить на некоторое время работу над своим творением, и попробовать осмотреться. может, с игрушками ознакомиться. самому попробовать что-нибудь написать. и продолжить тогда, когда поймёшь, как это делается. и что именно авторам от интерпретатора нужно. пока что вижу твой проект как попытку создать велосипед с удобной системой навигации для избежания пробок на дорогах, но с одной педалью и при этом, народ-таки смотрит и интересуется твоей работой. высказывает мнения // у нас, в-общем-то миролюбивое сообщество. ну, есть правда два хама- мы с noname

abcdef: спорить не хочется - умные так не поступают, хотелось бы обсудить разработку тестовой версии с старожилами urq, людьми создавшими большие и качественные квесты, или разработчиком какой-либо версии интерпретатора, ну конечно людьми, заслужившими доверие, например uux. ___ насчет оставить проект - дело к тому и идет, мне собственно говоря, от этого ни какой пользы. Да и прочей работы хватает... а еще интересно - даст ли кто-нить свои исходники кроме RipOs?

abcdef: блин, проглядел здесь посты за последние 3 дня, не удержусь, скажу - это больше похоже на какой-то балаган... во-первых ни одного конкретного примера, который неправильно обрабатывается интерпретатором. во-вторых мало кто из рьяных участников даже ознакомился с его работой и попробовал запускать квесты. в-третьих оказывается fireton принял позицию, как конкурирующей фирмы, и несколько безосновательно fireton пишет: прежде чем выставлять свои поделки на всеобщее обозрение, вам стоит, во-первых, научиться программировать, а во-вторых - получше ознакомиться с предметной областью 1. Где плохо спрограммировано? врятли найдешь лишнюю команду (к примеру твоя прога - 700 кб, моя - 25 кб а в windows-реализации не более 70 кб) 2. С предметной областью все в порядке, прочитал документацию, имеющимися на данный момент средствами можно реализовать практически все возможности URQL, кроме работы со строками, музыки, графического режима и html ____ p.s.: пока нет конкретных примеров все это пустые разлагольства. А пока буду добавлять работу со строками и поддержку win-кодировки...

fireton: fireton принял позицию, как конкурирующей фирмы Не смешите меня, пожалуйста. Где плохо спрограммировано? Практически везде. Чего только стоит функция поиска метки в коде через перечитывание файла. Каждый раз. Но главным показателем является то, что ваш интерпретатор падает практически гарантировано на любом квесте из библиотеки. И прекратите занимать позицию оскорбленного гения. Вам здесь никто ничего не должен.

abcdef: падает потому что: либо кодировка не dos, либо не будем гадать - код в студию! ___ >>>...практически везде... - опять уходим от ответа? ___ хоть при поиске каждый раз перечитывает, зато позволяет работать с квестами любого размера, кто не знает - в чистом DOS всего 500 кб памяти. помнится в dos_urq сказано что текст локаций можно менять во время выполнения, значит тоже перечитывает файл.

Byte: Квест любого размера при ограничениях длины строк, количества меток и переменных? Смешно.

uux: abcdef пишет: uux - квест в студию!, т.е. желательно локацию в которой произошла ошибка (ИМЯ локации можно узнать если сделался файл DEBUG.TXT) См. здесь. Локация - стартовая (собственно, если ничего не делать, то вылетает, а если переместить курсор выбора кнопки - то виснет наглухо). ну конечно людьми, заслужившими доверие, например uux. Рановато меня в соратники записали;). Интерпретатор с несовместимым со "стандартным де-факто" досурковским синтаксисом, с кучей ограничений (из-за которых не проигрывается бОльшая часть написанных на Урке квестов)... Синтаксический контроль (по опять-таки не вполне совместимым со стандартом де-факто правилам) - это, конечно, хорошо, но не настолько, чтобы компенсировать остальные недостатки. Я не профессиональный программист и поэтому не буду обсуждать достоинства/недостатки кода, а скажу с точки зрения пользователя - разработка явно (пока?) весьма сырая, лично я бы такую выкладывать не стал, пока хотя бы не потестировал ее сам и не добился более-менее удовлетворительной работы на более-менее обширном материале. Перекладывать альфа-тестирование с собственных плеч на пользователей - ИМХО ход сомнительный. Дело Ваше, конечно - но тогда не надо болезненно реагировать на нелестные определения Вашего творения. Без обид. Я уж не говорю (потому что не хочется повторятся;) о востребованности даже нормально работающего URQ-интерпертатора под DOS при живой Досурке...

Nex: Дык эта разработка уже загнулась, как и множество остальных - чо на неё время тратить? Поставить на полку ещё один усохший скелетик нерождённого недоинтерпретатора, вздохнуть и забыть.

abcdef: прошу прощения, черт дернул компилить перед копированием на сайт с опцией с тотальной проверкой выполнения программы - в итоге вылетало при переполнении переменной счетчика... исправлено и добавлена работа c win-кодировкой __ uux - доверяю, потому что помогал с документацией и давал дельные советы. noname - тоже помогал...

noname: кста, досурка НЕ перечитывает файл. проверено. фраза "текст локаций можно менять во время выполнения", возможно, цитирована не точно, и могла означать, что с помощью #%$ можно подставлять операторы. таким образом программа может меняться во время выполнения. интересно, что досурка не имеет ограничений на размер (или кол-во переменных) квеста. впрочем, никто не пробовал запускать квест более 1Гб... запустив свой пример(см внизу), обратил внимание на странное 'прыгание' курсора. с чем это может быть связано? --- upd: и сделай, плизз возможность завершить работу нормально. например, дойдя до одной из конечных локаций : "и откуда у Евга спасательный круг. вокруг- Латвия" прога виснет. так же хотелось бы иметь возможность корректно завершить работу в любой момент. и ещё: какие же баги ты выловил в других квестах с помощью своего скана? --- пример: :1 pln один btn 2,2 btn 3,3 end :2 pln два btn 1,1 btn 3,3 end :3 pln три btn 1,1 btn 2,2 end :common end

abcdef: курсор прыгает,потому что сэкономил пару команд-меню перерисовывает за каждый цикл ожидания ___ возможно не так понял о перечитывании файла,но как бы не было,это единственно-оптимальный способ.Буферизация не подходит в виду непредсказуемости. Квест можно полностью видоизменять когда отобразилось меню какой либо локации, иначе можно сбить возврат из подпрограмм. ___ отлавливаемые ошибки (если пользовательские имена не содержат запрещенных символов) это полностью весь синтаксис,например в вычислениях: if абв abc_or_def * (5 + ) and then pln ... ошибки будут указываться в "5+)" и "and then" случаях.Хотя при выполнении недостающие операнды заменяются нулями. Сканирование меток довольно сильно помогает. Те участки кода которые хотелось бы пропустить при проверке и выполнении, комментируйте символом ";" ___ согласен,в конечной локации следует чтоб интерпретатор выдавал сообщение об этом, квест завершается кнопкой ESC, в любом случае делается файл DEBUG.TXT -это в целях отладки и сохранения квеста в любой локации

abcdef: пожайлуста, если какие-либо участки квестов не работают - выкладывайте их прямым текстом, а то в браузере отключена java, и не могу смотреть "скрытый текст"

Nex: Включи java

Евгений: Nex, ты злой :))

Nex: Путь наименьшего сопротивления, всего лишь.

qwerty: как-то странно работают anykey. т е кроме того, что не работают- ещё и "съедают" часть выводимого до этого текста замечено в игре "Холм Фей". найти её можно где-то здесь: http://www.urq.plut.info/taxonomy/term/1 abcdef:Ошибки в готовых квестах, отлавливающихся моим интерпретатором - Есть. noname:и ещё: какие же баги ты выловил в других квестах с помощью своего скана? и какие же? в каких играх? интересно же вот, например какой баг выловил я в упомянутой игре: про строчку if масс#x$#y$=1 then btn Север, Север & btn Юг, Юг & btn Запад, Запад & btn Восток, Востокскан выдаёт "IF без THEN" на последок добавлю ложку мёда: сканер нашёл ошибочную строчку ln #$это хорошо. плохо, что при всём при этом эта строчка нормально игнорируется существующими интерпретаторами, а твой на этом- вырубается кста, интересно, что "Холм Фей" можно пройти и на досурке, и на Акурке. на других- не пробовал

abcdef: qwerty спасибо, разберусь с anykey немножко о вставках через "#...$", где "..." - это либо арифметическо-логическое выражение, либо строковая переменная. Работает это только в строках. Применительно к данному случаю будет выглядеть так: instr sys=масс#x$#y$ if system=1 then btn .... а ошибка выдает, потому что встречает символ "#" который должен встречаться только в строках. конечно не удобно,что на первой ошибке происходит завершение сканирования, но иначе алгоритм усложнился бы.

noname: abcdef пишет: возможно не так понял о перечитывании файла,но как бы не было,это единственно-оптимальный способ интерпретатор пока требует чтоб в каждом квесте была локация common, хоть и пустая, например: :common end Примечание для ускорения работы, желательно часто вызываемые локации, например common размещать как можно ближе к началу файла. что же будет при попытке запустить хоть сколько-нибудь весомый квест? мне просто жалко моего винчестера instr sys=масс#x$#y$ if system=1 then btn .... да. в этом случае скан-деббагер ошибку не найдёт. вопрос: планируешь ли ты со временем сделать нормальную поддержку #$ ? курсор прыгает,потому что сэкономил пару команд-меню перерисовывает за каждый цикл ожидания значит ли это, что при этом каждый раз перечитывается файл?

Евгений: Зря вы привязались к этому перечитыванию файла, это же как раз единственная прикольная фича - можно редактировать игру, одновременно в нее играя. А вот то что ни одна игра нормально не идет, это плохо :) Искать ошибки - ищи, но тогда уж и исправляй автоматически :) И опять же дос - все что нужно сейчас урке (если забыть про наш дивный синтаксис) это красивый гуй-интерфейс.

abcdef: http://forum.ifiction.ru/viewtopic.php?pid=15043#p15043 исправлено: - команда anykey (квест "холм фей" не обнаружил) - зарержка команды pause - уменьшено мерцание курсора - генерация ошибки, если невозможно перейти на метку (ранее просто зависал) - сообщение о завершении квеста, в локации которой нет кнопок ___ На действительно больших квестах происходит чтение. А небольшие файлы операционная система сама буферизирует, и не обращается к жесткому диску при повторном чтении. Диск гонять - эт плохо, но если вы слушаете музыку или смотрите фильмы - интенсивность работы диска в сотню раз больше. Когда отобразилось меню - чтение прекращается до перехода по меню. ___ исправлять ошибки врятли получиться из-за неоднозначности, например: ln #$.... здесь может быть два и больше вариантов - ln = #$.... pln #$.... поэтому нельзя исправить автоматом ___ Интерфейс - это косметика, пока главное - движек. ___ про поддержку #$ пока сказать однозначно не могу, а вот если нужно будет переделать квест под стандарты dos_urq и тд., то можно за минуту сделать так: открыть квест в блокноте (notepad.exe) - правка - заменить - пишем: Что: system Чем: #sys$ заменить все - сохраняем - закрываем.

qwerty: ааааааааааааааа, на плуте отсутствует "Холм Фей" !!!!!!!!!!!!!!!!!!

abcdef: пардон, если кто-то успел скачать файл "aurq003" это не та версия.. заменил свежим "aurq_003"

abcdef: http://forum.ifiction.ru/viewtopic.php?pid=15057#p15057 1 написал игру Aurq-tetris (в архиве с программой) 2 исправил пару ошибок 3 добавил более корректную обработку переполнение экрана 4 подкорректировал алгоритм задержки 5 добавил работу с цветом, за это отвечают три переменных: style_textcolor style_buttoncolor style_cursorcolor они определяют цвет текста и заднего фона и находятся в диапазоне 0...255, где младшие 4 бита цвет текста, старшие 4 бита - цвет фона, например: фон=2; текст=14 будет так: style_textcolor=2*16+14 p.s.: предлагайте свои тест тестовые примеры

Victor: abcdef пишет: p.s.: предлагайте свои тест тестовые примеры http://ripsoft.narod.ru/Download.htm, раздел "Квесты написанные для этой программы". Там есть 3 ключевых квеста, проходимость которых в интерпретаторе отражает уровень поддержки URQL, перечисляю по возрастанию уровня: 1. Похождения отважного хомяка Семена, часть 1; 2. Древний кинжал 1; 3. Без права на надежду. Пробовал запускать их в версиях 0.0.3 и 0.0.4. 0.0.3: 1. Хомяк 1: если дописать в код пустой common, то практически проходим, если не считать того, что текст основной локации выдается не полностью. Конец вывода: "тренажер (беговое колесо, о котором мечтает каждый заточенный в клетку хомяк). Повсюду вал". Последнее предложение должно быть "Повсюду валяются бумажки (чтобы спать было мягче).", после него должны быть еще 2. 2. Древний кинжал 1: сообщение об ошибке при попытке взять шкатулку, "Error: "=" expected (STR:184,POS:53,TOKEN:,)". Если подправить код локации 16 (в последнем if'е не хватает btn), то ошибка исчезает, но при проверке синтаксиса выдается еще "Error: "," expected (STR:315,POS:24,TOKEN:save)". Полную проходимость квеста после обхода первой ошибки пока не проверил. 3. БПНН: если добавить в код пустой common_777, чтобы обойти первое сообщение об ошибке, появляются ошибки "Error: "," expected", причем первую из них легко убрать, там строчку закомментировать можно, а вот дальше разбираться пока не стал. Скорее всего в AURQ пока недостаточный уровень поддержки #$, хотя проверка синтаксиса ругается на некоторые строки и без #$. 0.0.4: Хомяк 1, ДК 1: баг с цветами. Первая локация и кнопки выводятся, после первого перехода цвет становится черным на черном. БПНН: Runtime error 201 at 0000:2DC3. Еще AURQ у меня часто вызывает Windows-ошибку 16-разрядной подсистемы MS-DOS (линк на скриншот окна ошибки), "Системная ошибка NTVDM Параметр задан неверно.", а также есть какая-то нестабильность в обработке use. Тестовый код: :0 inv+ ttt btn 0,0 end :common end :use_ttt_look pln ttt end правильно сработал почему-то один раз, при последующих вызовах AURQ (без перезагрузки, правда, Windows) программа (версий и 0.0.3 и 0.0.4) виснет при нажатии i и выборе use_ttt_look. Upd 31.03.09: Замечание по поводу use снимается, после перезагрузки Windows зависания исчезли.

Victor: Пожелания автору: * тестировать программу непосредственно перед выкладыванием! Желательно запускать хотя бы десяток выложенных квестов и проверять, что нормально работают хотя бы 5-7 первых локаций. Для начала проверять на квестах с сайта Рипа, кроме квеста "Стань стальной крысой". В целом не допускать ситуаций, когда очередная версия выдает ошибки/виснет/глючит вообще почти на любом коде; * ввести режим игнорирования ошибок. Еще с Рипурки действует правило: интерпретатор должен игнорировать любые операторы и вообще строки, которые он не может распознать. В основном как средство для обеспечения совместимости, в старых квестах правило использовалось даже в том смысле, что в коде можно писать комментарии без ";", специально нарушать синтаксис оператора чтобы его отключить и т.п. Режим поиска ошибок очень полезен, но он должен быть полностью опциональным, не должно быть так, что для обхода "критических" ошибок нужно модифицировать код чуть ли не каждого квеста; * не вводить на ровном месте собственные "костыли" типа system и sys, которые нарушают совместимость сразу со всеми интерпретаторами. Любые добавления в URQL должны быть очень аккуратными, и не зависеть от технических деталей реализации того или иного интерпретатора. Поддерживать обратную совместимость хотя бы с версиями 1.32 и 1.4 URQL в описаниях с сайта Рипа (возможно, за исключением поддержки некоторых экзотических операторов); * делать полную поддержку #$. Конструкция #$ должна обрабатываться почти в любом месте кода, в частности, некоторые операторы должно быть возможно генерировать с помощью #%$. Простейший пример, должно выводиться test: instr a=pln instr b=test #%a$ #%b$ end Пока что в URQL не хватает многих нужных конструкций (циклы, функции, более универсальные операторные скобки...), но именно за счет наличия "дикого" #$ можно делать какие-то аналоги всего этого, которые иногда могут давать даже большие возможности по сравнению с классическими вариантами. Без полного #$ на URQL пока что можно написать максимум не слишком сложную книгу-игру, если только не использовать автоматическую генерацию кода внешними средствами; * серьезное программирование под DOS16, ИМХО, в настоящее время возможно только с прицелом на некоторые КПК, где есть полная поддержка старого ДОСа, а все остальное поддерживается частично или не поддерживается вообще. Если не преследовать такую цель, то лучше сразу переходить куда-нибудь в *32, пока кода еще не так много, и реально будет все вручную проверить при портировании. Ну и плюс, опять же ИМХО, интересно, когда новая урка работает в среде, в которой до этого урки не было, или имеет принципиально новый интерфейс. Интерпретаторы, работающие в Win-консоли и чистом ДОСе в текстовом режиме, уже ведь есть, и это не только Досурка. Upd: URQL в редакциях Рипа лучше рассматривать именно по описаниям, а не по работе соответствующих Рипурок , у них свои странности. Приведенный по поводу #$ код почему-то не работает в Рипурке 1.4, хотя следующий тест генерит нужную кнопку: :0 instr a=btn #%a$ 0,test end И еще забыл ответить на это: Практически все, если не все, программы URQL построены по принципу вычленения подстрок, когда считанная строка делится по позиции вхождения какого-либо слова, а эти половинки обрабатываются по отдельности... Не стоит с такой уверенностью говорить обо всех "программах URQL". В Досурке обработка происходит не так.

abcdef: спасибо Victor! исправляю ошибки "Runtime error 201 at 0000:2DC3" и подобные... сейчас ошибка из-за необходимости ручного приведения типов операндов и др. вычислений (по прежднему оставил опцию компилятора отлавливать эти несоответствия, это не критично для выполнения интерпретатора, но при перенесении на другие языки возможны ошибки). насчет Windows-ошибки 16-разрядной подсистемы MS-DOS - вот это пока загадка... программа не использует лишней памяти или другие системные команды кроме чтения файла, опроса клавиатуры и вывода на экран - все это сделанно стандартными библиотеками языка,.. у меня такого ни когда не было... попробуй протестить на другой машине или windows ---- :0 inv+ ttt btn 0,0 end :common end :use_ttt_look pln ttt end --- запускал код --^ работает стабильно.., дело наверное в том, что я ранее писал: при нажатии кнопки "i" составляется меню use_... , при нажатии на эти элементы их выбор становится неактивным до перехода в другую локацию, при выходе из локации происходит выполнение очереди выбранных use_... (т.е. здесь в текущей локации не будет текста из use_...) Думал чтоб "ввести режим игнорирования ошибок" - но ошибка это неправильная логика, лучше сразу просканировать и разобраться в чем дело, чем неправильно обработанная информация... Буду смотреть квесты, а пока скажу: если текст обрезает, то это из-за того что в pln слишком длинная строка, исправить можно так: p ...это строка меньше или равно 255 символов...&pln ...это остаток строки... ошибки цвета - в программе используются DOS-текстовая палитра 0..255, в других квестах windows 0..65535 или больше цветов, поэтому и несоответствие.. -исправлю в следующей версии в названии переменных не будет символа "_" "сразу переходить куда-нибудь в *32, пока кода еще не так много, и реально будет все вручную проверить при портировании" - проверять в ручную не прийдется, т.к. за интерфейс с пользователем отвечает в основном подпрограмма draw, которая получает все данные из подготовленных массивов, поэтому движек слабо связан с интерфейсом и это большой плюс при переносе на другие платформы. __ и в завершении про system и sys - это просто попытка систематизировать операции подстановки, тем более прогон квеста на ошибки в местах "system" - может выдвать очень интересные сообщения, т.к. логика переходов нарушена при сканировании квеста и там к моменту проверки может находиться что угодно... ___ Спасибо за тестирование! буду смотреть предложенные квесты. р.s.: немножко о сканировнии для тестеров, хотяб на примере buratino.qst: команда proc Save <== в имени метки служебная слово save, заменяем к примеру на save1 (и метку тоже) команда proc rnd() <== в имени метки служебные символы "(" ")" и служебное слово rnd, меняем на rnd1 команда proc rnd <== ... меняем на rnd2 где-то встречаются "... and then..." где-то нет метки где-то получение кол-ва пореходов на метку без префикса count_ (ошибка не синтаксиса - ищем сами) в других квестах типичная ошибка - неправильно набранная, а то и полное отсутствие команды pln

Nex: движек

noname: abcdef пишет: про system и sys - это просто попытка систематизировать операции подстановки, тем более прогон квеста на ошибки в местах "system" - может выдвать очень интересные сообщения, т.к. логика переходов нарушена при сканировании квеста и там к моменту проверки может находиться что угодно... это что? признание лажовости такого подхода, или наоборот- оправдание? по-любому, использование system и sys (если их станут использовать, а их- не станут) могут стать причиной различных неотлавливаемых скандеббагером ошибок. и просто это не удобно и не в духе URQL Любые добавления в URQL должны быть очень аккуратными, и не зависеть от технических деталей реализации того или иного интерпретатора- здесь я с Victor абсолютно согласен про ошибки с system и sys поясняю: instr sys=масс#x$#y$ if system=1 then btn .... вот как-то не вполне привычно, что присваивать нужно одной переменной, а сравнивать значение- переменной с другим именем. если бы вместо system было #sys$ - выглядело бы логичнее. подобные штуки- чему присваивать, откуда брать значение- могут стать причиной случайных ошибок. часть из них будет просто невозможно отловить скандеббагером в силу их специфики с учётом того, что вышеприведённые две строчки взяты из квеста, где идут подряд строчки вида: if масс#x$#y$=1 then btn Север, Север & btn Юг, Юг & btn Запад, Запад & btn Восток, Восток описывающие эдакий массив (это из Холма Фей, кажется), которые ты предлагаешь переделывать подобным образом, смотри что получим: 27-м строчек подряд нужно переделать каждый раз с использованием sys и system. не очень-то и удобно? опять же, совершенно не ясно: если уж интерпретатор понимает строку sys=масс#x$#y$, то непонимание строки if масс#x$#y$=1 then крайне странно. если это и не ошибка, то, по крайней мере явная нелогичность данного конкретного интерпретатора. поясню: в структурах вида переменная = выражение if выражение=выражение then ... подход к понятию 'выражение' должен быть одинаковым. и плодить варианты 'выражения для всего, кроме...' и 'просто выражение' - не очень-то красиво

abcdef: noname- есть такое понятие: ошибки времени исполнения (например деление на переменную которая равна нулю), скандебагер не все такие ошибки отлавливает, а в частности то что справедливо для system, то будет и для #$ если я это добавлю. Давайте разберемся с #$ как я понял это используется для: 1. модификации адреса перехода 2. эмуляции доступа к переменным массива в остальных случаях использование #$ весьма сомнительно и можно реализовать с помощью if then else ___ Да, в случае с system писать приходится больше чем просто #...$ но выглядет логично в концепции интерпретатора где есть разделение на имена пользователя и просто строки текста

Victor: abcdef пишет: ручного приведения типов операндов и др. вычислений (по прежднему оставил опцию компилятора отлавливать эти несоответствияСовет: версии с любым включенным по умолчанию отладочным кодом называть бетами или альфами. Версия без суффиксов должна предназначаться для игроков, которые вообще могут не знать, что такое URQL. (по поводу use) запускал код --^ работает стабильно..Да, был какой-то временный глюк. Снял это замечание в исходном сообщении. при нажатии на эти элементы их выбор становится неактивным до перехода в другую локацию, при выходе из локации происходит выполнение очереди выбранных use_...В других урках (для краткости здесь и далее буду называть урками URQL-интерпретаторы) обработка происходит не так, "стандартным" способом является как раз немедленное выполнение use, вне зависимости от локаций и переходов. Думал чтоб "ввести режим игнорирования ошибок" - но ошибка это неправильная логика, лучше сразу просканировать и разобраться в чем дело, чем неправильно обработанная информация...Прежде всего тут смысл в совместимости. Если завтра придет новый разработчик, который, например, расширит синтаксис оператора btn, то квесты, разработанные специально для его урки будут хоть как-то работать в твоей. Кроме того, автор сможет, например, делать 2 варианта кода, один с использованием каких-то технических новинок, второй "классический". Переход на технически новый вариант может быть специально сделан некорректным с точки зрения старых урок, и такие приемы уже реально иногда используются. если текст обрезает, то это из-за того что в pln слишком длинная строка, исправить можно так: p ...это строка меньше или равно 255 символов...&pln ...это остаток строки...Дописывать пустые коммоны еще ладно, но править так практически каждый квест чтобы запустить - это уже слишком. Тем более, когда в pln есть #$ и трудно заранее посчитать, какая там длина. "сразу переходить куда-нибудь в *32, пока кода еще не так много, и реально будет все вручную проверить при портировании" - проверять в ручную не прийдется, т.к. за интерфейс с пользователемЗабыл уже, как в Паскале с переходом 16-32, но обычно кроме интерфейса надо проверять используемые типы и работу с памятью. Давайте разберемся с #$ как я понял это используется для:А зачем как-то ограничивать #$? Полностью уйти от кода, генерируемого в процессе выполнения, наверное, не удастся, так какая тогда разница, где заменять.

qwerty: noname пишет:опять же, совершенно не ясно: если уж интерпретатор понимает строку sys=масс#x$#y$, то непонимание строки if масс#x$#y$=1 then крайне странно. если это и не ошибка, то, по крайней мере явная нелогичность данного конкретного интерпретатора. поясню: в структурах вида переменная = выражение if выражение=выражение then ... подход к понятию 'выражение' должен быть одинаковым. и плодить варианты 'выражения для всего, кроме...' и 'просто выражение' - не очень-то красиво abcdef пишет: Да, в случае с system писать приходится больше чем просто #...$ но выглядет логично в концепции интерпретатора где есть разделение на имена пользователя и просто строки текста наверное ты что-то другое хотел сказать. не может быть, что твой if..then.. не допускает использовать в условных выражениях имён пользователя upd лично мне #$ пока был нужен для огранизации работы с данными. где-то в уроках URQ давал в ответ на один вопрос алгоритм, в котором были использованы переходы по #$. другие варианты использования #$ пока плохо представляю. но это никак не умаляет достоинств этой конструкции

abcdef: http://forum.ifiction.ru/viewtopic.php?pid=15150#p15150 добавлена поддержка шифрованных квестов формата QS1 обнаружена ошибка проверки (при выполнении все нормально) - не обрабатываются выражения со стоящим вначале знаком минус или плюс "-" "+", например: a=-2 необходимо написать a=0-2 ___ проверен разбор нескольких квестов с http://ripsoft.narod.ru/Download.htm Гарри Гаррисон Похождения отважного хомяка Семена: Побег Похождения отважного хомяка Семена-2: КРУТОЙ СПУСК Древний кинжал 1 НАДЕЖДА НА ЖИЗНЬ Без права на надежду Замечания по поводу сканированных квестов: 1. В квесте Гарри Гаррисон автор перевода на URQ намеренно испортил код квеста повсюду на метках отсутствуют либо ":" вначале метки, либо цифра три исправлена на русскую букву "з". 2. Без права на надежду - много ошибок, такое впечатление будто автор также хотел запутать игрока, порой создается впечатление "как это может вообще работать..." ___ Для пользователей: включены все проверки. версия - отладочная.

noname: о, там есть расшифровщик! вау! я теперь смогу доделать квест про Мамеза. НО не захочу а ещё, ещё раз попробую пройти БПНН. помница, играл в неё несколько раз, как только она вышла- далеко от здания не ушёл, и осталось впечатление, что я прошёл далеко не до конца этой неоконченной игры. а слишком много параметров в ней зря сделали. лучше сделать мало, но понятно расписанных- на что влияют, и активно используемых так шо прохожу БПНН // да, и намеренно авторы ничего не портят. и даже finereader при распознавании заменяет тройки буквами 'з' безо всякого злого умысла. SkyNet ведь пока ещё не придумали

Victor: abcdef пишет: 1. В квесте Гарри Гаррисон автор перевода на URQ намеренно испортил код квеста повсюду на метках отсутствуют либо ":" вначале метки, либо цифра три исправлена на русскую букву "з".Вряд ли это было намеренно, но метки там, да, неправильные, я потому и писал, что не стоит тестировать на этом квесте. 2. Без права на надежду - много ошибок, такое впечатление будто автор также хотел запутать игрока, порой создается впечатление "как это может вообще работать..."Там счетчики заходов на локацию везде без приставки "count_". В остальном все то, что включено в демо-версию, должно работать. Мелкие баги из-за ошибок в коде иногда есть, но они существенно не влияют на геймплей.

qwerty: не нравится мне название темы... гости могут подумать, что abcdef написал новую версию urql-интерпретатора, а это дважды не так: 1. он ещё не дописан 2. он не поддерживает язык URQL. я так понимаю, что этого даже в планах нет и про стандарт 'парсера': что бы там ни имел ввиду abcdef под парсером, но стандарт, принятый лишь одним участником форума(и при этом- новичком)- это ещё не стандарт. насколько я понимаю текущую ситуацию(и мнение по этому поводу форумчан)- в общем и целом уже сложившийся стандарт в столь кардинальном пересмотре не нуждается и, раз уж начал: название aurq слишком похоже на название популярного интерпретатора akurq abcdef, зачем так людей путать?

abcdef: 1. Я написал новую версию URQ - интерпретатора. 2. Из недоработок - пока не поддерживаются операции сравнения строк. 3. Различие со стандартом URQ - подмена имен переменных и меток через переменную sys: instr sys=имя a=system*2+9 goto system 4. Парсер я не изобретал, его конструкции и стандарты придумывали разработчики языков программирования высокого уровня, а я просто переложил URQL. 5. Удивляет одно - квесты пролежавшие столько лет на всеобщем обозрении, так и не были исправлены от ошибок. 6. Если что-то не нравится-что ж, это ваше право. Но давайте больше делать, чем говорить. А посетители этой темы сами разберуться что им надо, а что-нет.

Nex: Больше делать, чем говорить? Неслыханно.

ASBer: Nex пишет: Неслыханно.

Chicago1920: Автору - советую не обращать внимания, на разговоры о том, что аурка не нужна. Сделать ее, отшлифовать, довести до блеска, протестировать и возмжно она всем понравится. Удачи в этом не легком деле!!!

Victor: abcdef пишет: 4. Парсер я не изобретал, его конструкции и стандарты придумывали разработчики языков программирования высокого уровня, а я просто переложил URQL.URQL позволяет реализовать в квесте минимальный парсер вводимых игроком команд. Было уже несколько попыток составить план расширения парсерных возможностей языка, и именно это называли написанием стандарта парсера. По одному лишь названию треда мне, например, не было ясно, какой парсер имеется в виду. 5. Удивляет одно - квесты пролежавшие столько лет на всеобщем обозрении, так и не были исправлены от ошибок.Стальная крыса Гаррисона была очень тщательно адаптирована заново после того, как первый вариант был выложен у Рипа. Что касается менее очевидных случаев, я когда-то давно занимался составлением списка найденных ошибок в коде выложенных квестов, делал исправленные версии, и мы их одно время включали в различные архивы вместе с оригиналами. Потом возник вопрос о том, что не все авторы хотят, чтобы кто-либо правил код их игры, тем более, что иногда исправление даже мелкой технической ошибки все-таки влияет на сюжет. В итоге лично я стал только лишь сообщать авторам о найденных проблемах и способах исправления, а уж вносить правки в игру или нет, выкладывать новую версию или оставить все как есть - это уж пусть они сами решают.

abcdef: Victor - я полностью согласен, что авторы против редактирования их квестов, и ошибки возможно ведут именно тому сюжету, который хотел автор, но в таком случае логика будет меняться и от используемого интерпретатора: например в том же квесте "буратино" при запуске к примеру в FireURQ активизируется инвентарь, который должен появиться только к середине квеста. Это выражается в условиях на доступные фразы к персонажам, например продавцу в магазине.. и тд

noname: буратино не был предназначен для fireurq, которого тогда не было, НО думаю, что автору fireurq - Firetonу будет интересна эта информация. и, возможно, он доработает свою платформу

abcdef: aurq006 добавлены функции работы со строками. примеры в архиве

Nex: Полгода разработки прошло, какие результаты? Aurq совместима хоть с чем-нибудь?

abcdef: если честно - доработал aurq за один вечер. (других дел хватает), в принципе того что хотел, я для себя реализовал, а именно: 1. гарантированная проверка квестов. 2. практически любой квест, не прошедший проверку исправляется для запуска не более чем за 15-20 мин., кроме квестов в html. 3. есть готовые исходники для перекомпиляции под windows или java. если появится желание добавлю html, но теги будут выводиться оператором pln вместо хаотичной перемешки с кодом. напр: вместо: <html><body>pln hi all... будет: pln <html><body> hi all... текущая версия неплоха для проверки своих работ, даже если планируете запускать на другом интерпретаторе. напр: несколько раз попадались подобные переменные "саша+маша" - разве не ясно что используя такую переменную в арифметическом выражении "саша" и "маша" будут считаться разными переменными, об этом вроде ни где не сказано

abcdef: недавно пробовал запустить хроники капитана блуда тайна левой ягодицы- наконец появилась ошибка "таблица переменных переполненна" реализовал delphi версию таблицу увеличил в 20 раз, убрал ограничение на строковые переменные в 64 символа --- после переезда на другую платформу появилась ошибка, протестирую, исправлю, выложу

qwerty: abcdef, радует, что ты стремишься к поддержке уже написанных игр и ещё: раз уж написанные игры требуют конвертации, что бы работать на твоём движке- хорошо бы сделать спец-утилиту для автоматической конвертации // а слово 'стандарт' в названии этой темы меня коробит. твоя урка- самая нестандартная из всех, которые я видел

abcdef: aurq007 windows-версия. подробности на: http://forum.ifiction.ru/viewtopic.php?pid=15303#p15303

abcdef: aurq008 для windows и dos. (добавлено проивольное положение меток в квестах). подробности там же...

abcdef: выложил рабочую версию с исходниками и подробной документацией. тестовый пример - квест 'хроники капитана Блуда...'

Chicago1920: abcdef Скажи честно, прежде чем я скачал. Это все работает?

Nex: Chicago1920 оно не работает сразу, зато само говорит тебе как под него переделать игру, чтоб она всё-таки заработала. Я не качал, сужу по описанию самого автора.

abcdef: а что имелось в виду "работает". с версии aurq006 вносилось много мелких корректировок, но из-за нехватки времени комплексное тестирование проводилось не всегда проводилось (несколько версий не обрабатывают некоторые квесты). В aurq0082 добавлен более корректный алгоритм остановки переполненного экрана, проведен тестинг имеющихся квестов, проверена работа добавленых возможностей, полная совместимость с dos-версией. --- квесты в архиве с программой: "Тетрис" - переполняется экран и ждет нажатия 'далее'. (удалить в первом pln две подстановки #/$) "Хроники капитана блуда" - практически везде генерация адресов перехода через подстановку #...$, совместно с отсутствием некоторого кол-ва оных локаций, приводит к ошибкам 'метка не найдена'. (добавить имя метки в пустую локацию, файл 'debug.txt' переименовать в 'save.txt' и запустить из сохранения командой 'aurq_win 1 w vk.qst')

abcdef: выложил aurq0089. подробная документация. в архиве более сотни проверенных и адаптированных квестов

abcdef: готовится версия aurq009. поэтому вопрос к квесто-писателям: сейчас существует тип данных 'счетчик метки' его можно только считывать. Каково ваше мнение, если их упраздню, т.е. будут увеличиваться числовые переменные с именем как у метки? Т.к. попадались квесты которые 'в наглую' пытались менять значения счетчиков. Кроме того подобный подход получит возможность без приставки 'count_'обращаться к меткам

Victor: abcdef пишет: Кроме того подобный подход получит возможность без приставки 'count_'обращаться к меткамПриставка была добавлена из-за того, что во многих квестах, особенно ранних, используются метки в виде чисел, типа :15 Со счетчиками без приставки получается, что 15+4 должно быть не 19, а "число заходов на 15"+4.

Хломидоманад: Прямо эволюция наоборот. Обратно в рипурку О_о

abcdef: выложил версию aurq009 - более стабильная и более медленная чем предыдущие. Стандартная работа с инвентарем, картинки (только '.jpg' и только отображение) в архиве несколько адаптированных квестов

Серый Волк: Да, такую энергию, да в нужное русло бы ;)

abcdef: urq-программка для AURQ0092, сочиняющая стихи: http://forum.ifiction.ru/viewtopic.php?pid=15416#15416

Nolite: abcdef , pause -1 в SURQ означает "ждать бесконечно долго". А как он работает в AURQ?

abcdef: 'pause' и любое отрицательное число с версии 009 означает сброс на экран и очистку буфера накопившегося текста. для бесконечной паузы есть 'end'

noname: Nolite, в 'классической' досурке pause 0 означает ждать бесконечно долго

Nolite: Спасибо, уже исправил.

qwerty: местами текст программы как бы не очень понятен p s#i+1$[&pause -1 instr sys=s#i$ instr str=#%system$ len=strlen #%str$& ;посчитаем кол-во входящих слов c=0&j=1 :r2 if strchar j,#%str$&=46 then c=c+1 j=j+1&if j<=len then goto r2 ;END - посчитаем кол-во входящих слов p #len$]=#c$ >>> &pause -1 ЗЫ для тех кто не в курсе темы: к стандарту URQL, равно как и к парсеру ЭТА тема отношения не имеет

abcdef: qwerty ты ошибаешься, впрочем как (чуть не сказал всегда), в приличной доле ответов в этой теме. все очень даже понятно: для строк существует только два символа завершения либо "&", либо конец строки. для выделения строк я не стал делать как другие авторы: "что-то ... в кавычках", тогда символ кавычка автоматически исключился бы из списка разрешенных, т.е. они бы порождали неоднозначность, яркий пример квест "буратино" - попробуйте запустить его на dos_urq или fire_urq. про интерпретатор скажу так: 1. Имеющиеся возможности позволяют сгенерировать/адаптировать любую urq-структуру. 2. Быстрое сканирование/отладка 3. До 70% известных мне квестов уже сканированы/адаптированы к AURQ009

qwerty: qwerty пишет: местами текст программы как бы не очень понятен abcdef, qwerty ты ошибаешься, ................................. все очень даже понятно: ...................... имелось ввиду, что Я непонимаю, как именно должен обрабатываться твоим интерпретатором приведённый отрывок например, мне неизвестно назначение [] и >>> впрочем, можешь не отвечать- наверняка эта инфа кде-нибудь описана(ведь так?) и мне просто в лом было изучать очередной язык

Хломидоманад: qwerty, там оператор вывода на экран, какое еще назначение?

abcdef: в архиве с версией aurq0092 дока. некоторые моменты возможно упустил, например 'pause' и отрицательное число. если есть вопросы по работе операторов я все расскажу (отвечать мне, правда, удобнее на том форуме). В существующую версию (0092) могу попробовать добавить конструкцию #...$ в любом месте, но не буду т.к. не хочу чтобы aurq превратился в непонятно что... а так у меня планы (если будет очень скучно) превратить aurq в компилятор, тогда оператор 'system' будет эквивалентен получению адреса в памяти

qwerty: Хломидоманад, abcdef, всё, разобрался! тогда по ошибке запустил не ту версию- в ней прога не работала- вот и пытался разобраться

abcdef: выложил aurq0093. aurq 3D-лабиринт (в архиве)

Nex: abcdef куда выложил-то? ссылку?

abcdef: все версии и программы можно найти только по одному адресу: http://forum.ifiction.ru/viewtopic.php?pid=15540

Nex: ясно. я на ификшене забанен, жаль, хотел взглянуть на 3D лабиринт.

abcdef: спроси у тех кто скачал, а смотреть не чего, в графике лучше было б и быстрее.

Nex: abcdef я у тебя спрошу. отправь мне на nex@otaku.ru, если не трудно. если "смотреть нечего", то зачем выкладывать?

Чикага 20-й: Nex за что тебя забанили?

Nex: За то, что не согласился с Олегусом. А ещё я сказал ему "Пф" Да переживать там нечего, бан ненадолго.

abcdef: готовится экспериментальная сетевая версию aurq. предача/прием текстовой строки. работа в потоке интерпретатора, поэтому приостанавливает до выполнения транзакции. после выполнения доступны через переменные: строка данных; строка контрольной суммы квеста и его имя; строка лога обмена и ошибок. #не требуется создание своего игрового сервера. #объем транзакции 2-4 kb + пользовательские данные. #скорость передачи/получения от 30 сек #прием извлекает и удаляет одно первое сообщение #требования: разрешение протоколов esmtp/pop3; наличие зарегистрированного пустого email ящика на каждого игрока ___ тестируется с сервером mail.ru каково мнение пользователей?

Nex: на движок без игр пользователям пофиг.

abcdef: не идет квест - адаптируй. и все-таки что скажут более опытные квесто-писатели и авторы других платформ? т.к. имеются два существенных минуса: 1. потенциально-опасный код - начиная от парольных переборщиков и рассылки спама, до неблагонадежных скриптов ворующих пароли пользователей. 2. отсутствие мобильности программ требованием доступа в интернет, которого, например как у меня, мало. ___ что планируется добавить: передача из строки почты esmtp, получение в строку почты pop3, получение http файла в строку через методы get и post

Хломидоманад: Пока не очень понял, что выигрывают от этой возможности игрописатели. ps Лабиринт тормозит, а в досурке вообще не запускается. Но ты и так знаешь. pps Мне лично все же кажется, что аурке нужен GUI. Уж очень велик нынче контингент потенциальных пользователей, которых консоль может просто отпугнуть... 2009 год все-таки.

abcdef: применение сетевых возможностей: загрузка текста для вывода в локациях, работа с игровыми http серверами, получение данных из сети в реальном времени (курс валюты,температура окружающей среды, новости,анекдоты и многое др) все сводится к выделению подстроки между определенными html тегами, правда если сервис или сайт не ваш, то изменение форматирования приведет к не корректной работе скрипта (смотря как качественно сделаете разбор). использование почты - передача параметров игрока в мультиплейерной игре (через разделители записываем состояние переменных, получатель парсит строку и заносит в свои переменные). Можно делать таблицу on-line рекордов. или отправлять из квеста письмо автору. применений много, но, тогда необходимо проектировать логику и для off-line режима. ___ о лабиринте: в др. urq интерпретаторах нет функций для работы со строками, кроме token и сравнения по маске, они могут лечь от объема данных если делать через token. Лучше сделать картинками в акурке чем текстом в aurq

Nex: abcdef сдаётся мне, что это - как чинить телевизор молотком.

Серый Волк: не идет квест - адаптируй. (c) отличный лозунг! Да мне на бок не сдалось что-то там редактировать, что бы самодостаточная игра шла под ущербные проигрыватели. Я - игрок. У меня есть игра, которая создана под проигрыватель "А" (который, быть может, не менее ущербен, зато именно эту игру жуёт правильно). Как ни странно, но я буду играть в неё под проигрыватель "А". И не могу себе представить, что буду тратить время на то, что бы адаптировать игру под проигрыватель "Б". Оно мне надо? Если вы хотите, что бы я, как игрок, когда-либо открыл у себя на компе проигрыватель "Б", то создайте то, что меня заставит это сделать - игры под проигрыватель "Б". Иначе не знаете почему, когда мне недавно понадобилось показать человеку "Хроники капитана Блуда: Тайна левой ягодицы", демонстрация проходила имено в досурке? Хотя на ификшен я встречал пост, где было сказано, как посредством алеутских танцев с элементами мистических песнопений корректно запустить игру на аурке.

abcdef: :) танцев с бубном - это точно! Но если проигрыватель "Б" может отладить и воспроизвести почти ("почти" - это зависимость от степени лени) все имеющиеся квесты, почему бы не использовать его?Все интересующие меня квесты я запускаю только в aurq, из найденных 200 шт. примерно ~50 осталось отконвертировать. Можете писать под что угодно и как угодно, лично я заинтересован только в том, чтоб квесты были качественными. И мне как игроку не приходилось их долго и нудно чистить от ошибок: ненайденных локаций и т.д., т.е. хотя бы проверяйте в aurq перед выкладыванием в интернет как говорится "тренируемся на кошках": берем кошку, т.е. копию квеста и начинаем долго и нудно тестить в aurq, конструкции корректные в др. интерпретаторах, но не проходящие - комментируйте, остальные ошибки пишем на листок с указанием номера строки, и так до полной проверки квеста. А после исправляем оригинал. ___ Nex - "телевизор молотком" - и это верно, но он будет показывать! все равно лучше, чем просто ламповый приемник. :) В квесте "дверь в лето" фраза "пишем как можем" - характеризует всю urq, т.к. надо извратиться, чтоб имеющимися возможностями написать что-либо приличное.

abcdef: сетевая версия aurq0094net http get/post esmtp pop3 переменная лога обмена (с дублированием в файл) p.s. для опытов используйте пустые тестовые email-ящики (тестировалось на mail.ru) p.p.s. убедительная просьба не использовать программу для рассылки на email "ironwoodcutter@bk.ru", любые сообщения из этой программы расчитываются спамом, о чем будет сообщено администрации. ___ какие мнения по данной версии?

Chicago1920: abcdef там инструкция есть, как писать сетевые игры?

abcdef: какие инструкции? есть примеры как отправить запрос и получить ответ :) 1. Отправили др. игроку строку текста 2. приняли от него строку текста... 3. квест обрабатывает строки у каждого игрока 4. выделяет по разделителям данные и записывает в переменные чтоб понятней - практически аналог функции "input" напр: игрок ввел несколько данных через запятую, делим строку по запятым и записываем в переменные как строковые так и числовые

Chicago1920: abcdef ну это автоматом отправится примется?

abcdef: в смысле автоматом? заполяем переменные, вызываем функцию отправки или приема, интерпретатор приостанавливаеся как в случае с "input" и выполняет обмен с сетью... в следующих командах смотрим и анализируем содержимое которое вернула функция "connect", но сначала глядим в переменную "_log" последние слова должны быть "TRANSFER-OK", если нету, то смотрим лог на наличие "E:" это сообщение об ошибке (лог обмена сделан качественно - пишется все что передано и принято) по длине строки лога можно приблизительно (в большую сторону) узнать об объеме потраченного трафика

Chicago1920: abcdef вот это здоровски. вот это молодец. надо бы изучить

abcdef: AURQ-чат пример работы через smtp/pop3 http://forum.ifiction.ru/viewtopic.php?pid=15620#p15620

Серый Волк: вот это да, вот это здорово, вот это нафиг никому не нужно

Nex: оно нужно автору этой урки

fireton: Nex пишет: оно нужно автору этой урки Оно уже не урка. ;)

abcdef: я не настаиваю, а делюсь своими наработками. скока уже говорить: не нужно - не используйте программу и не засоряйте оффтопами тему, Aurq тоже можно сказать "Фас", но это будет нехорошо :)

abcdef: в следующей версии сетевые возможности будут отключены. (как говорится "только для личного использования")

abcdef: появилось время, собрал java версию, работает практически на любых телефонах. дистрибутив на forum.ifiction.ru



полная версия страницы