fireton написал:
А вот скажи. Какая-то стандартная библиотека для твоей супер-платформы есть?
Библиотека будет строиться по модульному принципу.
К каждому модулю будет свой тест, демонстрирующий его работу.
В идеале автор сам будет решать, какие модули использовать, а какие можно выкинуть.
Предлагаю вниманию самый "нужный" модуль библиотеки - неиспользуемые глаголы.
Если какие-то глаголы упустил - пишите, добавлю
файл удалил - ниже есть более свежий
Отредактировано ASBer (24.07.2009 10:27)
Неактивен
"в этой игре не нужно подниматься вверх."
а где фраза, которая будет выводиться, если введён один из других глаголов не имеющих своей особенной фразы ошибки?
или тогда будет выводиться стандартное "это предложение непонятно!"?
ИМХО:
1. нужно в модуль добавить такую фразу, которая будет выводиться, когда использован глагол(определяется по вхождению слова в модуль библиотеки), НО обработка этого глагола не предусмотрена в этой игре, напр: "в этой игре вам не нужно ...ть" (с подставлением соотв формы глагола) UPD: всё, увидел!
2. для облегчения редактирования модуля(на случай, когда глаголов станет ооочень много) хорошо бы располагать глаголы в алфавитном порядке. щазз при таком порядке как есть мне трудно понять, какие глаголы из библиотеки РТАДС пропущены
жду-недождусь следующего модуля "минимальный" ( идти с з ю в, осмотреть, осмотреться, взять, выложить )
надеюсь, краткий и понятный текст подулей поможет мне освоить ТОМ, научиться составлять собственные модули и и спользовать их
Отредактировано noname (16.07.2009 23:10)
Неактивен
noname написал:
модуль "минимальный" ( идти с з ю в, осмотреть, осмотреться, взять, выложить )
Модуль "минимальный" будет содержать:
- классы: место (для локаций), предмет (для уникальных и счетных предметов), персонаж (для ГГ и НПС)
- объекты: ГГ - стандартный главный герой
- действия: осмотреть, осмотреться, идти, взять, положить, инвентарь.
- фразы: команда - для управления НПС в формате "НПС, сделай то-то"
В модуле не будет:
- Дверей, контейнеров, стульев, поверхностей и т.п.
- Проверок на вес/объем, темных комнат, источников света.
- Перемещений по компасу.
Все эти возможности будут в дополнительных модулях.
В модуле будет:
- 1, 2, 3 лицо для персонажей с автоматическим определением и подстановкой.
- возможность называть объекты как прилагательное+существительное во всех действиях.
- полный тест для проверки функциональности модуля.
P.S. на счет краткости и понятности обещать не буду, т.к. даже в таком объеме модуль получается не очень маленьким...
Отредактировано ASBer (19.07.2009 22:21)
Неактивен
Быстренько накидал модуль с картой и перемещениями по компасу - Map.tml
Теперь в библиотеке 3 модуля. Но все 3 сырыееее...
файл удалил - ниже есть более свежий
Отредактировано ASBer (24.07.2009 10:25)
Неактивен
ааа!!! он издевается!
> старик, дай себе ложку
Старик взял ложку со стола
И дал себе.
Неактивен
забавно
но трудно представить, что бы подобное беспрекословное выполнение приказов было распространённым явлением в какой-либо игре
если уж акцентировать внимание на общении, то - на диалогах с неписями
ask someone about something- очень неплохой вариант. литературность может заключаться в том, что игра сама подставит заранее составленный конкретный текст вопроса
прямая речь ИМХО слишком сложна для анализа. т е - сделать нормальный анализатор прямой речи на русском языке сложнее, чем написать квест
по-русски команды общения могут выглядеть как:
>[рас]спросить <кого-либо> о[б] <чём-либо> // напр: спросить старика о посохе
и сокращённый вариант:
<кто-либо>, <что-либо> // напр: старик, посох
в ответ старик может предложить тебе посох в обмен на яблоко, например
далее ГГ даёт яблоко старику, а старик в ответ даёт посох персонажу
попытка взять посох у старика самостоятельно должна приводить к неудаче (или к намёку проги: 'ты хочешь отобрать посох у старика?' в этом случае команда 'отобрать посох у старика' приведёт к другому варианту развития сюжета)
UPD
опять же интересна тема менюшек в диалогах
Отредактировано noname (22.07.2009 18:33)
Неактивен
В базовом модуле ограничений не будет. Ни на перемещения, ни на манипуляции с объектами, ни на командование НПСями.
Все ограничения будут накладоваться поверх базового модуля либо в других модулях, либо будут дописываться авторами.
Это нужно сугубо для прозрачности кода, потому что успешно выполнить действие возможно только одним способом, а не выполнить его можно по 1000 различных причин...
Неактивен
полностью согласен. поведение персонажей- это уже ложится на долю квестописателей
от платформостроителя можно ожилать разве что примеров
и удобных механизмов организации общения/взаимодействия и пр
Неактивен
В map добавил перемещения вверх/вниз (в тесте чердак в хижине).
noname, дождись пока я доделаю перемещения в библиотеке. В планах все то о чем ты написал.
Пока можешь делать карту не обращая внимания на отсутствие стен
файл удалил - ниже есть более свежий
Отредактировано ASBer (28.07.2009 13:26)
Неактивен
Добавил в библиотеку притяжательные местоимения, притяжательные возвратные местоимения и поддержку для притяжательных прилагательных.
Теперь парсер понимает команды в формате:
>осмотри его ложку
>осмотри мою ложку
>осмотри свою ложку
>осмотри дедову ложку
а также
>осмотри ложку деда
//удалил файл
Отредактировано ASBer (12.08.2009 16:04)
Неактивен
Обновил библиотеку:
- Отладил работу с веществом/материалом. (Смотри на столе в хижине краюху хлеба. Моток веревки должен быть устроен абсолютно аналогично. При этом хлеб можно назвать и как "хлеб", и как "краюха хлеба", и как "хлеб старика" и как "краюха деда")
- Действие "выложить" работает, хотя пока сильно недоделано.
- Добавил персонажам метод свобода_воли(). Как работает можно посмотреть в примере с лифтом - отправить лифтера из лифта теперь не получится.
//удалил файл
Отредактировано ASBer (12.08.2009 16:05)
Неактивен
Небольшие доработки:
- исправлена ошибка возникающая после неудачного открытия файлов;
- добавлены местоимения для предметов;
- добавлен механизм устранения неопределенности по классовым именам (местоимения в их числе).
> осм хлеб
Это обычная краюха хлеба.
> возьми это
Ты взял это со стола.
> дай ее ему
Ты дал старику краюху хлеба.
//удалил файл
Отредактировано ASBer (12.08.2009 16:07)
Неактивен
Переделал проверку рода и числа у предметов.
//
Для проверки рода и числа для предметов добавлено свойство "род_число", в котором должны быть перечислены все допустимые для предмета признаки рода и числа.
Например, для предмета "спички" род_число = "МрЖрЕчМч" - т.е предмет будет отзываться на слова "спичка", "спички", "коробок спичек", "она", "он", "они".
Проблема в том, что у предметов собственного рода нет и они могут называться различными словами с разным родом. (веревка - Жр, моток веревки - Мр).
Поэтому один и тот же предмет может сопоставляться с местоимениями различных родов - он (моток), она (веревка).
Чтобы не плодить лишних объектов, можно один и тот же предмет называть словами в единственном или множественном числе (спичка, спички).
//удалил файл
Отредактировано ASBer (12.08.2009 16:07)
Неактивен
Добавил действия "спуститься" и "подняться". (см.файл)
По поводу отображения предметов на столе - это решается подменой описания постамента.
Т.к. в библиотеке пока нет класса для поверхностей, подмену описания нужно сделать в самой игре.
Ну или дождаться появления соответствующего библиотечного класса...
--------------------------------------------------------------------------------
Прикрепленные файлы:
Map.tml, Размер: 6,996 байт, Скачано: 12
Неактивен
Немного доработал стандартную библиотеку:
- добавил выбор обращения к персонажу на "Вы" или "ты" (но возможно, что еще не все глаголы исправил).
- довел до ума поддержку личных местоимений - учитывается, как давно упоминался объект, в каком роде и числе он упоминался, упоминался он игроком или игрой, является объект предметом или персонажем.
- добавил предопределенную обработку для разрешения неоднозначности по классовым именам объектов - ChkClsName(). Это позволило избавиться от малопонятного свойства предмет.род_число, перенеся всю тяжесть обработки внутрь библиотеки.
- подчистил некоторые ошибки.
--------------------------------------------------------------------------------
Прикрепленные файлы:
Libs4TOM.rar, Размер: 191,841 байт, Скачано: 3
Неактивен
хижина
__Ветхая деревянная хижина. Все здесь очень старое, и непригодно для использования.
здесь есть стол и заплетенное паутиной окно.Вы находитесь тут и старик находится тут.®
ГГ> вверх
Вы поднялся в чердак
чердак
это некоторое место - чердак.
®.Вы находитесь тут.®
И если "в чердак" правится, как я понимаю, самим автором через выражение this.пред_в = "на",
то "поднялся" - недочет библиотеки.
Пожелание: добавить однобуквенные сокращения для "инв", "да" и "нет" ("и", "д", и "н"). Плюс, несколько действий разделять не только через " и ", но и через запятую (взять хлеб, взять ложку).
Неактивен
Cheshire написал:
И если "в чердак" правится, как я понимаю, самим автором через выражение this.пред_в = "на", то "поднялся" - недочет библиотеки.
Угу, все так.
Исправил глаголы для перемещений, для локаций в тесте прописал правильные предлоги и title.
Cheshire написал:
Пожелание: добавить однобуквенные сокращения для "инв", "да" и "нет" ("и", "д", и "н").
Это легко, сделаю чуть позже.
// сокращение "и" для инвентаря не получится - смотри ниже про "." и "и".
Cheshire написал:
несколько действий разделять не только через " и ", но и через запятую (взять хлеб, взять ложку).
Здесь трудность будет при обращениях к НПС :
>Старик, возьми хлеб, возьми ложку
первая запятая здесь разделяет не действия, а обращение и действие. Но я подумаю как это сделать.
--------------------------------------------------------------------------------
Прикрепленные файлы:
Libs4TOM.rar, Размер: 192,590 байт, Скачано: 1
Неактивен
Nex написал:
А важны ли запятые? Может, их просто игнорировать?
Для идеального парсера запятые, конечно, безразличны.
Но для парсера ТОМ в его теперешнем виде необходим признак разделения команды на отдельные действия.
Таким признаком является точка - "." и её синонимы, которые заданы в ст.библиотеке. ("и" - это синоним ".")
После того как команда разбита на части, для каждой части последовательно подбирается подходящий шаблон и знаки препинания при этом действительно игнорируются.
//update
В качестве домашнего задания:
Попробуйте с использование стандартной библиотеки сделать локацию "улица" с объектами "аптека" и "фонарь".
Реакция на команду
> Аптека. Улица. Фонарь.
должна быть интересной
Неактивен
Nex написал:
С точкой всё понятно, но точка - это не запятая.
Вот что предлагает Cheshire:
несколько действий разделять не только через " и ", но и через запятую (взять хлеб, взять ложку).
Сделать это "в лоб" - значит приравнять запятую к точке.
Неактивен
ASBer написал:
Вот что предлагает Cheshire:
несколько действий разделять не только через " и ", но и через запятую (взять хлеб, взять ложку).
Сделать это "в лоб" - значит приравнять запятую к точке.
Встраивать в парсер зависимость от расстановки запятых не стоит.
Если будет такая зависимость, то это сильно усложнит игру - парсер откажется понимать фразу без запятой в нужном месте или с запятой не в том месте. Игрокам это однозначно придется не по душе. Парсер должен быть как можно понятливее, это его главная задача.
Неактивен