Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
30.12.2007 21:48

fireton
некто с бородой (+354, -92)
Откуда: Москва
Зарегистрирован: 22.08.2005
Сообщений: 1103
Вебсайт

Тон

Непонятные ситуации с RTADS

Пытаюсь сделать простейшую запертую дверь. Вот код:

<... удалено ...>

получаю в процессе прогона вот такое:

Код:

>з
Тебе сначала придётся открыть тяжелую дубовую дверь. 

>открыть
Что ты хочешь открыть? 

>дверь
Она заперта. 

>отпереть
(тяжелую дубовую дверь) 
(с помощью большого ключа) 

Отомкнута. 

>запереть
(тяжелую дубовую дверь) 
(с помощью большого ключа) 

Отомкнута. 

>запереть дверь ключом
Её уже заперта.

advr.t уже смотрел, ошибки ускользают... Помогите разобраться...

Отредактировано fireton (30.12.2007 22:14)

Неактивен

0    0    #2
29.08.2018 14:21

Nikita
Модератор (+404, -135)
Зарегистрирован: 29.10.2016
Сообщений: 139

Re: Непонятные ситуации с RTADS

Kephra написал:

Кому он блин сдался этот GameInfo.txt!?

В GameInfo.txt записывается библиографическая информация об игре по стандарту Договора Бабеля. Потом это позволяет автоматически извлекать её в структурированном виде для каталогизации игр и поиска по ним. Для его автоматического создания существует библиотека gameinfo.t, входящая в состав среды разработки.

Впрочем, использовать это совсем не обязательно. Удалите из проекта данный ресурс, если его не создаёте, тогда IDE не будет пытаться его добавлять и соответственно не будет расстраиваться, что его нет. Дерево ресурсов редактируется в меню Build пункт Settings.

Kephra написал:

Ещё вопрос: почему названия локаций не выделяются жирным?

Потому что стандартной функциональностью это является лишь для RTADS, а не TADS 2. Сделать можно так:

Код:

modify room
dispBeginSdesc = "<b>"
dispEndSdesc = "</b>"
;

Ну и проследить, чтобы игра по "\H+" активировала режим HTML. Это должно быть в функции первичной инициализации init() или общей инициализации commonInit().

Вообще если собираетесь писать русскоязычные игры, то и изучайте русскоязычные библиотеки. Это большое заблуждение, что RTADS является просто переводом TADS 2. В реальности там масса отличий, и функциональность RTADS шире функциональности TADS 2. Прочитайте первые 3 главы руководства, после чего уже можно создавать свою тестовую игру на русском языке. Англоязычные примеры вас всё равно не научат работе с падежами, генератором падежных форм, созданию автоматически склоняемых и спрягаемых сообщений и прочему.

Неактивен

1    0    #3
29.08.2018 15:18

Nikita
Модератор (+404, -135)
Зарегистрирован: 29.10.2016
Сообщений: 139

Re: Непонятные ситуации с RTADS

Kephra написал:

В смысле? Интерпретатор-то ставиться на компуктер именно TADS 2, или есть ещё RTADS? Может имелось ввиду: подключаемые русские библиотеки, где эта фича есть? Я с ними и скомпилировал.

Нет, интерпретатор единый. Ну разве что для современного RTADS выше 17 релиза нужен минимум 2.5.8. RTADS - это именно альтернативная стандартная библиотека для общей инфраструктуры TADS 2.

Если у вас с русскими библиотеками нет полужирного начертания названий локаций, значит вы не полностью их подключили. В частности, не подключили модуль extendr.t.

Во вложении к этому сообщению прикрепляю шаблон игры, где можно посмотреть, как подключаются русские библиотеки и какие символы предпроцессора нужна задать. Ориентируйтесь на него. Подключение нескольких модулей закомментировано, потому что они по отношению к текущему 27 релизу RTADS внешние или необязательные.

Переведённый «Золотой череп» с исходным кодом можно взять на IFwiki, но я бы не советовал прямо учиться по его коду, потому что он довольно грязноват и из него не вычищены специфические вещи для английской версии, типа свойств именования с артиклем, которые для русского языка не нужны.


Прикрепленные файлы:
TADS Source File.T, Размер: 1,835 байт, Скачано: 608

Неактивен

1    0    #4
29.08.2018 16:46

Nikita
Модератор (+404, -135)
Зарегистрирован: 29.10.2016
Сообщений: 139

Re: Непонятные ситуации с RTADS

Kephra написал:

Это нормально, что в воркбенче ошибки на русском выводятся кракозабрами?

Ну это нормально в том смысле, что является известной проблемой некоторых версий Workbench. Если правильно помню, то вот в этой версии такой проблемы быть не должно. Однако с IDE вообще много нюансов. Я предложил бы вам не тратить жизнь на их познание в самом начале, когда возможно после первого знакомства с платформой она вообще вам не подойдёт, потому что в принципе подходит далеко не всем. Можете поставить TADS Toolchain, где всё проще и есть всё необходимое в одном месте. Развесистую IDE вы потеряете, но к ней при желании сможете вернуться позже, когда она реальна понадобится для отладки сложного кода или чего-нибудь в этом роде (они могут быть установлены вместе на одном компьютере)

Откровенно говоря из всех разработчиков (R)TADS, которых я знаю, только двое в какой-то момент использовали Workbench именно как основной инструмент для написания кода и сборки проекта. Потом один из них всё равно перешёл на Notepad++ и сборку утилитами командной строки, используя Workbench только для отладки сложных ошибок, а другой сначала написал психоделическую игру на URQ, а потом вообще перестал что-либо писать, видно получив страшную психологическую травму. В общем выжившие и закрепившиеся на платформе TADS-авторы на практике оказываются слишком суровы, чтобы писать код в IDE и делают это в текстовых редакторах, собирая проект командными файлами. TADS Toolchain - это по сути примерно то же самое, но в чуть очеловеченной форме, доступной не технарям, ну и позволяет быстро собрать свои первые пробы без предварительного боя со средой разработки.

Kephra написал:

Зачем его подключать? Как он работает? Я в будущем намерен использовать CaseGen (генератор падежных форм), или назначение generator.t в другом?

Прочитайте статью про RTADS в IFwiki, ну и обратите внимание на два листинга из раздела "Создание предмета". generator.t нужен для того, чтобы писать так компактно, как показано во втором листинге. Кроме того, у встроенного генератора более совершенные алгоритмы, чем у внешнего, так как он сначала был портирован из внешнего, а потом несколько раз дорабатывался, тогда как внешний с 2003 года не развивался. Принципы работы со встроенным падежным генератором описаны в самой первой главе руководства RTADS.

Когда вы собираете игру в отладочном режиме в Workbench, встроенный генератор специально показывает вам сгенерированные словоформы, чтобы вы могли проверить корректность генерации. О работе с Workbench и режимах её использования можно подробнее почитать в приложениях E и M, если уж вы хотите научиться с ней работать. Если всё же нет желания использовать встроенный генератор падежных форм, то тогда надо убрать из кода символ препроцессинга GENERATOR_INCLUDED и подключение библиотеки generator.t.

Неактивен

0    0    #5
29.08.2018 19:15

Nikita
Модератор (+404, -135)
Зарегистрирован: 29.10.2016
Сообщений: 139

Re: Непонятные ситуации с RTADS

Kephra написал:

А ничего что эта версия 2.5.14, когда последняя с сайта RTADS 2.5.16?

Последние версии вообще 2.5.17 и 3.1.3, но это, действительно, не очень важно. Это общие номера релизов платформы, тогда как релиз может собираться по разным причинам: от изменения стандартных библиотек до правок в интерпретаторе. Инфраструктурная составляющая TADS является универсальной для двух актуальных поколений платформы, то есть интерпретатор HTML TADS и IDE Workbench используются как для TADS 2, так и для TADS 3. В последних обновлениях Workbench основные изменения как раз касаются поддержки TADS 3, тогда как RTADS базируется на TADS 2 и к нему всё это имело мало отношения. К тому же итоговый результат в виде игры определяется не инструментом редактирования кода, а библиотеками и компилятором. Библиотеки у вас в любом случае внешние от RTADS, а с их сборкой справится даже компилятор 2.5.9 (если без встроенного генератора, то и ниже).

Kephra написал:

Я собираюсь пользовать Sublime Text, мне этот копролит воркбенч (окаменелый экскремент) нафиг не нужон, только надо подключить компилятор, но это потом.

К сожалению, для Sublime Text нет готового варианта подсветки кода TADS 2, а только TADS 3. Впрочем, если для вас это не принципиально, то проблемы нет. Лучше всего подключать к редактору библиотеки как раз из TADS Toolchain (поддиректория libs в директории установки) - там последняя версия с правками, которые должны были бы войти в 28 релиз. Про опции и параметры компилятора, чтобы подключить его к вашему редактору, см. приложение D. Если вы перейдёте на консольную сборку, то про все эти нюансы Workbench можете забыть. В принципе и отладчик существует в консольном варианте.

