Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
11.02.2002 12:15

Loured
Участник
Зарегистрирован: 11.01.2002
Сообщений: 15

Взгляд на платформы изнутри

Считаю, что анализатор команд строго привязан к методу реализации самой платформы и речь об анализаторе должна быть неотрывна от концепции построения самого движка . Вообще нужно отдавать себе отчет в том, что анализатор это всего лишь один из элементов, а не сама платформа.  Так, на мой взгляд, существует два основных метода, на которых реализуются все текстовые платформы. Первый - когда к вводимым глаголам заведомо определяется какое-то действие.  Например глагол ВЗЯТЬ (ОБЪЕКТ) можно определить как процедуру добавления предмета ОБЪЕКТ в инвентарь. Не имеет значения что это за объект, если он был объявлен и имеется возможность его взять в данное время на данной локации, то он будет добавлен в инвентарь. Глагол ПРИВЯЗАТЬ будет, например, сопоставляться с процедурой соединения двух или более объектов. Таким образом создаются модели физического взаимодействия объектов, и как следствие в рамках созданной модели могут существовать и взаимодействовать различные объявленные объекты, в соответствии с объявленными для них же свойтвами. Используемая методика облегчит дальнейшую разработку игр на платформе, однако ограничит их возможности возможностями физического мира, предоставляемыми самой платформой.
   Другой подход основан на более низкоуровневом программировании. Тоесть физика поведения объектов описывается для каждого конкретного случая и эта задача возлагается платформой на разработчика. Это неоспоримо более гибкое решение, однако и не сравнимо более сложное для самого разработчика игры. Можно попытаться совместить оба подхода, путем возможности использования шаблонных заготовок (например поведение NPC в торговле, диалоге, битве, взаимодействие с предметами) опирающееся на свойства этих самых объектов. В этом случае NPC тоже объект со своими свойствами (например ЗДОРОВЬЕ,АГРЕССИЯ,ИНТЕЛЛЕКТ,ТОРГОВЛЯ), которые выражаются простейшими числовыми ограничениями например от 0 до 100. Иными словами разрботчику игры платформа должна предлагать возможность самостоятельного создания объекта "с нуля" так же как и возможность применения заготовок (шаблонов), включающие в себя стандартные методы взаимодействий.  Теперь по поводу собственно анализатора. В случае когда создается модель физического взаимодействия объектов (пусть даже самая простейшая). Все вводимые команды должны распознаваться интерпретатором собственно как ДЕЙСТВИЕ или ДЕЙТСВИЕ и ОБЪЕКТ(ы) над которыми этой дейсвие осуществляется. В таком случае возможные ДЕЙСТВИЯ предварительно запрограммированы в платформу и для разработчика на базе этой платформы они "прозрачны" . Тоесть разработчику по-большому счету требуется описать комнаты, расставить объекты, наделить их свойствами и указав стартовую локацию запустить свой проект на исполнение. Тогда применение мощного анализатора вводимых команд неоспоримо. Анализатор должен уметь делать главное - разделить команду на ДЕЙСТВИЕ и ОБЪЕКТЫ,учавствующие в этом действии.
В другом случае от анализатора не требуется вычленение действий и объектов из вводимого игроком текста, а требуется распознавние целой фразы в различных ее стилистических и орфографических формах и сопоставление этой фразы с соответсвующим действием над предопределенным объектом.  Этот метод основывается на распознавании вводимого текста по маске. Об этом упоминал еще Graham Nelson, его смысл в следующем. Под осуществление какого-то действие формируется маска типа:
ПРИВЯЗ ЛОШАД ВЕРЕВ ДЕРЕВ/ПРИЦЕП ЛОШАД ВЕРЕВ ДЕРЕВ

играющий может написать например:

>Привязать веревкой лошадь к дереву

но может изменить по-любому последовательность
слов и их окончания, а так же добавить какие то другие слова, например:
>Прицепить эту глупую ЛОШАДКУ к дереву веревкой.

-обе фразы будут поняты интерпретатором одинакого, главное чтобы в них встречались все объявленные в форме маски для слов (до / или после) и не важно в какой последовательности (хотя это можно сделать меняемым режимом интерпретатора, для некоторых случаев, где последовательность необходима для соблюдения логики). В любом случае использование словаря синонимов, значительно бы облегчило процесс программирования.

Неактивен

0    0    #2
11.02.2002 15:17

Olegus t.Gl.
Участник (+1053, -249)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2879
Вебсайт

Re: Взгляд на платформы изнутри

    Судя по используемым примерам (про лошадь и веревку), Lotus ознакомился с моей статьей, посвященной анализатору команд в IF-игре.
     Предложенное им развитие этой темы мне кажется несколько усложненным, особенно на данном этапе развития движков IF-игр, когда нет еще ничего более простого. По-моему, пока русскоязычные IF-игры имеют довольно скромный размер, то незачем городить физические и метафизические модели вселенной. Тем более автору желателен постоянный контроль над действиями игрока и результатами этих действий. Поэтому проще всего, как мне кажется, к каждому объекту привязывать те действия, которые с ним возможно совершить...
     Что касается ввода по маске, то тут теряется множество возможностей по выявлению прилагательных, наречий и пр., которые необязательно должны присутствовать в предложении, но могут быть введены игроком...

Неактивен

0    0    #3
12.02.2002 23:45

Loured
Участник
Зарегистрирован: 11.01.2002
Сообщений: 15

Re: Взгляд на платформы изнутри

Вот отрывок из интервью  Грэхэма Нельсона:
"...   Создание некоего универсального анализатора текста - грандиозное, но трудноисполнимое предприятие. Самым трудным при этом является учет контекста и угадывание намерений игрока. Мой главный вывод - не искать коротких и простых путей. Луче написать анализатор, который понимает слишком много (то есть "понимает" нелепо сконструированные запросы, которые следовало бы не обрабатывать, а отвергать), чем слишком мало, поскольку имеет ограниченный запас слов и слишком узкие грамматические алгоритмы."

Неактивен

0    0    #4
13.02.2002 00:20

Olegus t.Gl.
Участник (+1053, -249)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2879
Вебсайт

Re: Взгляд на платформы изнутри

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

Неактивен

0    0    #5
13.02.2002 01:17

Al Chipollino
Участник (+1)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 496

Re: Взгляд на платформы изнутри

Лотус, правильной дорогой идёшь. Анализатор команд интересно даже просто для себя разобрать. Надо будет и мне когда-нибудь опубликовать свои выводы. Главный вывод состоит в том, что анализатор нужно делать как отдельную подпрограмму, в которую при вызове передаётся вводимая строка и у которая на выходе выдаёт несколько переменных: глагол, первый предмет и второй предмет. При усложнении сюда добавляются наречия, прилагательные и прочая дребедень... Далее уже из этих предпосылок необходимо строить язык программирования IF, который превращал бы всё это в действия.

Неактивен

0    0    #6
13.02.2002 09:07

Olegus t.Gl.
Участник (+1053, -249)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2879
Вебсайт

Re: Взгляд на платформы изнутри

Вот именно, сперва необходим лишь модуль, с помощью которого фраза игрока разбивается на действие, объекты и их характеристики (ну и т.п.). Что будет делать с ними автор игры, это уже его дело.
     Впоследствии, обработку некоторых действий можно и автоматизировать. Например, у меня к каждому стационарному объекту ("стена", "пол", "лестница" и пр.) привязаны синонимы, а также само собой известно, где эти объекты находятся. Так вот, когда игрок вводит команду "осмотреть (что-то)", то вызывается подпрограмма, которая смотрит, для какого объекта уместно это слово в текущей локации. Если такой объект есть, то он описывается, если же нет - "А что, собственно, Вы хотите осмотреть?"...

     А вообще не нужно городить столько тем. Если вопрос касается анализатора команд, то почему бы не обсуждать это в соответствующем месте?...

Неактивен

0    0    #7
16.06.2002 00:58

dyx
Участник
Зарегистрирован: 15.12.2001
Сообщений: 99

Re: Взгляд на платформы изнутри

Lotus, что-то почитал твои мысли и так и не понял - а что если чел введет "привязанная веревка к глупым лошадкам в деревне"? Посмеялся бы я тогда... smile

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru