Forum.iFiction.Ru

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

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

Вы не зашли.

   #51
22.11.2017 16:17

Nikita
Участник (+164, -14)
Зарегистрирован: 29.10.2016
Сообщений: 32

Re: Конкурсант на КРИЛ-2017

Станислав Соловьев написал:

Видимо, по не знанию вопроса я не слишком согласен с воздвижением парсеров в некий "сорокалетний монумент". Фактически, это менюшная игра, в которой варианты игроку нужно вводить самостоятельно, надеясь, что автор их предусмотрел.

Формально можно и так сказать, но в локации с тремя-пятью объектами число поддерживающихся команд на специализированной парсерной платформе из коробки уже будет больше 1000, так что это очень большое меню. К тому же существуют команды с аргументами, например, "спросить полицейского о чём-то" или "набрать на телефоне 1234567", варианты которых вообще не ограничены. Игроки ожидают, что в каждой игре, которую они запускают, будет тот самый стандартный набор вариантов взаимодействия, плюс дополнительные, вытекающие из логики происходящего.
В специализированных платформах число поддерживаемых действий может выходить за 100, часть из этих действий может применяться ко всем объектам игрового мира, а часть к комбинации из двух объектов игрового мира. Так и получается экспоненциальный рост возможных вариантов взаимодействия, приводящий к комбинаторному взрыву.

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

 спойлер…

В итоге:
Если у вас что-то очень высоко вариативное, то это надо делать текстовым вводом, но втискивать в традиционный протокол общения с парсерными играми. Качественно имплементировать этот протокол с нуля очень сложно, поэтому существуют специализированные платформы.
Если что-то на базе только 7-10 глаголов, применяемых к объектам игрового мира, то лучше делать глагольное меню.
Если поиск и комбинирование предметов с поиском правильного сочетания, но без выявления конкретного действия одного объекта на другой, то имеет смысл делать point-and-click или воспроизводить классический стиль INSTEAD.
Ну а если что-то с ситуативными хитрыми ходами, типа "повертеть пальцем у веска", то надо делать CYOA.

Неактивен

   #52
22.11.2017 21:13

Станислав Соловьев
Участник (+44, -10)
Зарегистрирован: 27.08.2017
Сообщений: 31

Re: Конкурсант на КРИЛ-2017

Почему-то очень хочется примеров. Примеров, где пять объектов создают сотню вариаций. Чем дальше я читаю достаточно увлекательные тексты касательно парсеров, тем сильнее во мне растет дух противоречия и отнюдь не потому, что я являюсь лютым приверженцем менюшных игр (я этот термин вообще только на КРИЛ-2017 услышал).

Неактивен

   #53
23.11.2017 00:01

Nikita
Участник (+164, -14)
Зарегистрирован: 29.10.2016
Сообщений: 32

Re: Конкурсант на КРИЛ-2017

Станислав Соловьев написал:

Почему-то очень хочется примеров. Примеров, где пять объектов создают сотню вариаций. Чем дальше я читаю достаточно увлекательные тексты касательно парсеров, тем сильнее во мне растет дух противоречия и отнюдь не потому, что я являюсь лютым приверженцем менюшных игр (я этот термин вообще только на КРИЛ-2017 услышал).

Хорошо, но давайте договоримся, что я это объясню один раз. Да, подробно и с примерами, но один раз, без последующих глупых холеваров. Это, в принципе, ко всем относится.

Например, в платформе RTADS 107 базовых действий. В строгом смысле их там больше из-за некоторых внутренних технических процедур, ну на пользовательском уровне будем считать что 107. Теперь берите калькулятор:

 спойлер…

Главное, что надо понимать, так это природу этой самой проблемы комбинаторного взрыва. Ну а к чему это всё приведёт, я вам только что показал.
Игроки от вашего парсера будут ожидать поддержку минимум нескольких десятков традиционных команд, причём, в разных синонимичных формулировках, а также корректную обработку их комбинаций.
Наскоком решить эту задачу на неспециализированной платформе пробовали многие, но на моей памяти ни один из них не вошёл в историю как успешный автор. Да и успешное решение будет выглядеть фактически как разработка новой платформы, что, разумеется, заслуживающий уважения путь, но вряд ли вы готовы подписаться именно на это.

Неактивен

   #54
23.11.2017 01:16

Alcohol
Участник (+111, -148)
Зарегистрирован: 03.07.2017
Сообщений: 50

Re: Конкурсант на КРИЛ-2017

Ох, а чего всё так сложно? Давайте-ка проще, без математики и всего такого. Мы чего, тут в универе что ли?
Если так тяжко парсеры писать, так может и ну их на фиг? Тут что, садомазо-форум что ли?

Неактивен

   #55
23.11.2017 05:49

Станислав Соловьев
Участник (+44, -10)
Зарегистрирован: 27.08.2017
Сообщений: 31

Re: Конкурсант на КРИЛ-2017

Alcohol написал:

Ох, а чего всё так сложно? Давайте-ка проще, без математики и всего такого. Мы чего, тут в универе что ли?
Если так тяжко парсеры писать, так может и ну их на фиг? Тут что, садомазо-форум что ли?

Возможно, что это действительно невероятно сложно...

Неактивен

   #56
23.11.2017 05:58

Станислав Соловьев
Участник (+44, -10)
Зарегистрирован: 27.08.2017
Сообщений: 31

Re: Конкурсант на КРИЛ-2017

Nikita написал:

Уже сейчас, если подсчитать, то мы получаем 586 вариантов команд ... И это, напомню, только на одной локации с тремя объектами, хотя там будет ещё обязательный объект самого главного героя, а также земли, так что в действительности 5 ... разумеется, авторы руками не прописывают все реакции, а игроки все их не пробуют ... В реальности, конечно, как при разработке, так и при игре явно прописываются и используются далеко не все допустимые варианты, а лишь подходящие по контексту...

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

Неактивен

   #57
23.11.2017 06:59

uux
Участник (+460, -30)
Откуда: Москва
Зарегистрирован: 02.12.2006
Сообщений: 1481

Re: Конкурсант на КРИЛ-2017

Станислав Соловьев написал:

В обоих случаях задача легко реализуема на разных платформах и как мне кажется(!), дело тут не в прохождении именно парсеров, а культуры ИЛ в целом.

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

Ключевая фраза здесь - "гораздо большее число доступных команд". Это как раз случай, когда количество переходит в качество, а точнее, в сложность и трудоемкость разработки.

И именно это Никита пытается до вас донести.

Неактивен

   #58
23.11.2017 08:21

Станислав Соловьев
Участник (+44, -10)
Зарегистрирован: 27.08.2017
Сообщений: 31

Re: Конкурсант на КРИЛ-2017

Ключевая фраза здесь - "гораздо большее число доступных команд". Это как раз случай, когда количество переходит в качество, а точнее, в сложность и трудоемкость разработки.

И именно это Никита пытается до вас донести.

Не вижу смысла противоречить. Думаю, мое желание пуститься в дискуссию возникло именно потому, что мне принялись доказывать исключительность парсера и его непод'емность. Скорее всего мне это только показалось. И по итогам возник такой вопрос: парсеры и меню делаются по одним и тем же принципам программирования или же это разные вещи? Я имею ввиду, зная все эти (не пренебрежение, а перечесление) массивы, об'екты, условия и основы разработки, можно одинаково успешно делать оба типа ИЛ или же нифига?

Неактивен

   #59
23.11.2017 08:55

Wol4ik
Участник (+104, -19)
Зарегистрирован: 25.05.2017
Сообщений: 83
Вебсайт

Re: Конкурсант на КРИЛ-2017

Это проще увидеть, чем выслушать об!яснения. Вот документация по RTADS, доступно написана, и по этому не мешает оценить сложность/легкость кодирования чистой парсерной игры.
Это, можно сказать, введение.
http://rtads.org/man/TADSSMPL.HTM

Отредактировано Wol4ik (23.11.2017 08:57)

Неактивен

   #60
23.11.2017 10:03

Irremann
Участник (+76, -44)
Зарегистрирован: 24.11.2012
Сообщений: 81

Re: Конкурсант на КРИЛ-2017

Документация метапарсера сюда же - https://instead.syscall.ru/wiki/ru/game … ser/manual.

Неактивен

   #61
23.11.2017 17:42

Nikita
Участник (+164, -14)
Зарегистрирован: 29.10.2016
Сообщений: 32

Re: Конкурсант на КРИЛ-2017

Станислав Соловьев написал:

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

Дело в том, что у вас явно очень серьёзный теоретический провал, поэтому мы уже дошли до того момента, когда вам трудно просто так что-то объяснить. Вам надо больше почитать по теме и вернуться к этому разговору уже после этого.
Парсеры пишутся вообще не как наборы реакций на конкретные строки текста. Вернее, есть попытки писать так, но это как раз путь вне куда.
Парсерная игра представляет собой моделирование мира в рамках объектно-ориентированного подхода. Самое простое объяснение этих принципов на русском языке есть в документации RTADS. Прочитайте там первые три главы, они небольшие. Ну и дальше можно главы 6 и 7 с более сложными примерами. Если абстрагироваться от конкретного синтаксиса и обращать внимание на принципы, то это даст более-менее универсальное понимание вопроса для всех основных парсерных платформ.
Парсерная игра выполняет синтаксический разбор введённой команды, выделяя там название действия, а также по ряду свойств тот или те объекты, к которым это действие надо применить. Дальше у этих объектов вызываются методы, соответствующие определённому действию с передачей им нужных параметров. Это совсем в общих чертах. В действительности каждый из этапов декомпозируется на более мелкие задачи, про каждую из которых можно написать целую статью.
В зависимости от реализации конкретной платформы есть также специфические задачи, типа наполнения словаря, генератора падежных форм слов и так далее.

Вот так будет выглядеть на RTADS игра с локацией, в которой есть шкаф, стол и комод, а также спрятанная в закрытом комоде книга:

 спойлер…

К этому сообщению я прикреплю архив с исходным кодом, а также с компилированной версией, которую можно запустить и попробовать.
Ну или вот on-line версия, чтобы попробовать в браузере.

Обратите внимание, никаких циклов с перебором образцов строк и прочего, потому что хорошие парсеры пишутся не так. Вместе с этим, здесь:

 спойлер…

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

Станислав Соловьев написал:

Думаю, мое желание пуститься в дискуссию возникло именно потому, что мне принялись доказывать исключительность парсера и его непод'емность. Скорее всего мне это только показалось.

Да, вам это показалось. Парсер исключителен не чуть не больше, чем меню. Это просто разные вещи, поэтому говорить надо не об исключительности, а о специфичности как одного, так и другого. Я здесь всего лишь говорил о том, что парсеры лучше писать на специализированных платформах, а также с использованием традиционного языка общения с парсерной игрой, для понимания которого надо либо побольше поиграть в парсеры, либо целенаправленно изучить стандартную библиотеку какой-нибудь развитой парсерной платформы.

Станислав Соловьев написал:

И по итогам возник такой вопрос: парсеры и меню делаются по одним и тем же принципам программирования или же это разные вещи? Я имею ввиду, зная все эти (не пренебрежение, а перечесление) массивы, об'екты, условия и основы разработки, можно одинаково успешно делать оба типа ИЛ или же нифига?

Есть такое понятие, как парадигма программирования. Парсеры, как правило, пишутся в чуть более сложной парадигме, чем большинство менюшных игр, которая, помимо перечисленных вами базовых процедур, подразумевает использование дополнительных концепций (классов и объектов, наследования и пр.). Конкретный пример кода я привёл выше.
Впрочем, есть и исключения, а именно менюшные платформы с ООП (INSTEAD, Salet) или парсерные вообще без прямого программирования (ЯРИЛ, ADRIFT).
Однако вы, насколько понимаю, пришли с AXMA. Знаний алгоритмов и понятий, которые используются там, для написания полноценного парсера будет недостаточно. Впрочем, как уже сказал, написание парсерных игр - это не бином Ньютона, так что никто не говорит, что научиться этому способны только избранные. Просто надо сразу брать правильный инструмент.

Сейчас более-менее актуальны 5 русскоязычных парсерных платформ:

 спойлер…

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

Отредактировано Nikita (23.11.2017 18:58)


Прикрепленные файлы:
example.zip, Размер: 1,469,508 байт, Скачано: 0

Неактивен

   #62
Вчера 06:22

Станислав Соловьев
Участник (+44, -10)
Зарегистрирован: 27.08.2017
Сообщений: 31

Re: Конкурсант на КРИЛ-2017

Nikita, старался быть очень внимательным, но так и не нашел простых вещей: как установить русификатор на RTADS? Введение сразу начинается с создания игры, с первых строк кода, но хотелось бы еще более раннего вступления, для тех, кто вообще я.

Неактивен

   #63
Вчера 11:11

Антон Ласточкин
Участник (+155, -4)
Зарегистрирован: 18.09.2015
Сообщений: 86

Re: Конкурсант на КРИЛ-2017

Станислав, мне кажется, Вам следует сначала хорошо познакомиться с классическими парсерными играми, со стороны игрока, попробовать их пройти до конца. Я бы посоветовал две категории.
1. Демонстрационные:
Плащ тьмы
Золотой череп
2. Простые полноценные:
Кощей-1 златоквест или тяжелое похмелье
Блуждания в окопный день
Их можно найти на страничке: http://rilarhiv.ru/rtads.htm. Потратите день-два и приобретете неплохой опыт.

Неактивен

   #64
Вчера 11:45

Лукиук
Участник (+9, -31)
Зарегистрирован: 09.11.2017
Сообщений: 9

Re: Конкурсант на КРИЛ-2017

Думается мне что будет не лишним ознакомиться с http://blue-lacuna.textories.com
http://ifdb.tads.org/viewgame?id=ez2mcyx4zi98qlkh

Неактивен

   #65
Вчера 12:17

Лукиук
Участник (+9, -31)
Зарегистрирован: 09.11.2017
Сообщений: 9

Re: Конкурсант на КРИЛ-2017

В качестве прикола можно ещё потыкать классические инстед-игры в плеере  tiny-instead. Но его придётся компилировать самому. Там все доступные объекты пронумерованы а парсер понимает только команды вида x,y Где х и у номера объектов.

Неактивен

   #66
Вчера 17:14

Nikita
Участник (+164, -14)
Зарегистрирован: 29.10.2016
Сообщений: 32

Re: Конкурсант на КРИЛ-2017

Станислав Соловьев написал:

Nikita, старался быть очень внимательным, но так и не нашел простых вещей: как установить русификатор на RTADS? Введение сразу начинается с создания игры, с первых строк кода, но хотелось бы еще более раннего вступления, для тех, кто вообще я.

Да, с RTADS в начале надо немного поприседать:
Локализованные библиотеки лежат на том же сайте rtads.org. Вот прямая ссылка на архив http://rtads.org/libr27.rar
Соответственно нужно распаковать и положить .t файлы куда надо. Стандартный вариант - это использование штатной среды разработки под Windows TADS Workbench, где .t файлы нужно класть по пути
C:\Program Files\TADS Tools
или
C:\Program Files (x86)\TADS Tools
для 64-разрядных систем.
Вы там увидите английские adv.t, std.t и т.д., вот к ним рядом и положить advr.t, stdr.t и т.д.
Среду разработки TADS Workbench лучше поставить вот этой версии http://sm-i-i.narod.ru/aksetup.zip
Тому, как работать со средой разработки, посвящено приложение E официальной документации.
Это основной вариант под Windows. Если нужны другие OS или хардкорные варианты с использованием plain text редактора и утилит командной строки, то пишите, будем разбираться.

Ну и для сохранения сбалансированности изложения:

Для разработки на RInform нужно скачать специальную сборку из документации, примеров и компилятора (вариант под Windows).
Для Метапарсера INSTEAD просто берётся интерпретатор и под запуск в нём пишется Lua-файл по документации. Дополнительных инструментов для компиляции или добавления ресурсов, как в RTADS и RInform, не нужно. Правда в своё время был какой-то специальный редактор для разработки под INSTEAD, но я не уверен, что он сохранил актуальность. Возможно кто-то другой прояснит ситуацию.
Для ЯРИЛ специальный редактор идёт вместе с плеером (для всего нужна Java).
У ТОМ2 все имеющиеся и открытые на сегодняшний день инструменты разработки также в общем комплекте поставки. Но там также язык интерпретируемый, а не компилируемый, так что просто пишем текстовый файл и запускаем в плеере.

Если хочется подсветки синтаксиса, то с этим проще всего у INSTEAD, так как там стандартный Lua, поэтому достаточно взять любой текстовый редактор с поддержкой раскраски этого языка. Для RTADS есть несколько вариантов схем подсветки для разных редакторов, лучшей из которых вроде считается вариант для UltraEdit, ну или можно раскрасить его по правилам C (будет что-то похожее на правду). По RInform либо ничего нет, либо я не знаю. У ЯРИЛа всё своё в специальном графическом интерфейсе, а у ТОМ2 вроде тоже ничего нет.

Ну и обсуждение конкретных технических вопросов по той или иной платформе лучше перенести в соответствующие разделы форума. Они тут есть почти для всех: RTADS, Метапарсер INSTEAD, ЯРИЛ и ТОМ2. По RInform "места силы" не знаю (можете сами создать ветку), ну и по Метапарсеру INSTEAD всё-таки лучше идти на форум самой платформы, где активность и концентрация знающих людей выше.

Неактивен

   #67
Вчера 17:42

goraph
Участник (+300, -99)
Зарегистрирован: 16.04.2007
Сообщений: 445

Основная добродетель гражданина есть недоверие.

Re: Конкурсант на КРИЛ-2017

Nikita написал:

По RInform "места силы" не знаю (можете сами создать ветку)

По RInform на дискорд можно счас, там есть вполне живой канал, так и называется - #rinform

Неактивен

   #68
Вчера 21:57

Wol4ik
Участник (+104, -19)
Зарегистрирован: 25.05.2017
Сообщений: 83
Вебсайт

Re: Конкурсант на КРИЛ-2017

голос из 313-й палаты
Можно же начать осваивать эту ниву создавая псевдопарсер. Имитацию. Платформа может быть любой, лишь бы был клавиатурный ввод и работа со строковыми переменными. Это даст возможность поиграть в разработчика парсеров))) Вот человек задался целью, и проверил.
http://qsp.su/index.php?option=com_agor … =57#p25986

Неактивен

   #69
Сегодня 00:29

Alcohol
Участник (+111, -148)
Зарегистрирован: 03.07.2017
Сообщений: 50

Re: Конкурсант на КРИЛ-2017

Wol4ik написал:

голос из 313-й палаты
Можно же начать осваивать эту ниву создавая псевдопарсер. Имитацию. Платформа может быть любой, лишь бы был клавиатурный ввод и работа со строковыми переменными. Это даст возможность поиграть в разработчика парсеров))) Вот человек задался целью, и проверил.
http://qsp.su/index.php?option=com_agor … =57#p25986

Эта фигня - это позор QSP!
Нам еще парсеров там не хватало. Итак фигню всякую пишут последнее время, а тут и до парсеров докатились.

Неактивен

Powered by PunBB
© copyright 2001–2017 iFiction.Ru