Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
18.01.2008 22:54

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

Тон

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

Что скажешь, ГрАнд?
Уже достаточно изменений накопилось, по-моему...

Неактивен

0    0    #2
18.01.2008 23:30

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

меньше слов

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

Вот именно, что много необкатанных и недоделанных изменений.
Сообщения для первого лица адаптированы не все;
Орфография работает не так как положено (считаю, что в справочной области должны быть только видимые предметы, а также не стоит обрабатывать слишком короткие слова). Также не понял, решили ли вопрос с выскакивающим сообщением;
Вывод догадок системы как следует не протестирован;
Хочу автоматизировать определение приглагольного падежа (type).

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

Неактивен

0    0    #3
04.02.2008 16:32

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

меньше слов

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

Просьба протестировать www.rtads.org/libr25beta.rar.
Хотел сделать автоматическое спряжение глаголов, но это ещё изрядно времени займет. Попробуйте разные лица ГП!

Неактивен

0    0    #4
05.02.2008 21:37

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

меньше слов

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

"дубину of стража"

Исправил, залил новую версию.


Который "дубину of стража" вы имеете в виду, "левый скипетр стража" или "правый скипетр стража"?

Синонимы могут быть разных полов и чисел. Тут либо смириться, либо свести сообщение к абстрактному "Который из объектов "дубину стража" вы имели в виду, ... " или "Упоминая "дубину стража", вы имели в виду: ...  "

>ударить гоблина топором
Я не вижу здесь объект "гоблина топором".

Код гоблина и топора, пожалуйста.

Неактивен

0    0    #5
07.02.2008 10:17

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

меньше слов

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

Обновил бету библиотеки. Прошу изучить и помучать функцию glok. На этом принципе можно сделать встроенный генератор падежей.
http://www.rtads.org/libr25beta.rar

Полезный для проверки код:

Код:

pers: object
setall(num)=
{ 
  isThem:=nil; 
  self.lico:=(num-1)/2+1;
  if (num%2=0) self.isThem:=true; 
}
;

sprag: function(num1, num2, str)
{
  local i:=1;
  while (i<=6) 
  { 
    pers.setall(i);
    glok(pers,num1,num2,str);
    " ";
    if (i%2=0) "| "; 
    i++;
  }
 "\n";
} 

sprag1: function(str)
{
  local i:=1;
  while (i<=6) 
  { 
    pers.setall(i);
    glok(pers,str);
    " ";
    if (i%2=0) "| "; 
    i++;
  }
 "\n";
} 

startroom: room  
ldesc = {
sprag(1,1,'мож'); 
sprag(3,1,'хот'); 
sprag(2,1,'вид');
sprag(2,1,'сид');
sprag(2,1,'леж');
sprag(1,2,'нес');
sprag(2,1,'нос');
sprag(2,1,'наход');
sprag(1,1,'зна');
sprag(1,1,'дума');
sprag(1,1,'име');
sprag(2,2,'выгляд');
sprag(1,1,'помога');
sprag(1,1,'представля');
sprag(1,2,'пойд');
sprag(1,1,'вылез');
sprag(2,2,'сто');
sprag(1,1,'слез');
sprag(1, 1,'пахн'); 
sprag(2,2,'говор');
sprag1('хотеть'); 
}
;

Неактивен

0    0    #6
18.03.2008 19:42

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

меньше слов

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

Не могу воспроизвести этот баг. Видимо, уже исправлен.

Неактивен

0    0    #7
23.03.2008 05:48

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

меньше слов

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

Вуаля!

Генератор склонений подключен к РТАДС, а также ещё некоторые новые фишки.
Прошу жесточайшим образом протестировать!
Теперь можно самому на ходу настраивать правила, так что делитесь наработками.

скачать.

Неактивен

0    0    #8
29.03.2008 05:24

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

меньше слов

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

Видимо, сейчас актуальнее иные вещи. Так и быть, поддамся конъюнктуре:

Код:

brosok: function()
{
  local i, maxdie=6, sides=6, total=0;
  "\nБросок, результат: \n";
  for (i:=1; i<=maxdie; i++)
  {
    local res = _rand(sides);
    " <<res>>";
    total+=res;
  }
  "\nИтог: <<total>>\n";
}

startroom: room  
sdesc = "<b>Бросалка кубиков</b>" 
ldesc = 
{
brosok();
"\nНажмите пробел для нового броска, либо любую иную клавишу для выхода. ";
while (inputkey()=' ') brosok();
quit();
}
;

Неактивен

0    0    #9
03.04.2008 09:29

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

меньше слов

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

Обновил бету. Задавайте вопросы, если что не ясно.
скачать 25 релиз бета
Для использования скинуть все в папку с библиотеками (как минимум обновить advr.t, где есть новая функция для работы генератора, и скопировать библиотеку generator.t).

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

Код:

replace commonInit: function
{"\H+";}

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

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

Что ещё не сделано: генерация склонений короткого названия, обезЁживание лексем, оптимизация кода (так скажем, не шустрый).

Неактивен

0    0    #10
04.04.2008 19:26

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

меньше слов

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

Да, 25. Гляжу в будущее, знаете ли... roll

Неактивен

0    0    #11
09.04.2008 19:40

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

меньше слов

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

Хм. Это точно была последняя версия? Уже в прошлый раз не должно было возникать.
Выкладываю ещё одно обновление. Изменился только файл генератора.

Подоптимизировал, но все равно 800 миллисекунд на 113 слов без вывода на экран...
Туду для себя - ввести ключ однократного прохода в функции замены.


у меня от твоего генератора голова ходит циркулем.

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

sdec, rdesc... pdesc - все будут.

Неактивен

0    0    #12
14.04.2008 18:38

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

меньше слов

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

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

Чтобы увидеть какое из правил было задействовано, нужно раскомментировать  строку
//  generator.detailed:=true;

1 - индивидуальное правило, 2 - общий блок правил. Второе число - порядковый номер правила. После каждого фрагмента в комментарии написана его длина для упрощения ориентирования. Не забывайте изменять эти значения после внесения правокю

Неактивен

0    0    #13
14.04.2008 19:29

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

меньше слов

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

Можно начинать пользоваться. Неработающие варианты публиковать здесь. Если до релиза библиотеку не исправят, то просто вручную прописать правильный вариант. Буквы-флаги вряд-ли изменятся.

Чтобы было яснее - склонения формируются при запуске игры, но внутренне они принимают тот вид, который мы всегда ранее задавали. Библиотеку обновил, исправил "восточное" и "старинное", качать  там же.

Неактивен

0    0    #14
18.04.2008 19:53

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

меньше слов

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

Gremour написал:

Прилагательное 'голубое/1с' вызывает слом (выход за границы массива).

Качай свежую версию, ранее исправил.

Неактивен

0    0    #15
07.05.2008 14:49

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

меньше слов

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

Извиняюсь за задержку - потихоньку пишу.
В TADS значения noun хранятся не упорядоченно, оригинальный порядок сохранить не удастся (если я правильно понял о чем идет речь). Сам же генератор выдает список склонений в обычном порядке.

Неактивен

0    0    #16
10.07.2008 12:46

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

меньше слов

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

fireton написал:

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

Столь внезапный и коварный вопрос лишил меня дара речи.

Инструкции в комментариях библиотеки. Готов ответить, если что не ясно.

Неактивен

0    0    #17
10.07.2008 14:58

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

меньше слов

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

Что означает запись (4)ки? Или (у6)и? Или (.)ы?

"(4)ки" обозначает, что сначала эта цифра будет заменена на строку из следующей таблички:

Код:

// задаем символьные множества
symbols=
    [['0' '[бвдзлмнпрстфц]'] 
    ['1' '[еуюа]'] 
    ['2' '[бвдзлмпрсфц]']
    ['3' '[бвгджзнрц]']                       //звонкие
    ['4' '[чшщц]']                                //шипящие
    ['6' '[бвгджзйклмнпрстфхцчшщ]']     //согласные
    ['8' '[аеёиоуыэюя]']                        //гласные
  ]

В данном случае мы получим "([чшщц])ки". Далее к этой строке автоматически будет добавлен значок '$', обозначающий конец строки.  Программа будет сверять лексему на соответствие этому шаблону (о поиске с регулярными выражениями).  В замене можно использовать обратные ссылки: $1 - подставить то, что было в первой скобке, $2 - что во второй, и т.д.. По умолчанию, будет изменяться весь найденный шаблон, поэтому неизменяемые части нужно захватывать скобками и вставлять в замену.

"(у6)и" - "(у[бвгджзйклмнпрстфхцчшщ])и"
"(.)ы" - в соответствии с синтаксисом регулярных выражений, точка - это любой одиночный символ.


Рассмотрим правила:

Код:

rrules =
    [
    ['2F'    'йки'  'ек']
...

При множественном числе и женском роде, всё оканчивающееся на 'йки' в род. падеже будет оканчиваться на 'ек'.
Пример: рейки -> реек

Код:

commonrules1 =
...
['2'    '(6)на'    '$1ен'    '$1нам'    '$1на'    '$1нами' '$1нах'],  // брёвна, 6 -согл.
...

Ранее были другие условия, если не сработали, работает это.
Множественное число, окончание '(6)на' -> '([бвгджзйклмнпрстфхцчшщ])на' :
Р.П.    '$1ен'
Д.П.  '$1нам'
В.П.    '$1на'
Т.П.    '$1нами'
П.П.  '$1нах'

Пример:
окна -> окен, окнам, окна, окнами, окнах

Как мы видим, что в родительном падеже есть ошибка. Такая же ошибка была бы, если бы мы ввели 'волокно'. Значит, нужно либо исправить это правило, либо прописать исключение для родительного падежа.

Код:

rrules =
    [
    ...
    ['2'    'кна'  'кон']
    ...

Вероятно, потом это же правило придется расширить, если обнаружатся сходные проблемы. Расширить, потому что исключения имеют склонность появляться группами в отдельных падежах, при отдельных окончаниях и числе/роде. Уникальные исключения бывают редко.

Неактивен

0    0    #18
14.07.2008 20:02

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

меньше слов

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

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

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

Неактивен

0    0    #19
14.07.2008 21:02

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

меньше слов

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

Да, извиняюсь, не обновлял. Ещё есть что дорабатывать.

Неактивен

0    0    #20
15.07.2008 06:43

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

меньше слов

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

Flint, спасибо, что подсказал "preinit"!
Эта функция выполняется после компиляции, но результат сохраняется в игровом файле.  Если не выводить отчет об генерации, то игровой файл загружается сразу. Важен порядок загрузки библиотек. Если заменять функцию в stdr.t, то генератор нужно подключать после, если вставлять код в preinit определенный в stdr.t - перед.
Текстовый вывод в preinit работать не должен, а потому все выводится в отчет компилятора, что приводит к зависанию при большом количестве слов. 
В общем, с этой функцией не все однозначно, ну буду пытаться.

О твоем коде:
здорово, но описания генерировать из лексем - это... как шубу в трусы заправлять
Должно быть наоборот - пишешь sdesc="останки/2 многоцелевого/п- робота/п- U1001/пу-", а результат:

Код:

sdesc="останки многоцелевого робота U1001"
rdesc="останков многоцелевого робота U1001"
ddesc="останкам многоцелевого робота U1001"
vdesc="останки многоцелевого робота U1001"
tdesc"останками многоцелевого робота U1001"
pdesc="останках многоцелевого робота U1001"
adjective='многоцелевого' 'многоцелевого#r' 'робота'  'робота#r'  'U1001'  'U1001#r' 
noun='останки' 'останков' 'останкам' 'останками' 'останках' 'останкам#d' 'останками#t'
'U1001'

/пу- будет обозначать, что нужно добавить и лексему прилагательного и существительного, но не склонять (-)

Ещё пример: "зеленое/пс вещество/с из носовой/п- полости/п-"

Код:

sdesc="зеленое вещество из носовой полости"
rdesc="зеленого вещества из носовой полости"
...
adjective='зеленое' 'зеленого' 'зеленому' 'зеленому#d' 'зеленым' 'зеленым#t' 'зеленом'
'носовой' 'носовой#r' 'полости'  'полости#r' 
noun='вещество' 'вещества' 'веществу' 'веществом' 'веществе' 'веществу#d' 'веществом#t'

/c - средний род

Неактивен

0    0    #21
16.07.2008 10:30

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

меньше слов

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

Flint, спасибо. Проверку _debug собирался ввести как дополнение, не думал, что окажется остро необходимым.
addwordru(obj, prop, str); - тоже отлично, не задумывался, что может понадобиться

Неактивен

0    0    #22
16.07.2008 16:37

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

меньше слов

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

Выложил доработанный генератор. В библиотеке только generator.t и stdr.t.

Работает так:

Код:

trava: item
    location = startroom
    gdesc = '"чертова/1пж" трава/1ж из Нового/п- Света/п-'
    noun= 'табак/1м' 
ldesc="Бурые скрученные листья кучкой лежат на столе."
;

#r пока не ставит, и части речи, исходя из положения в строке, не определяет.

P.S. обновил после сообщения Фаертона. Поменял строку gdesc  с двойных кавычек на одиночные.

Отредактировано GrAndrey (16.07.2008 17:59)

Неактивен

0    0    #23
16.07.2008 18:12

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

меньше слов

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

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

Неактивен

0    0    #24
17.07.2008 13:11

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

меньше слов

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

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

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

Неактивен

0    0    #25
17.07.2008 20:40

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

меньше слов

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

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

Неактивен

Powered by PunBB
© copyright 2001–2019 iFiction.Ru