Kephra написал:

А вот оно как, было бы хорошо добавить это примечание на сайте для всех внешних генераторов.

В принципе, это следует из заметок к релизам в архиве библиотек и написано на IFwiki. Однако сайт RTADS, действительно, несколько отстал от жизни, так как основной ментейнер платформы находится в бессрочном отпуске. Фактически сейчас даже не выпущен обновлённый релиз с последними исправлениями, которые лежат в TADS Toolchain дополнительным модулем Patcher. Но TADS всегда тяготел к форме масонской ложи, где все всё знают и не особо стремятся привлекать новых людей, так как считается, что преодоление всех начальных трудностей - это как обряд инициализации, доказывающей, что человек реально способен писать на этой платформе. Это заметно даже по руководству, которое после 3 главы резко меняет тон изложения, отсекая случайных людей. Кто-то вообще настолько просвещён, что занимается бесконечным написанием и доработкой игр без итогового публичного релиза. Такие игры ходят по рукам как тайные протоколы, некоторых не удалось даже на Парсерфест выманить.

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

Kephra написал:

Не знаю в чем было дело. Но после того как я перезаписал файл игры в кодирове Cyrilic (win 1251) было в UTF-8 и словоформы больше не выводятся, также если скомпилировать для дебага.

Да, основная кодировка RTADS - это Windows 1251. Если нужно собирать в другой кодировке, то нужно перекодировать и подключаемые библиотеки, то есть все модули программы должны иметь одну кодировку.

Неактивен

0    0    #6
29.08.2018 22:59

Nikita
Модератор (+404, -135)
Зарегистрирован: 29.10.2016
Сообщений: 139

Re: Непонятные ситуации с RTADS

Kephra написал:

Тем не менее, на этом форуме в ветке RTADS люди сильно отзывчивые.

Ну, откровенно говоря, я практически уверен, что вы быстро сойдёте с дистанции. RTADS - это марафон, а вы взяли темп как спринтер со своей интерактивной картой. Я уже сделал ставку против вас.

TADS - это вообще платформа для поклонников парсеров старой школы в лучших её проявлениях, так что не успеете моргнуть, как вас здесь сожрут за попсу. Возможно даже прямо я. Это как есть Heavy Metal, тоже являющийся как и парсеры жанром из 80-х, но который играется и слушается до сих пор, продолжая своё развитие. На все же новомодные веянья, типа R&B или рэпа, металлистам плевать, хотя там больше аудитория и всё такое. Просто используется иное мерило успеха и иные эстетические предпочтения и ценности на основе сильных внутренних убеждений, не прогибающихся под толпу. В общем в TADS принято чтить канон и ковать самый прочный парсерный металл. Я вот вас регулярно отсылаю к руководству, как священно служитель к писанию, ну так про это там тоже есть в приложении A. :-)

Kephra написал:

А интерпретатор прочитает? UTF-8 он не может.

Собрать-то можно в любой кодировке, но у большинства интерпретаторов с UTF-8 начинаются проблемы, особенно с вводом команд, так как от TADS 2 они это не ожидают. Возможно QTads переварит, но закладываться на это вряд ли стоит. Используйте Windows 1251 - это консенсус, при котором проблем меньше всего. Отходить от этого имеет смысл только в очень специфических случаях, типа сборки чистой DOS-версии, чтобы запустить её онлайн в DOSBox на JavaScript. Задачи отображения расширенного набора символов решаются через мнемоники и таблицы дополнительных символов (см. приложения J и L).

Неактивен

1    0    #7
30.08.2018 03:02

Nikita
Модератор (+404, -135)
Зарегистрирован: 29.10.2016
Сообщений: 139

Re: Непонятные ситуации с RTADS

Kephra написал:

Оценю прелесть игры без карты, и прочей ереси, и не стану более запариваться по этому поводу.

Я в своё время писал Rogue-подобный парсерный квест, где основной геймплей был построен на том, что надо было ходить по процедурно генерируемому лабиринту с однообразными локациями без всякой карты, зато у персонажа был мел, которым он мог писать на стенах. В итоге, я сам в собственную игру до сих пор периодически играю, и главный фан именно в том, чтобы как можно быстрее пройти без всякой карты, особым образом помечая путь. Так что отсутствие карты в сложном для навигации мире может быть концептуальным. В остальных случаях я считаю, что это просто личный вызов для автора игры сделать мир забавным и запоминающемся: на подходе к кабаку на улице начинают встречаться лежащие бесчувственные тела и с соответствующей стороны слышатся пьяные крики, со стороны трущоб несёт зловонием, в публичном доме сидит поп из церкви на соседней улице и так далее. Игрок проникается неявным смысловым контекстом и начинает лучше ориентироваться.

Kephra написал:

Код взят из мануала

Скорей всего, вы в исходном коде пропустили строку

#define GENERATOR_INCLUDED

Нажмите контекстное меню , подменю "Создать" и там выберете "TADS Source File", после чего TADS Toolchain создаст рабочий шаблон со всеми нужными подключениями. Дальше уже можете в нём создавать объекты мира. Оставьте только startroom как первую локацию.

Если уверены, что у вас всё сделано правильно, но компилируется с такой проблемой, то покажите весь код (можно прикрепить .t файл к сообщению).

Кстати, в noun и adjective в принципе не обязательно дублировать те слова, которые уже есть в desc, они туда автоматически пропишутся генератором, когда он у вас заработает. Достаточно туда прописывать синонимы и остальные существенные слова описания из ldesc. То есть для вашего кода в объекте черепа noun и adjective вообще можно было бы не писать, так как всё охвачено desc, а в пьедестале ограничиться только синонимом "постамент".

Неактивен

0    0    #8
30.08.2018 15:06

Nikita
Модератор (+404, -135)
Зарегистрирован: 29.10.2016
Сообщений: 139

Re: Непонятные ситуации с RTADS

Kephra написал:

Я конечно сомневаюсь что генератор работает безупречно, но если его можно использовать в 90% случаях, тогда круто.

Не безупречно, но на практике точно в более чем 90%. В принципе, вручную мне приходилось задавать словоформы для хотя бы одного объекта даже не в каждой игре. То есть на сотни объектов несколько единичных случаев, по статистике получается более 99%. Конечно, если писать что-нибудь типа фэнтези со специфическими именами собственными, то процент там, скорей всего, будет падать.

Kephra написал:

А это нормально? Что ещё за А? Куда-то подевалась Н. Стало так сразу после использования генератора.

Это опять же нормально в том смысле, что является известной проблемой. Если вы всё-таки воспользуетесь шаблоном игры из TADS Toolchain, то там, помимо прочего, будет и подключённый комплект библиотек Patcher, где находятся исправления, которые должны были бы войти в релиз 28 RTADS, который так и не был собран и выпущен. В частности, там исправлена и эта проблема с именованием главного героя при подключённом падежном генераторе. В общем возьмите для проекта "шапку" кода из шаблона TADS Toolchain, там за вас уже обо всём позаботились.

Неактивен

1    0    #9
30.08.2018 20:09

Nikita
Модератор (+404, -135)
Зарегистрирован: 29.10.2016
Сообщений: 139

Re: Непонятные ситуации с RTADS

Kephra написал:

Я где-то читал, вроде в документации к «TADS Toolchain», что уже всё пропатчено и отдельно его подключать не надо

Patcher подключён в шаблоне TADS Toolchain. Закомментирован он был только в том файле, который я выкладывал вчера на форум, потому что тогда вы ещё пытались собирать в Workbench на голых библиотеках релиза 27.

Kephra написал:

Значит, если все-таки надо подключать патч, может надо и спелчекер?

spellchecker - это библиотека, которая пытается исправлять описки в командах, типа пропущенных или перепутанных букв в названиях действий и именах предметов, например, если игрок введёт "взть чкреп", то игра сможет автоматически переправить это на "взять череп" и исполнить. Некоторым авторам не нравится, что исправления могут быть не всегда в тему, то есть spellchecker подберёт знакомое слово, близкое к введённому, но оно окажется не тем, которое имелось ввиду. Тут уже каждый решает сам, что ему кажется более подходящим поведением игры. Когда spellchecker подключён, то в игре появляется команда "орфо", которой режим автоисправления включается и выключается. Можно, например, подключить spellchecker, но по умолчанию выключить автоисправление, тогда этот выбор будет уже за игроком, только надо где-нибудь в игре написать, что у него в принципе есть такая возможность.

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru