не могу скачать авторский набор ртадса (2.9mb)
проигрыватель квестов у меня есть (1.1mb)
у меня нет флэшгета
(или регета, как там правильно?)
может, если дадите ссылку в другом месте
на авторский набор без проигрывателя, то
у меня получится скачать?
жажду опробовать ваш движок
пока есть опыт программинга
на дельфях
урке
qsp
(на всех - по чуть-чуть)
Неактивен
noname написал:
и ещё:
насчёт всяческих заранее описанных глаголов:
работа проделана большая, за что спасибо и всяческий респект, НО
пожалуй, авторам с этим набором глаголов головных болей поприбавится:
действия, которые автор вообще не собирался использовать в квесте могут
приводить к безвыходным ситуациям, нелогичностям или к некоректной возможности выйгрыша.
[SNIP]
автору такие моменты предусмотреть сложно.
Написание квеста - вообще непростое дело. Если подходить к вопросу системно и обладать самодисциплиной, то обработку большей части нестандартных ситуаций можно заложить сразу. Для всего остального есть бета-тестинг. В принципе, бета-тестирование - как минимум столь же важный и трудоемкий этап проекта, как и написание собственно игры.
noname написал:
p.s.
где можно получить список всех команд, доступных игроку в игре
со всеми допускаемыми интерпретатором формами
(реакцию на них я в advr.t найду)
Список всех команд есть в этой главе мануала: http://www.rtads.org/man/TADSSTD.HTM (список глаголов можно найти, используя текстовый поиск по строке "Стандартные определения объектов-глаголов"). Правда, два момента: (1) всех интерпретируемых форм там нет, только основные синонимы. (2) Переводилась эта глава в 2004 году, поэтому ГрАнд с тех пор мог добавить какие-то новые глаголы (но в любом случае их будет немного).
Неактивен
noname написал:
чего я хотел сказать:
Кащей понимает команду 'встать' НО не понимает 'встать с кровати' - это особенность интерпретатора или игры?
так же он понимает команду 'идти на восток' НО не понимает 'идти в коридор' - это в РТАДСЕ вроде бы можно сделать... попробую разобраться- как.
"Встать с кровати" - тоже можно сделать. Для этого, например, доопределяем глагол "встать" следующим образом:
modify standVerb verb = 'встать' 'стоять' 'встань' 'встать с' 'встань с' doAction='Stand'
А для кровати
Bed: fixedItem sdesc="кровать" verDoStand(actor)={if(actor.location<>self) {// Если актер не на кровати, ругаемся "<<ZAG(actor, &sdesc)>> не на кровати!"; } } doStand(actor)={"Хорошо, <<actor.sdesc>> встал<<yao(actor)>> с кровати."; }
Достоинство такого определения: так сделать проще. Недостаток (хотя кому как;): игра начнет понимать конструкции вида "встань кровать", "встать кроватью" и т. д.
Альтернативный вариант - определить глагол 'встать с' как отдельный глагольный объект (например, с использованием compoundWord, чтобы "слепить" глагол с предлогом).
noname написал:
ух, столько всего читаю, делаю, а тут ещё этот РТАДС. чтоб на нём чё-то качественное сделать нужно долго помурыжиться... так например Дримор на КРИЛ-2006 тогда ещё скачивал- имел глюки с общением с шаманом, недочёты Кащея я перечислил (смысловые недочёты тоже есть- но тут уж движок ни при чём). отсюда вывод: русских полностью отдебаженных и вылизанных до блеска игр на РТАДС я пока не видел. что настораживает.
Ну, я и вообще очень мало видел (если видел вообще;) полностью отдебаженных и вылизанных до блеска русских IF-игр, даже менюшных. Парсерная игра по определению намного более трудоемкая в создании, чем меню.
Из близких к совершенству в плане вылизанности - "Ожидание утра" и тот же "Кащей".
noname написал:
в моём пробном квесте меня интересует больше всего поведение НеПиСей.
а пугает больше всего разнообразие форм общения игрока с персонажами в РТАДС:
>шаман, возьми посох
>спросить продавца о видеокарте
>говорить с продавцом (и далее- строчки в вода в "Love")
Общение с неписями - кошмар любого автора-парсерщика;). Даже англоязычного. На самом деле, создание мало-мальски реалистичных персонажей - пожалуй, объективно самый сложный аспект квестописания. Именно поэтому в последнее время нарастает тенденция (хотя лично я к ней отношусь отрицательно) подменять "полноценное" общение с персонажем командой "talk to" - "поговорить с" либо менюшными диалогами.
noname написал:
я понимаю, что местная тусовка уже притёрлась и непонимание некоторых форм команд никого не смущает, как и то, что НИ ОДИН квест пока не реализует достойным образом возможностей общения, описанных в хелпе. НО такие недочёты (или скорее- такое отсутствие вылизанных квестов) тормозит расширение нашего маленького сообщества текстоквестописателей.
С этим не поспоришь;).
Отредактировано uux (06.04.2008 23:17)
Неактивен
noname написал:
Достоинство такого определения: так сделать проще. Недостаток (хотя кому как;): игра начнет понимать конструкции вида "встань кровать", "встать кроватью" и т. д.
Альтернативный вариант - определить глагол 'встать с' как отдельный глагольный объект (например, с использованием compoundWord, чтобы "слепить" глагол с предлогом).а во втором варианте можно "защититься" от "встать с кроватью"?
Нет. Но самом деле это, по большому счету, и не нужно (на мой взгляд, конечно). Если игра, наряду с корректными словосочетаниями, пнимает также некоторое количество некорректных - это только повышает удобство для игрока.
noname написал:
так можно выдрессировать игрока вводить команды корректно.
может быть, даже можно так научить его вести диалог с персонажами.
крайне жёсткий вариант: общение м/ду персонажами в игре идёт на "интергалаксе" - некотором всеобщем упрощённом языке, а на попытки общаться по-человечески инопланетяне отвечают на своём "тарабарском" (а кто и на "хлюпхлюпском") языке.
Идея действительно хорошая.
Неактивен
Flint написал:
noname написал:
привязать провод верёвкой к столбу
и
привязать проводом верёвку к столбу
различимы с точки зрения интерпретатора или нет?С точки зрения интерпретатора TADS эти предложения некорректны. В команде может быть только прямой и косвенный объект, то есть можно писать "привязать веревку к столбу" или "привязать провод веревкой", но не так, как у тебя.
Если переформулировать вопрос и сравнивать такие фразы:
привязать провод верёвкой
и
привязать проводом верёвку
то они будут различны в данном случае. Но, к сожалению, если падежные формы будут совпадать, то парсер может ошибиться.
Например, в моей игре "Любовь":
>дать водки бомжу
Я не знаю как дать что-либо бутылке водки.
То есть этот механизм не совсем надежен.
Можно еще, например, определить "веревкой" как предлог и создать глагол "привязать веревкой"... Но, пока не накопите опыта программирования в TADS, извращаться таким образом не советую;).
Неактивен
Flint написал:
uux написал:
Можно еще, например, определить "веревкой" как предлог и создать глагол "привязать веревкой"... Но, пока не накопите опыта программирования в TADS, извращаться таким образом не советую;).
Тогда еще придется определять "привязать провод" (чтобы работало "привязать провод веревкой к столбу") и "привязать к столбу", короче жопа :-)
А вот и нет. "Привязать веревкой", если сделать так, как я описал, парсер будет понимать в любом сочетании. Может понадобиться определить "привязать проводом" - если что-то потребуется им привязывать. Но на самом деле это действительно неоптимальное решение, которое может помочь в решении довольно узкого спектра задач.
Неактивен
noname написал:
и если эти 1-ю фразу интерпретёр считает аналогичной 2-й, то дело- дрянь...
Вообще не должен, но глюки иногда бывают...
Неактивен
noname написал:
мог бы отхлебнуть водки и сказать что-нить по этому поводу, типа: "гарна горiлка"
вообще это такая очень тонкая претензия: к образу ГГ
хотя я толком не знаю, может автор его таким неженкой и видел,
впрочем, может это водка палёная была, но почему тогда бомж даже не блеванул и не вырубился на пару минут в луже...
Почему неженкой? Особой чувствительности я что-то в ГГ не заметил.
Водка была паленая, а бомж не вырубается, потому что у него иммунитет выработался за много лет питья всякой гадости.
noname написал:
и ещё:
лишние убийства/загрузки теоретически могли бы попортить атмосферу игры,
но это претензия не к твоему квесту а вообще-
ИМХО: даже моментальное убийство- плохо, поскольку процесс "отката" не способствует вживанию в игровой мир
Теоретически да, но на практике соглашусь с Flint'ом - в эру многократного undo проблема кажется несколько надуманной.
Неактивен
noname написал:
нет повести печальнее на свете...
в данном случае я просто создал пару локаций. без всякого сюжета и плана. меня устроил бы любой вариант работы команд, НО они УЖЕ работают некорректно.
p.s.
и эта ошибка присутствует и в Кащее, и, я подозреваю, во всех русских РТАДС-квестах, если автор не переписал команду "бежать" самостоятельно
Ну, и в чем проблема переопределить самому?
noname написал:
да, я обеими руками ЗА то, чтоб парсер принимал 'е' и 'ё' за одинаковые буквы во вводе пользователя, но неужели это даётся такой ценой? я хочу, чтоб яблоко было 'зелёное', его кушал 'ёж', и в результате у него возникнут определённые ощущения в 'нёбе', которое он может потрогать языком и попробовать вылечить и т п
p.s.
а ещё в детском журнале Трамвай читал необычные приключения буквы Ё. что-то в духе Кэролловской Алисы.
noname, простите, конечно, но Вы с удовольствием распространяетесь о глюках RTADS, но не хотите разбираться с глюками в собственной голове. "Поддержка" буквы Ё включается в RTADS одним движением руки, и Вам уже описывали, как. Если это для Вас так важно, что Вам мешает это сделать самостоятельно?
noname написал:
было бы удобно задавать русские названия локациям и объектам.
вот объект сейф. пусть и называется сейф, нет мне приходится выдумывать английское название, и помнить, что это слово означает сейф. в случае наличие в игре различных но похожих объектов это не очень удобно. да и вообще в больших проектах это всегда крайне не удобно- помнить, как ты назвал зеркало mirror или looking_glass, как именно ты описал объект box - ящик или коробка и т д
А что мешает обзывать их транслитом? С большими же проектами априори крайне неудобно работать по сравнению с маленькими проектами;). И возможность обзывть объекты русскими буквами - отнюдь не панацея. Варианты борьбы: IDE - пока утопия; самому вести базу данных объектов (хотя бы на бумаге).
noname написал:
и ещё:
где найти список всех классов объектов
конкретно мне нужен lockablecontainer
http://www.rtads.org/man/TADSSTD.HTM - эту ссылку я Вам тоже уже давал, кстати, когда речь шла о списке всех понимаемых системой глаголов.
Отредактировано uux (12.04.2008 07:37)
Неактивен
noname написал:
вопрос:
- в мануале приводится пример случайного блуждания персонажа с проверкой выходов.
- МОЖНО ли с помощью какой-либо функции проверить доступность какого-либо действия, получить список доступных действий для персонажа не-игрока.
НАПРИМЕР:
массив VV содержит список глаголов для данного персонажа
массив NN содержит список объектов, присутствующих в игре + пустой объект
хочу в цикле перебрать каждую пару VV[x],NN[y] и если VV[x]+NN[y] не только клеится в корректную команду, но ещё и выполнимо при текущих обстоятельствах - заношу это действие в список LL[z]. затем случайным образом с равной вероятностью выбираю одно из действий на выполнение.
суть ВОПРОСа в том: есть ли какая-либо функция для проверки возможности действия VV[x]+NN[y] ?
(если нет, то и не надо - в таком виде она мне нужна только на промежуточном этапе подготовки квеста- потом всё равно прийдётся писать свою функцию выбора действия )
Специальной функции нет. Можно поступить так: отключить вывод на экран, затем вызвать верификатор и проверить, выводит ли он что-либо на экран:
old_stat:=outhide(true); // Отключаем вывод на экран [i]Вызов верификатора[/i] new_stat:=outhide(old_stat); // Включаем вывод на экран обратно if(not new_stat) ... // Вывода на экран от верификатора не было -> действие допустимо else ... // Вывод на экран был -> действие недопустимо
Другой вариант - сделать NN не списком всех объектов в игре, а списком объектов, которыми персонаж может манипулировать, а затем написать развесистую проверку, проверяющую каждое возможное сочетание глагола и объекта.
Извините, сейчас не могу написать более подробный и конкретный пример - нет времени. Если будут непонятки - спрашивайте еще, постараюсь помочь.
Неактивен
noname написал:
noname, простите, конечно, но Вы с удовольствием распространяетесь о глюках RTADS, но не хотите разбираться с глюками в собственной голове. "Поддержка" буквы Ё включается в RTADS одним движением руки, и Вам уже описывали, как. Если это для Вас так важно, что Вам мешает это сделать самостоятельно?
спасибо за прямоту. глюков у меня и вправду хватает. в данном случае описанный рецепт будет иметь тот недостаток, что пользователю обязательно нужно будет вводить букву Ё. идеальный вариант: пользователь может, но не обязан использовать букву Ё где ей положено. парсер должен всегда выводить букву Ё там где ей положено быть. вроде бы это же пожелание и содержалось в посте, на который ты ответил.
p.s.
да, кстати, давай переходить на ты
впрочем, это дело десятое.
а "урезание" буквы Ё я таки уберу
На самом деле, в описанном тобой выше примере даже урезание отменять не потребуется: достаточно определить для яблока лексическое свойство "зеленое" (а не "зелёное"), и что бы игрок не ввел - с Ё или без Ё - игра его поймет.
Мне сразу в голову это не пришло - видно, с глюками в мозгу и у меня все в порядке;).
Отредактировано uux (12.04.2008 08:36)
Неактивен
noname написал:
смысл поста ясен
упомянутый пример сейчас пишу самостоятельно
благо у меня всего 6-ть объектов и 8-мь команд (из них долько 2-а требуют более одного аргумента)
возможно, эта информация где-то содержится, но спрошу:
можно ли получить доступ к переменным, содержащим введённые игроком глагол и аргументы?
(желательно с инфой о том, в каком падеже и т п)
Информация вот здесь:
http://www.rtads.org/man/TADSADPT.HTM, далее текстовым поиском на странице по шаблону "Получение информации о текущей команде".
С информацией о падежах и т. п. хуже - системной функции для этого в TADS нет. Что навскидку приходит в голову - из функции preparse сохранить в промежуточной переменной строку в том виде, в каком ее ввел игрок, а потом разбираться с падежами. Но это муторно.
Неактивен
noname написал:
но как быть с ксиззи???
может я его куда-нить не туда вставляю,
или где-то чего-то ещё нужно изменить?
На первый взгляд, все должно компилироваться нормально. Единственное, что приходит на ум - файл, где определен ксиззи, не включен в число компилируемых, либо каким-то образом этот фрагмент оказался между комментариями. Если совсем затык - шли на мыло uux собака mail точка ru, буду разбираться.
Неактивен
noname написал:
uux написал:
Специальной функции нет.
а вот и есть! надеюсь, она мне не снится. вот она:
Молодец! Уел меня.
noname написал:
checkreach
checkreach: function(loc, actor, v, obj): проверяет, может ли актер (персонаж) actor манипулировать объектом obj при помощи глагола v, находясь в комнате loc. Функция используется на этапе валидации (проверки корректности) команды. Эта функция разрешает дальнейшую обработку команды, если obj - это объект специального типа (numObj или strObj), если этот объект находится в инвентаре актера actor, а также в том случае, если он внесен в список reachable комнаты loc. Во всех прочих случаях возвращается выводится сообщение об ошибке, что на этапе валидации автоматически означает отказ от дальнейшей обработки.впрочем, неуверен, что именно она проверяет: взять кровать по её мнению тоже можно?...
В общем случае она проверяет, что актер и объект находятся в одной и той же комнате и что при этом актер видит объект (возможны более сложные специальные случаи - например, для глагола "спросить о" невыполнение данных условий не будут мешать заимодействию с объектом, но мы их пока касаться не будем). Грубо говоря, она проверяет, надо ли выдавать ошибку типа "Я не вижу здесь этого". Таким образом, если игрок и кровать находятся в одной комнате, функция не будет возражать против "взять кровать".
Неактивен
noname написал:
заранее извиняюсь, но так уж исторически сложилось, что я чувствую эту тему своей и могу позволить себе выложить листинг:
...
файл у меня единственный
Скачал. Скомпилировал. Все работает, "ксиззи" распознается.
Вопрос: может, ты добавил код для xyzzy и, не закрывая и не сохраняя файла в редакторе, сразу стал компилировать и запускать игру?
Попробуй сейчас еще раз.
Кстати, в подобных случаях можно проверить, действительно ли измененный код внесен в файл исходника, просмотрев его в окне дебаггера (в смысле, TADS Workbench).
Отредактировано uux (12.04.2008 16:44)
Неактивен
noname написал:
всё перепроверял тысячу раз.
библиотеки смотрел насчёт переопределения глагола.
НО
после твоего поста- неожиданно разобрался!
рассказываю для последующих поколений авторов:
в менюхе Build- Settings- Source показывал на пред папку.
как получилось: пишу квест в папке ...\001, затем очередную версию копирую в 002 и т п
итого на тот момент у меня было 4-ре версии
по неизвестной причине квест 004 при загрузке показывал свой текст, но имел путь на исходник 003
как я так умудрился сделать- не помню. всё из-за жуткого недосыпа.
до этого все пути менялись корректно автоматически
огромное тебе СПАСИБИЩЕ, uux Коптельцев Валентин.
(Ведь это ты?)
Да, это я. Пожалуйста. Если еще будут вопросы - обращайся.
Кстати, наткнулся чуть выше на следующую жалобу:
noname написал:
а регистр букв- вообще чудная вещь:
-keyedLockable - одна большая буква
-islocked - ни одной
по логике Си было бы KeyedLockable и IsLocked
так или иначе к регистрам привыкнуть не просто, как и к кавычкам, но я таки сделаю что-нибудь серьёзное.
При желании распознавание регистра символов в компиляторе можно отключить вообще. В Workbench'е идем в Build->Settings, тыкаемся во вкладку Advanced и включаем флажок Ignore case (in object names, functions, etc.). Все, вопрос с регистром решен раз и навсегда!
Неактивен