А вот скажи. Какая-то стандартная библиотека для твоей супер-платформы есть?
Неактивен
fireton пока только в зачатке
Отредактировано ASBer (08.07.2009 19:57)
Неактивен
fireton написал:
А вот скажи. Какая-то стандартная библиотека для твоей супер-платформы есть?
Библиотека будет строиться по модульному принципу.
К каждому модулю будет свой тест, демонстрирующий его работу.
В идеале автор сам будет решать, какие модули использовать, а какие можно выкинуть.
Предлагаю вниманию самый "нужный" модуль библиотеки - неиспользуемые глаголы.
Если какие-то глаголы упустил - пишите, добавлю
файл удалил - ниже есть более свежий
Отредактировано ASBer (24.07.2009 10:27)
Неактивен
noname написал:
модуль "минимальный" ( идти с з ю в, осмотреть, осмотреться, взять, выложить )
Модуль "минимальный" будет содержать:
- классы: место (для локаций), предмет (для уникальных и счетных предметов), персонаж (для ГГ и НПС)
- объекты: ГГ - стандартный главный герой
- действия: осмотреть, осмотреться, идти, взять, положить, инвентарь.
- фразы: команда - для управления НПС в формате "НПС, сделай то-то"
В модуле не будет:
- Дверей, контейнеров, стульев, поверхностей и т.п.
- Проверок на вес/объем, темных комнат, источников света.
- Перемещений по компасу.
Все эти возможности будут в дополнительных модулях.
В модуле будет:
- 1, 2, 3 лицо для персонажей с автоматическим определением и подстановкой.
- возможность называть объекты как прилагательное+существительное во всех действиях.
- полный тест для проверки функциональности модуля.
P.S. на счет краткости и понятности обещать не буду, т.к. даже в таком объеме модуль получается не очень маленьким...
Отредактировано ASBer (19.07.2009 22:21)
Неактивен
Быстренько накидал модуль с картой и перемещениями по компасу - Map.tml
Теперь в библиотеке 3 модуля. Но все 3 сырыееее...
файл удалил - ниже есть более свежий
Отредактировано ASBer (24.07.2009 10:25)
Неактивен
ааа!!! он издевается!
> старик, дай себе ложку
Старик взял ложку со стола
И дал себе.
Неактивен
В базовом модуле ограничений не будет. Ни на перемещения, ни на манипуляции с объектами, ни на командование НПСями.
Все ограничения будут накладоваться поверх базового модуля либо в других модулях, либо будут дописываться авторами.
Это нужно сугубо для прозрачности кода, потому что успешно выполнить действие возможно только одним способом, а не выполнить его можно по 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
Неактивен
Cheshire написал:
И если "в чердак" правится, как я понимаю, самим автором через выражение this.пред_в = "на", то "поднялся" - недочет библиотеки.
Угу, все так.
Исправил глаголы для перемещений, для локаций в тесте прописал правильные предлоги и title.
Cheshire написал:
Пожелание: добавить однобуквенные сокращения для "инв", "да" и "нет" ("и", "д", и "н").
Это легко, сделаю чуть позже.
// сокращение "и" для инвентаря не получится - смотри ниже про "." и "и".
Cheshire написал:
несколько действий разделять не только через " и ", но и через запятую (взять хлеб, взять ложку).
Здесь трудность будет при обращениях к НПС :
>Старик, возьми хлеб, возьми ложку
первая запятая здесь разделяет не действия, а обращение и действие. Но я подумаю как это сделать.
--------------------------------------------------------------------------------
Прикрепленные файлы:
Libs4TOM.rar, Размер: 192,590 байт, Скачано: 1
Неактивен
Nex написал:
А важны ли запятые? Может, их просто игнорировать?
Для идеального парсера запятые, конечно, безразличны.
Но для парсера ТОМ в его теперешнем виде необходим признак разделения команды на отдельные действия.
Таким признаком является точка - "." и её синонимы, которые заданы в ст.библиотеке. ("и" - это синоним ".")
После того как команда разбита на части, для каждой части последовательно подбирается подходящий шаблон и знаки препинания при этом действительно игнорируются.
//update
В качестве домашнего задания:
Попробуйте с использование стандартной библиотеки сделать локацию "улица" с объектами "аптека" и "фонарь".
Реакция на команду
> Аптека. Улица. Фонарь.
должна быть интересной
Неактивен
Nex написал:
С точкой всё понятно, но точка - это не запятая.
Вот что предлагает Cheshire:
несколько действий разделять не только через " и ", но и через запятую (взять хлеб, взять ложку).
Сделать это "в лоб" - значит приравнять запятую к точке.
Неактивен
- Доработал title действий "положил" и "дал" на предмет согласования с "Вы".
- Убрал синонимы для действия "взял", теперь пример "подними флаг" работает.
--------------------------------------------------------------------------------
Прикрепленные файлы:
Libs4TOM.rar, Размер: 193,109 байт, Скачано: 6
Неактивен
Обновил библиотеку со всеми примерами и демо-играми до версии v.0.9.2.5 beta.
--------------------------------------------------------------------------------
Прикрепленные файлы:
Libs4TOM.rar, Размер: 200,981 байт, Скачано: 10
Неактивен
Добавил в библиотеку новый модуль - Containers.tml
В модуле пока только 2 класса: класс для поверхностей, и класс для простых контейнеров.
В тесте это стол и сундук в хижине.
--------------------------------------------------------------------------------
Прикрепленные файлы:
Libs4TOM.rar, Размер: 196,046 байт, Скачано: 2
Неактивен
Cheshire написал:
Ммм, контейнеры.
Добавил действия для контейнеров - открыть и закрыть.
Добавил возможность навешивать предметы на персонажей снаружи - см. лукошко в хижине.
Добавил модуль Physics.tml
В физике расчитывается пока только видимость/невидимость и доступность/недоступность предметов в зависимости от их положения. Так предмет внутри закрытого контейнера будет невидим и недоступен. Функциональность модуля будет расширяться по мере необходимости.
Просьба потестить.
--------------------------------------------------------------------------------
Прикрепленные файлы:
Libs4TOM.rar, Размер: 198,677 байт, Скачано: 6
Неактивен
Добавил модуль Light.tml. Модуль содержит классы для тёмных комнат и источников света, а также действия зажечь и погасить.
В модуль Physics.tml добавлены функции просчитывающие распространение света и освещенность объектов.
Для тестирования под хижиной вырыт темный подвал с медной лампой. Также для проверки темноты можно попробовать закрыть себя в сундуке.
Возможно еще не во все действия вставлены необходимые проверки - если обнаружится нелогичность поведения, пожалуйста, пишите - исправлю.
--------------------------------------------------------------------------------
Прикрепленные файлы:
Libs4TOM.rar, Размер: 201,045 байт, Скачано: 8
Неактивен
Доработал библиотеку на предмет прозрачных контейнеров.
Смотрите ларец на столе хижины.
--------------------------------------------------------------------------------
Прикрепленные файлы:
Libs4TOM.rar, Размер: 201,240 байт, Скачано: 4
Неактивен
Паралельно с разработкой стандартной библиотеки ТОМа продолжается портирование библиотеки РТАДС.
В приложенном файле вы найдете демо-игру "Золотой череп" написанную с использованием библиотеки РТАДС.
Переработана всего лишь малая часть библиотеки, работы продолжаются.
--------------------------------------------------------------------------------
Прикрепленные файлы:
Libs4TOM.rar, Размер: 254,827 байт, Скачано: 4
Неактивен
В модуль Containers.tml добавил класс для дверей. Смотрите дверь в хижине.
В модуль Map.tml добавил возможность нелинейного соединения локаций. Смотрите лаз на чердаке.
В модуль Physics.tml добавил функцию для контроля перемещений. Из закрытого сундука просто так уйти теперь нельзя.
Исправил несколько ошибок и несуразностей, добавил дополнительные шаблоны к ранее созданным действиям.
--------------------------------------------------------------------------------
Прикрепленные файлы:
Libs4TOM.rar, Размер: 202,688 байт, Скачано: 8
Неактивен