Forum.iFiction.Ru

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

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

Вы не зашли.

   #1
08.07.2009 19:49

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

Тон

Разработка стандартной библиотеки std.lib

А вот скажи. Какая-то стандартная библиотека для твоей супер-платформы есть?

Неактивен

   #2
08.07.2009 19:56

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

fireton пока только в зачатке smile

Отредактировано ASBer (08.07.2009 19:57)

Неактивен

   #3
16.07.2009 16:39

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

fireton написал:

А вот скажи. Какая-то стандартная библиотека для твоей супер-платформы есть?

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

Предлагаю вниманию самый "нужный" модуль библиотеки - неиспользуемые глаголы.

Если какие-то глаголы упустил - пишите, добавлю smile

файл удалил - ниже есть более свежий

Отредактировано ASBer (24.07.2009 10:27)

Неактивен

   #4
16.07.2009 22:01

noname
Участник (+35, -9)
Зарегистрирован: 04.04.2008
Сообщений: 729

noname

Re: Разработка стандартной библиотеки std.lib

"в этой игре не нужно подниматься вверх."

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

или тогда будет выводиться стандартное "это предложение непонятно!"?


ИМХО:

1. нужно в модуль добавить такую фразу, которая будет выводиться, когда использован глагол(определяется по вхождению слова в модуль библиотеки), НО обработка этого глагола не предусмотрена в этой игре, напр: "в этой игре вам не нужно ...ть" (с подставлением соотв формы глагола) UPD: всё, увидел!

2. для облегчения редактирования модуля(на случай, когда глаголов станет ооочень много) хорошо бы располагать глаголы в алфавитном порядке. щазз при таком порядке как есть мне трудно понять, какие глаголы из библиотеки РТАДС пропущены

жду-недождусь следующего модуля "минимальный" ( идти с з ю в, осмотреть, осмотреться, взять, выложить )

надеюсь, краткий и понятный текст подулей поможет мне освоить ТОМ, научиться составлять собственные модули и и спользовать их

Отредактировано noname (16.07.2009 23:10)

Неактивен

   #5
19.07.2009 22:11

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

noname написал:

модуль "минимальный" ( идти с з ю в, осмотреть, осмотреться, взять, выложить )

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

В модуле не будет:
- Дверей, контейнеров, стульев, поверхностей и т.п.
- Проверок на вес/объем, темных комнат, источников света.
- Перемещений по компасу.
Все эти возможности будут в дополнительных модулях.

В модуле будет:
- 1, 2, 3 лицо для персонажей с автоматическим определением и подстановкой.
- возможность называть объекты как прилагательное+существительное во всех действиях.
- полный тест для проверки функциональности модуля.

P.S. на счет краткости и понятности обещать не буду, т.к. даже в таком объеме модуль получается не очень маленьким...

Отредактировано ASBer (19.07.2009 22:21)

Неактивен

   #6
22.07.2009 13:52

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

Быстренько накидал модуль с картой и перемещениями по компасу - Map.tml
Теперь в библиотеке 3 модуля. Но все 3 сырыееее...

файл удалил - ниже есть более свежий

Отредактировано ASBer (24.07.2009 10:25)

Неактивен

   #7
22.07.2009 18:16

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

ааа!!! он издевается! smile

> старик, дай себе ложку
Старик взял ложку со стола
И дал себе.

Неактивен

   #8
22.07.2009 18:31

noname
Участник (+35, -9)
Зарегистрирован: 04.04.2008
Сообщений: 729

noname

Re: Разработка стандартной библиотеки std.lib

забавно

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

если уж акцентировать внимание на общении, то - на диалогах с неписями

ask someone about something- очень неплохой вариант. литературность может заключаться в том, что игра сама подставит заранее составленный конкретный текст вопроса

прямая речь ИМХО слишком сложна для анализа. т е - сделать нормальный анализатор прямой речи на русском языке сложнее, чем написать квест

по-русски команды общения могут выглядеть как:

>[рас]спросить <кого-либо> о[б] <чём-либо> // напр: спросить старика о посохе
и сокращённый вариант:
<кто-либо>, <что-либо> // напр: старик, посох

в ответ старик может предложить тебе посох в обмен на яблоко, например

далее ГГ даёт яблоко старику, а старик в ответ даёт посох персонажу

попытка взять посох у старика самостоятельно должна приводить к неудаче (или к намёку проги: 'ты хочешь отобрать посох у старика?' в этом случае команда 'отобрать посох у старика' приведёт к другому варианту развития сюжета)

UPD

опять же интересна тема менюшек в диалогах

Отредактировано noname (22.07.2009 18:33)

Неактивен

   #9
22.07.2009 19:09

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

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

Неактивен

   #10
22.07.2009 19:25

noname
Участник (+35, -9)
Зарегистрирован: 04.04.2008
Сообщений: 729

noname

Re: Разработка стандартной библиотеки std.lib

полностью согласен. поведение персонажей- это уже ложится на долю квестописателей

от платформостроителя можно ожилать разве что примеров

и удобных механизмов организации общения/взаимодействия и пр

Неактивен

   #11
23.07.2009 14:50

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

В map добавил перемещения вверх/вниз (в тесте чердак в хижине).

noname, дождись пока я доделаю перемещения в библиотеке. В планах все то о чем ты написал.
Пока можешь делать карту не обращая внимания на отсутствие стен smile

файл удалил - ниже есть более свежий

Отредактировано ASBer (28.07.2009 13:26)

Неактивен

   #12
31.07.2009 11:52

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

Добавил в библиотеку притяжательные местоимения, притяжательные возвратные местоимения и поддержку для притяжательных прилагательных.
Теперь парсер понимает команды в формате:
>осмотри его ложку
>осмотри мою ложку
>осмотри свою ложку
>осмотри дедову ложку
а также
>осмотри ложку деда

//удалил файл

Отредактировано ASBer (12.08.2009 16:04)

Неактивен

   #13
02.08.2009 19:04

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

Обновил библиотеку:
- Отладил работу с веществом/материалом. (Смотри на столе в хижине краюху хлеба. Моток веревки должен быть устроен абсолютно аналогично. При этом хлеб можно назвать и как "хлеб", и как "краюха хлеба", и как "хлеб старика" и как "краюха деда")
- Действие "выложить" работает, хотя пока сильно недоделано.
- Добавил персонажам метод свобода_воли(). Как работает можно посмотреть в примере с лифтом - отправить лифтера из лифта теперь не получится.

//удалил файл

Отредактировано ASBer (12.08.2009 16:05)

Неактивен

   #14
04.08.2009 17:06

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

Небольшие доработки:
- исправлена ошибка возникающая после неудачного открытия файлов;
- добавлены местоимения для предметов;
- добавлен механизм устранения неопределенности по классовым именам (местоимения в их числе).

> осм хлеб
Это обычная краюха хлеба.

> возьми это
Ты взял это со стола.

> дай ее ему
Ты дал старику краюху хлеба.

//удалил файл

Отредактировано ASBer (12.08.2009 16:07)

Неактивен

   #15
05.08.2009 12:16

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

Переделал проверку рода и числа у предметов.

//
Для проверки рода и числа для предметов добавлено свойство "род_число", в котором должны быть перечислены все допустимые для предмета признаки рода и числа.
Например, для предмета "спички" род_число = "МрЖрЕчМч" - т.е предмет будет отзываться на слова "спичка", "спички", "коробок спичек", "она", "он", "они".

Проблема в том, что у предметов собственного рода нет и они могут называться различными словами с разным родом. (веревка - Жр, моток веревки - Мр).
Поэтому один и тот же предмет может сопоставляться с местоимениями различных родов - он (моток), она (веревка).

Чтобы не плодить лишних объектов, можно один и тот же предмет называть словами в единственном или множественном числе (спичка, спички).

//удалил файл

Отредактировано ASBer (12.08.2009 16:07)

Неактивен

   #16
13.08.2009 21:57

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

Добавил действия "спуститься" и "подняться". (см.файл)

По поводу отображения предметов на столе - это решается подменой описания постамента.
Т.к. в библиотеке пока нет класса для поверхностей, подмену описания нужно сделать в самой игре.
Ну или дождаться появления соответствующего библиотечного класса...

--------------------------------------------------------------------------------
Прикрепленные файлы:
Map.tml, Размер: 6,996 байт, Скачано: 12

Неактивен

   #17
31.08.2009 21:40

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

Немного доработал стандартную библиотеку:
- добавил выбор обращения к персонажу на "Вы" или "ты" (но возможно, что еще не все глаголы исправил).
- довел до ума поддержку личных местоимений - учитывается, как давно упоминался объект, в каком роде и числе он упоминался, упоминался он игроком или игрой, является объект предметом или персонажем.
- добавил предопределенную обработку для разрешения неоднозначности по классовым именам объектов - ChkClsName(). Это позволило избавиться от малопонятного свойства предмет.род_число, перенеся всю тяжесть обработки внутрь библиотеки.
- подчистил некоторые ошибки.

--------------------------------------------------------------------------------
Прикрепленные файлы:
Libs4TOM.rar, Размер: 191,841 байт, Скачано: 3

Неактивен

   #18
01.09.2009 06:55

Cheshire
Участник (+100, -8)
Зарегистрирован: 01.07.2009
Сообщений: 321

«Ловко орудуя топором, вы разрубили все ваши монеты пополам. Теперь у вас в два раза больше золота».
Морыч

Re: Разработка стандартной библиотеки std.lib

хижина
__Ветхая деревянная хижина. Все здесь очень старое, и непригодно для использования.
здесь есть стол и заплетенное паутиной окно.Вы находитесь тут и старик находится тут.®

ГГ> вверх


Вы поднялся в чердак
чердак
это некоторое место - чердак.
®.Вы находитесь тут.®

И если "в чердак" правится, как я понимаю, самим автором через выражение this.пред_в = "на",
то "поднялся" - недочет библиотеки.

Пожелание: добавить однобуквенные сокращения для "инв", "да" и "нет" ("и", "д", и "н"). Плюс, несколько действий разделять не только через " и ", но и через запятую (взять хлеб, взять ложку).

Неактивен

   #19
01.09.2009 11:57

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

Cheshire написал:

И если "в чердак" правится, как я понимаю, самим автором через выражение this.пред_в = "на", то "поднялся" - недочет библиотеки.

Угу, все так.
Исправил глаголы для перемещений, для локаций в тесте прописал правильные предлоги и title.

Cheshire написал:

Пожелание: добавить однобуквенные сокращения для "инв", "да" и "нет" ("и", "д", и "н").

Это легко, сделаю чуть позже.
// сокращение "и" для инвентаря не получится - смотри ниже про "." и "и".

Cheshire написал:

несколько действий разделять не только через " и ", но и через запятую (взять хлеб, взять ложку).

Здесь трудность будет при обращениях к НПС :
>Старик, возьми хлеб, возьми ложку
первая запятая здесь разделяет не действия, а обращение и действие. Но я подумаю как это сделать.


--------------------------------------------------------------------------------
Прикрепленные файлы:
Libs4TOM.rar, Размер: 192,590 байт, Скачано: 1

Неактивен

   #20
01.09.2009 12:36

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2056

---

Re: Разработка стандартной библиотеки std.lib

А важны ли запятые? Может, их просто игнорировать?

Неактивен

   #21
01.09.2009 12:58

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

Nex написал:

А важны ли запятые? Может, их просто игнорировать?

Для идеального парсера запятые, конечно, безразличны.
Но для парсера ТОМ в его теперешнем виде необходим признак разделения команды на отдельные действия.
Таким признаком является точка - "." и её синонимы, которые заданы в ст.библиотеке. ("и" - это синоним ".")
После того как команда разбита на части, для каждой части последовательно подбирается подходящий шаблон и знаки препинания при этом действительно игнорируются.

//update
В качестве домашнего задания:
Попробуйте с использование стандартной библиотеки сделать локацию "улица" с объектами "аптека" и "фонарь".
Реакция на команду
> Аптека. Улица. Фонарь.
должна быть интересной smile

Неактивен

   #22
01.09.2009 15:05

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2056

---

Re: Разработка стандартной библиотеки std.lib

С точкой всё понятно, но точка - это не запятая.

Неактивен

   #23
01.09.2009 15:38

ASBer
Модератор (+152, -17)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 817
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: Разработка стандартной библиотеки std.lib

Nex написал:

С точкой всё понятно, но точка - это не запятая.

Вот что предлагает Cheshire:

несколько действий разделять не только через " и ", но и через запятую (взять хлеб, взять ложку).

Сделать это "в лоб" - значит приравнять запятую к точке.

Неактивен

   #24
01.09.2009 17:38

Nex
Участник (+120, -130)
Зарегистрирован: 11.06.2007
Сообщений: 2056

---

Re: Разработка стандартной библиотеки std.lib

ASBer написал:

Вот что предлагает Cheshire:

несколько действий разделять не только через " и ", но и через запятую (взять хлеб, взять ложку).

Сделать это "в лоб" - значит приравнять запятую к точке.

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

Неактивен

   #25
01.09.2009 18:12

Cheshire
Участник (+100, -8)
Зарегистрирован: 01.07.2009
Сообщений: 321

«Ловко орудуя топором, вы разрубили все ваши монеты пополам. Теперь у вас в два раза больше золота».
Морыч

Re: Разработка стандартной библиотеки std.lib

> бросить хлеб

Вы положил хлеб.

roll

Неактивен

Powered by PunBB
© copyright 2001–2018 iFiction.Ru