Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #76
16.07.2008 16:47

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

Тон

Re: Новая версия библиотеки?

Клево! Спасибо! Будем пробовать...

Неактивен

0    0    #77
16.07.2008 18:12

GrAndrey
папа RTADS и Бяка (+50, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1201
Вебсайт

меньше слов

Re: Новая версия библиотеки?

Ещё "домашнее задание":
-хотя бы формально описать правила склонения сокращенных прилагательных типа "чертова"

Неактивен

0    0    #78
17.07.2008 11:50

Gesperid
Участник
Зарегистрирован: 25.02.2005
Сообщений: 106

Re: Новая версия библиотеки?

Стоит подумать о некоторой схеме тестирования генератора. Чтобы запустив тесты (например, батником) удостовериться, что новые правила не конфликтуют со старыми. То есть для каждого правила создавать два файлика: первый – со списком слов на это правило, второй – с ожидаемым результатом склонения генератором слов из этого списка.

Неактивен

0    0    #79
17.07.2008 11:55

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

Тон

Re: Новая версия библиотеки?

Вообще, автоматические тесты были б очень полезны. Чтобы собрать некий исходник, подать ему на вход файл с командами и записать отчет в файл, а затем сравнить с эталоном и убедиться, что ничего не отъехало.

Неактивен

0    0    #80
17.07.2008 12:05

Gesperid
Участник
Зарегистрирован: 25.02.2005
Сообщений: 106

Re: Новая версия библиотеки?

Не понял, ты говоришь о тестировании игры в целом (альфа-тесте) или о том же о чем и я (то бишь тестирование генератора)?

Первое на порядок сложнее, и нужно ли это при относительно скромных размерах создаваемых игр. Хотя и я об этом думал, было бы здорово запустить такой сценарий:

Код:

осм
BegParallel
1.
ю
взять бумеранг
с
2.
з
взять револьвер
в
3.
в
взять катану
з
EndParallel
убить злодея

И получить в ответ "OK" или "failed on 'взять револьвер' command".

Неактивен

0    0    #81
17.07.2008 13:05

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

Тон

Re: Новая версия библиотеки?

Я имел в виду автоматическое тестирование библиотеки в целом. Конечно, написать юнит-тест для всей advr.t довольно сложно, но будучи один раз создан, он поможет избежать регрессионных ошибок при добавление нового функционала или правке старого.

Т.е. поправил что-то, прогнал тест и убедился, что никакой функционал из стандартных определений не отвалился. Можно делать потихоньку - писать юнит-тесты для каждой порции функционала (напр. модуль "Темные комнаты и источники освещения", модуль "Спрятанные объекты" и т.п.) и потом объединять их.

Все это из области пожеланий, конечно. Я вот, например, ни за что сейчас не возьмусь за написание системы, позволяющей легко провести такое тестирование...

Неактивен

0    0    #82
17.07.2008 13:11

GrAndrey
папа RTADS и Бяка (+50, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1201
Вебсайт

меньше слов

Re: Новая версия библиотеки?

В ТАДС игры можно вводить список команд из файла через опции командной строки. При этом ничего на экран выводиться не будет, зато сразу кусок игры можно будет пропустить + можно увидеть, где застрял, если что-то сломалось. Естественно, строго линейно.

Проверка генератора не так сложна - всего-то создать файл с единственным предметом, в котором прописать всевозможные слова для проверки. При изменении правил запустить, результат сохранить в файл и утилитами сравнить с эталоном.

Неактивен

0    0    #83
17.07.2008 20:40

GrAndrey
папа RTADS и Бяка (+50, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1201
Вебсайт

меньше слов

Re: Новая версия библиотеки?

www.rtads.org/libr25beta2.rar - текущее состояние библиотек
Извини, Михаил, пока не добавил addwordru.

Неактивен

0    0    #84
23.07.2008 10:12

GrAndrey
папа RTADS и Бяка (+50, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1201
Вебсайт

меньше слов

Re: Новая версия библиотеки?

http://www.rtads.org/libr25beta3.rar - ещё обновление.

- Заработало распознавание ударного окончания по прописной букве, несколько исправлений правил генератора, введены правила для слов на -ец.
- Исправил вывод сформированных sdesc...pdesc
- Включил addwordru и delwordru.
- Местный падеж практически заменил все упоминания предложного падежа.

В выложенном advr.t недоработана функция parseNounPhrase. В принципе рабочая, но путает прямой и косвенный объект.

В комплекте - тест для генератора, а также немного доработанная библиотека меню.

Неактивен

0    0    #85
23.07.2008 10:38

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

Тон

Re: Новая версия библиотеки?

Спасибо, Андрей!

Неактивен

0    0    #86
23.07.2008 13:49

Flint
Участник
Зарегистрирован: 06.09.2007
Сообщений: 148

---

Re: Новая версия библиотеки?

То что нужно!
Большое спасибо.

Неактивен

0    0    #87
23.07.2008 17:56

GrAndrey
папа RTADS и Бяка (+50, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1201
Вебсайт

меньше слов

Re: Новая версия библиотеки?

Жду комментариев и предложений по юзабилити.

Например, думал дефайнами уменьшить количество переключений раскладки, но кириллица не катит.

Как на счет того, чтобы вместо апострафов ставить двойные кавычки при gdesc, а во время компиляции превращать в обычную строку?

Ещё есть задумка вынести лексемы с метками падежей в отдельные свойства объекта. Список лексем очистится, а количество разных свойств прибавиться. Куда-то можно сослать и "затравку" для генератора после её использования (gnouns и gadjective например).


Я ранее упоминал о скрипте для отладки игры. Подробнее написано здесь:
http://teladesign.com/tads-manual/tads-b.html в параграфе "Testing Your Game".
Вкратце:
mygame.exe -o walkthru.in  - записывает в файл команды по мере прохождения
htmlt2.exe -i walkthru.in -l walkthru.log mygame -запускает игру и вводит список команд, а выходящий текст записывает в файл.
Майкл Робертс предлагает сверять старые и новые результаты любой программой типа diff.

Хотел сразу на Вики, но она ещё лежит.

Неактивен

0    0    #88
23.07.2008 21:16

- VampirE -
Участник (+3)
Зарегистрирован: 22.06.2006
Сообщений: 101

Re: Новая версия библиотеки?

Нашел неприятный баг в генераторе:

Код:

yad: item
gdesc = 'пузырёк/1му с ядом/п-'
noun = 'пузырёк/1му'
ldesc = "Пузырек с ядом."
location = Me
isHim = true
;

В слове 'пузырёк' в случае с gdesc почему-то берется одно правило, где просто 'к', а в случае с noun все берется правильно - правило 'ёк'.

---

Нашел решение проблемы. Все дело было в неправильной работе регулярных выражений в коде нарезки gdesc:

Код:

while (ret:=reSearch('([/$&@№~%_+*#a-zA-Zа-яА-Я0-9-]+)|([][<>()!{}.,;"?\ ]+)', sdescstr), ret<>nil) 
         {
           sdesc_list+=ret[3]; 
           sdescstr:=substr(sdescstr,ret[1]+ret[2],length(sdescstr)); 
         }

Нужно просто добавить буковку 'ё' между первыми скобками. smile Будет что-то вроде:

Код:

while (ret:=reSearch('([/$&@№~%_ё+*#a-zA-Zа-яА-Я0-9-]+)|([][<>()!{}.,;"?\ ]+)', sdescstr), ret<>nil) 
         {
           sdesc_list+=ret[3]; 
           sdescstr:=substr(sdescstr,ret[1]+ret[2],length(sdescstr)); 
         }

Отредактировано - VampirE - (23.07.2008 22:10)

Неактивен

0    0    #89
24.07.2008 04:52

GrAndrey
папа RTADS и Бяка (+50, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1201
Вебсайт

меньше слов

Re: Новая версия библиотеки?

Спасибо!
Потрясающе, но факт: буква 'ё' не входит в диапазон регэкспа '[а-я]'. Аналогично для 'Ё' и '[А-Я]'.

Неактивен

0    0    #90
01.08.2008 17:22

GrAndrey
папа RTADS и Бяка (+50, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1201
Вебсайт

меньше слов

Re: Новая версия библиотеки?

http://www.rtads.org/libr25beta4.rar - налетай, торопись!  Теперь генератор работает ещё лучше, ещё правильнее!

Рекомендую ставить авторам. Для публикации игр лучше подождать релиза, а для разработки можно (и нужно!) пользоваться этими библиотеками.

Неактивен

0    0    #91
07.08.2008 23:17

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

Тон

Re: Новая версия библиотеки?

Добавлены takedesc и dropdesc. Теперь любому предмету можно назначить свой текст вместо банальных "Взят" и "Брошен" при взятии и бросании, соответственно.

Положил в SVN.

Неактивен

0    0    #92
08.08.2008 06:04

GrAndrey
папа RTADS и Бяка (+50, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1201
Вебсайт

меньше слов

Re: Новая версия библиотеки?

fireton написал:

Добавлены takedesc и dropdesc. Теперь любому предмету можно назначить свой текст вместо банальных "Взят" и "Брошен" при взятии и бросании, соответственно.

Насчет этого не уверен. Часто прописывается схема такого вида:

Код:

doTake(actor)=
{
  if (self.isonoriginalplace) 
  {
    "Ты выдрал *что-то* с его векового места. ";
     incscore(5);
     self.isonoriginalplace:=nil;
     self.moveInto(Me);
  } 
  else pass doTake; 
}

хотя правильнее вообще так:

Код:

doTake(actor)=
{
  if (self.isonoriginalplace) 
  {
    "Ты выдрал *что-то* с его векового места. ";
     incscore(5);
     self.isonoriginalplace:=nil;
  } 
  pass doTake; 
}

В последнем случае проводятся проверки массы и объема инвентаря, а стандартное "Взято" рефлексивно вызывает параксизм довольства у любого ИЛ игрока. Без этой фразы не сразу ясно, вежливый ли это отказ, или сообщение об успехе.

Единственная польза от takedesc и dropdesc - то, что можно сменить фразу по умолчанию. Но я с трудом представляю себе ситуацию, когда нужна менее универсальная фраза. Подбирать и бросать можно в любом месте и в любой ситуации, и расширенное описание может быть весьма неуместно.

В общем, я против. Кому нужно, тот сделает или спросит на форуме.

Неактивен

0    0    #93
08.08.2008 09:40

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

Тон

Re: Новая версия библиотеки?

Я не знаю про пароксизм довольства, но слово "взято" у меня вызывает ассоциации с "вес взят!". А "Брошено" - это ж просто жесть какая-то:

Код:

>положить хрустальную вазу на пол

Брошена.

Так и хочется добавить "осколки древней вазы весело зазвененели по полу..."

Кроме того, разные предметы "берутся" по-разному. Шелковый платок - одно дело, а мешок с песком - совсем другое...
Кстати, Эмили Шорт со мной согласна:

Удивительно просто, насколько может обогатить ощущение от игры написание особых реакций на обыкновенные действия. Как ощущается платиновый слиток, когда герой берет его в руку? Что персонаж чувствует, беря его? Разве нельзя написать ничего лучше, чем «Взято»?

И еще. Мои изменения никак не заденут тех авторов, которые будут писать "по-твоему". Но сильно помогут тем, кто хочет больше детализировать взаимодействия с объектами (мне, в том числе).

Отредактировано fireton (08.08.2008 09:44)

Неактивен

0    0    #94
08.08.2008 10:20

GrAndrey
папа RTADS и Бяка (+50, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1201
Вебсайт

меньше слов

Re: Новая версия библиотеки?

Детализация, это здорово, но как ты видишь описание выкладывания вазы в случайном месте?
"Ты аккуратно поставил вазу." Куда? На пол? Посреди поля? Баллансируя на канате?

Кстати, следующему же автору понадобится передать аргументы этому методу. Чтобы стандартное сообщение менялось в зависимости от актера и локации.

Ок, я оставлю, но это только одно из сотен усовершенствований, которые можно сделать. Если все их внедрять, библиотеки распухнут и станут совсем непонятными, потому как это все не покрыто мануалом (мы не высылаем отчет о всех наших нововведениях Валентину). РТАДС уже сейчас сложен для новичков, излишние доработки только усугубят ситуацию.

Неактивен

0    0    #95
08.08.2008 11:28

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

Тон

Re: Новая версия библиотеки?

GrAndrey написал:

Детализация, это здорово, но как ты видишь описание выкладывания вазы в случайном месте?
"Ты аккуратно поставил вазу." Куда? На пол? Посреди поля? Баллансируя на канате?

Если балансируя на канате, то нужно перекрыть у комнаты roomDrop - все предметы должны падать вниз. Для разных типов комнат можно определить разные классы и флажок в них, чтобы определить, куда ставишь. Все решаемо. Конечно, комбинаторный взрыв. Но если автор хочет идти на это, то пусть у него будут возможности. А если не хочет - у него всегда будут "Взято" и "Брошено".

Неактивен

0    0    #96
08.08.2008 12:53

Korwin
Гоблин, зеленый от недосыпа (+188, -16)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 796
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: Новая версия библиотеки?

GrAndrey написал:

Ок, я оставлю, но это только одно из сотен усовершенствований, которые можно сделать. Если все их внедрять, библиотеки распухнут и станут совсем непонятными, потому как это все не покрыто мануалом (мы не высылаем отчет о всех наших нововведениях Валентину). РТАДС уже сейчас сложен для новичков, излишние доработки только усугубят ситуацию.

+1


fireton написал:

... Все решаемо. Конечно, комбинаторный взрыв. Но если автор хочет идти на это, то пусть у него будут возможности. А если не хочет - у него всегда будут "Взято" и "Брошено".

+1

Вам хорошо, Вы монстры в программировании и ПОНИМАЕТЕ этот код. Не знаю, как другие авторы, но я тупо беру кусок кода, который работает, изменяю описание и вставляю в игру. К сожалению, частенько оказывается, что вставка в одном месте, требует серии изменений в других местах.  Я не знаю, что с этим делать. Почему-то мне кажется, что поиски ответа на вопрос КАК ЭТО ЗАПРОГРАМИРОВАТЬ достаточно далеки от интересных мне проблем КАК ВЫСТРОИТЬ СЮЖЕТ, КАК ИЗМЕНЯЕТСЯ ХАРАКТЕР ГЕРОЯ В ХОДЕ ИГРЫ И КАКИМИ СЛОВАМИ ДОЛЖНЫ ГОВОРИТЬ СИЛЬНО ЗЛЫЕ ХОББИТЫ...

Генератор порадовал, но это еще далеко от мечты о системе в которой приятно было бы творить. Но надежда греет. wink

Неактивен

0    0    #97
08.08.2008 13:57

GrAndrey
папа RTADS и Бяка (+50, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1201
Вебсайт

меньше слов

Re: Новая версия библиотеки?

fireton написал:

GrAndrey написал:

Детализация, это здорово, но как ты видишь описание выкладывания вазы в случайном месте?
"Ты аккуратно поставил вазу." Куда? На пол? Посреди поля? Баллансируя на канате?

Если балансируя на канате, то нужно перекрыть у комнаты roomDrop - все предметы должны падать вниз. Для разных типов комнат можно определить разные классы и флажок в них, чтобы определить, куда ставишь. Все решаемо. Конечно, комбинаторный взрыв. Но если автор хочет идти на это, то пусть у него будут возможности. А если не хочет - у него всегда будут "Взято" и "Брошено".

Все-таки уж слишком частное решение. Почему только "взять" и "бросить"? А кинуть? А одеть-снять?
Думаю, чем завтавлять авторов искать твой takedesc или учить его использовать, так лучше научить исправлять стандартное сообщение этим способом.  Выложить во все обучалки этот пример модификации.

Неактивен

0    0    #98
08.08.2008 14:12

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

Тон

Re: Новая версия библиотеки?

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

Возможно, ты и прав. Правда, заставлять я не собирался...

Пусть останется, хорошо? В следующий раз расширения библиотеки буду выносить на форум сначала.

Неактивен

0    0    #99
09.08.2008 16:50

- VampirE -
Участник (+3)
Зарегистрирован: 22.06.2006
Сообщений: 101

Re: Новая версия библиотеки?

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

Для себя обязательно возьму на заметку, если что-то буду писать - благо мне такое добавить в игру не составит труда. Самое простое - добавлять класс, скажем, для хрупких вещей и переопределить там метод drop. Но тогда глаголы "положить" и "бросить" должны вызывать разные реакции. Это даже идея для пазла. smile

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

Отредактировано - VampirE - (09.08.2008 16:51)

Неактивен

0    0    #100
09.08.2008 18:18

GrAndrey
папа RTADS и Бяка (+50, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1201
Вебсайт

меньше слов

Re: Новая версия библиотеки?

Вот что я надумал:
- extendr.t нужно прочесать и даптировать стоящее в основную библиотеку
- это, а также любые другие небольшие расширения вносить как модификации в новом extendr.t
При этом код должен сопровождаться подробным комментарием для чего, он и как используется

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru