Начиная с версии 0.9.2.8 beta возможна вставка выражений на естественном языке в код игры.
Для анализа выражений в коде игры использует тот-же парсер, что и для команд в процессе самой игре.
Выражения ЕЯ могут встраиваться в конструкции языка программирования.
Выражения ЕЯ не могут встраиваться в вычисляемые выражения - формулы, присвоения и т.п.
В конце выражения ЕЯ обязательно должна стоять точка.
Парсерная ошибка в коде приравнивается к синтаксической ошибке и приводит к прерыванию выполнения кода.
Выражения ЕЯ в коде эквивалентно оператору "<" для объекта this.
выполнение строки с синтаксисом:
команда на ЕЯ.
эквивалентно выполнению операции:
this < "команда на ЕЯ"
Неактивен
Скачал ТОМ, попытался разобраться... Не очень получилось, если честно.
Если б какие-нибудь уроки были, о создании игры с нуля...
И, как я понимаю, словоформы задавать приходится вручную, т.е. ни генератора словоформ, ни утилитки никаких нет.
Неактивен
fireton написал:
Скачал ТОМ, попытался разобраться... Не очень получилось, если честно.
Если б какие-нибудь уроки были, о создании игры с нуля...
Набор примеров есть на ифвике - tom_sample.rar
Там примеры на различные темы, но без использования стандартной библиотеки.
Пошаговые уроки о создании игры с нуля наверное имеет смысл делать на основе стандартной библиотеки, которая всё еще в разработке...
В составе самой библиотеки есть тест и пара простых игр, можно попробовать делать по аналогии с ними.
В любом случае прийдется разбираться самостоятельно - удобочитаемого вводного материала пока к сожалению нет.
С удовольствием готов отвечать на любые возникающие вопросы - в данный момент я в отпуске, поэтому сейчас самое время
fireton написал:
И, как я понимаю, словоформы задавать приходится вручную, т.е. ни генератора словоформ, ни утилитки никаких нет.
Платформа не имеет жестко заданных парадигм словообразования. Библиотеки и даже отдельные игры могут применять свою собственную систему генерации словоформ и их согласования. Поэтому утилитку можно сделать только для стандартной библиотеки, которая всё еще в разработке...
Для существительных и прилагательных можно взять алгоритм генератора рТАДСа, если GrAndrey разрешит.
Для глаголов все сложнее... но новые глаголы нужны не так частно.
Неактивен
noname написал:
насколько я понимаю, утилитками тут не обойдёшся- нужны словари.
Одно другому не мешает, особенно если учесть что словари - ну ооочень дальняя перспектива.
Неактивен
наименование = "пещер%; ЖрЕчНдСи; Ип; Ип=а; Рп=ы; Дп=е; Вп=у; Тп=ой; Тп=ою; Пп=е;"
По отдельности, в принципе, понятно -- Жр - женский род, Рп - родительный падеж и т.д. Но вот непонятно, почему не всегда все ключи прописываются, или наоборот, после где-нибудь идет строчка this.род_число = "ЖрЕч" (или даже ЖрМрЕч)? Что означает первый Ип? Что означают Си и Пи (существительное/прилагательное? а что за "и")?
Нужны примеры с предметами в множественном числе, исчислимыми предметами, со сложными названиями (нож Васи, клубок ниток) и т.д.
Неактивен
Добавил ссылки на статьи http://ifwiki.ru/ТОМ:_Лексема и http://ifwiki.ru/ТОМ:_Морфологический_ключ
возможно это поможет...
Cheshire написал:
Но вот непонятно, почему не всегда все ключи прописываются
Потому что иногда можно сократить описание лексемы, не прописав некоторые ключи.
Например:
"пещер%; ЖрЕчНдСи; Ип; Ип=а; Рп=ы; Дп=е; Вп=у; Тп=ой; Тп=ою; Пп=е;"
эквивалентно
"пещер%; ; ЖрЕчНдСиИп; ЖрЕчНдСиИп=а; ЖрЕчНдСиРп=ы; ЖрЕчНдСиДп=е; ЖрЕчНдСиВп=у; ЖрЕчНдСиТп=ой; ЖрЕчНдСиТп=ою; ЖрЕчНдСиПп=е;"
Если для лексемы указан, например, женский род, то и каждая словоформа лексемы будет отнесена к женскому роду. В таком случае Жр достаточно указать один раз как свойство всей лексемы.
Cheshire написал:
или наоборот, после где-нибудь идет строчка this.род_число = "ЖрЕч" (или даже ЖрМрЕч)?
Это я сумел победить доработав парсер. В текущей версии в this.род_число = "ЖрЕч" никакой необходимости нет и можно забыть как страшный сон.
Cheshire написал:
Что означает первый Ип?
Первый Ип - это словоформа по умолчанию. Если Вы напишите
%{пещера}
на экран будет выведено
пещера
т.е. тоже самое, как если бы Вы написали
%{пещера*Ип}
Cheshire написал:
Что означают Си и Пи (существительное/прилагательное? а что за "и")?
Совершенно верно! Существительное имя , Прилагательное имя
Cheshire написал:
Нужны примеры с предметами в множественном числе, исчислимыми предметами, со сложными названиями (нож Васи, клубок ниток) и т.д.
Можно покопаться в играх, там это есть.
Принцип согласования по ключам тот же самый, только ключи подлиннее.
На самом деле механизм получился очень гибкий, думаю я сам еще не до конца осознал все его возможности...
upd:
Еще очень рекомендую разобраться с примером Морфология.tom (есть в наборе примеров)
Неактивен
Разбирался тут с ТОМ, и вот что заметил:
Я (ГГ) безприкословно слушаюсь всех. Например:
> зеркало, скажи "гоблин, скажи привет"
Зеркало: гоблин скажи привет
Ты: привет
или
> зеркало, скажи гоблин, возьми меч
Зеркало: гоблин возьми меч.
Ты взял меч из пещеры.
Почему ГГ так слушается других персонажей? Если они скажут ему убиться он тоже убъется?
Неактивен
Alexandr написал:
Почему ГГ так слушается других персонажей? Если они скажут ему убиться он тоже убъется?
Конечно
ГГ такой же персонаж как и все остальные NPC. Чтобы ГГ не слушал команд NPC нужно прописать метод
ГГ.свобода_воли(){ return нет }
Неактивен