Forum.iFiction.Ru

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

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

Вы не зашли.

4    1    #1
24.09.2017 15:31

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

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

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

1. Естественно, я не буду тут ничего выкладывать, что помешает мне участвовать в конкурсе, попробую просто вести честные записи, каждый день. На сегодня у меня не густо:
— Долго метался в поисках нужного жанра, все таки нашел. Думаю, что я осилю эту атмосферу, по крайней мере, мне так кажется.
— Зашел в свой любимый редактор AXMA, немного поработал над дизайном, поменяв задний фон и спустя час ползания по гуглу, нашел подходящий образ ключевого персонажа.
— Поиграл со спрайтами, вроде получается неплохо и достаточно колоритно.
— Если честно, то кто такой главный герой и чем будет интересен, какие вообще у него будут цели, мне пока неясно. Хотя вступление уже есть.
— Ах, ну да. Еще я поковырялся в параграфе стилей, ведь я немного знаю CSS3, ничего глобального, но глазу стало приятнее.
— Думаю, что завтра будет много суеты на работе, но нужно постараться придумать общий процесс игры: будет ли это постоянное движение от параграфа к параграфу или же локации и эпизоды... Да и вообще.

2. Ничего не сделал. Абсолютно. Надеюсь, что сегодня будет время хоть на что-то.

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

4. Как я и говорил, все попытки к самодисциплине приводят к полному краху. Зачем я решил, что именно сейчас самое время продолжить книгу в жанре ЛитРПГ? Это так срочно? Книга начата давно и не очень удачно...Что это за фигня?

5. Сегодня третье октября и я написал 45к знаков. Думаю, что нужно сделать еще страниц 5 формата А4 до финальной сцены, после чего приниматься за все дополнительные ответвления. Должно получиться около 100к текста. Потом начну все это дело добирать артами, какими-то правками и тому подобным. В общем, если я не закончу на этой неделе, то я буду знатным мудаком, который попросту профукал свое счастье...

6. Четвертое октября. Это не написание книги, это какая-то работа на галере, где вместо кнута подгоняет тот факт, что в понедельник я получу звездюлей от начальника. Поэтому я пишу и каждый раз отвлекаясь, вспоминаю о грядущих событиях. Словно пытаюсь как-то спрятаться от внешнего мира. Как-будто, это мне как-то поможет в понедельник... Но 60к(60 тысяч знаков) текста за плечами, правда я пока не дошел до концовок, решив, что сначала распишу все ответвления, чтобы знать, какие из финалов будут наиболее уместными. Каждый раз что-то начиная, я в восьми случаях из десяти не заканчиваю это. Наверное, потому что по славянскому гороскопу я Кузнечик, это как нельзя лучше описывает мою суть. Господи, что я тут пишу? Это дневник разработчика, а не соплежуйская тетрадка!

7. Шестое октября. Вчера я написал только половину дневной нормы(10к знаков). Собственно, сроки начинают поджимать, сегодня закрою больничный, в субботу предвидится куча дел. Хотя, если отнестись со всей ответственностью, то в субботу можно "Дать стране угля. Мелкого, но... Много!" Так, ладно. Какие планы на сегодня? Навести тотальный порядок в доме, пока жена на работе, протопить печки. Перед этим куплю чего-нибудь горячительного, чтобы веселее было. Ты посмотри, а ведение дневника — затягивающее мероприятие!. Но раньше, чем вообще вот это все, нужно довыполнить вчерашнюю норму(написать еще 10к знаков). Кровь из носа!

8. Я сдулся. Сломался... Черт возьми, финиш так близок, но я никак не могу взять себя в руки! Уже восьмое число. Завтра на работу, а это безоговорочный крест на моей продуктивности! Твою, падла, мать!

9. В принципе, понедельник прошел не так уж и плохо. Знаешь, дорогой дневник, обидно вот что: у меня есть минимум три часа свободного времени, пока мы едем на место и возвращаемся на базу, но весь маршрут пролегает по довольно отвратным дорогам и от тряски штекер клавиатуры постоянно отходит. Да и вообще, печатать в таких условиях -- издевательство! Сегодня вспомнил про другую книгу, которую я мечтал написать и даже осилил несколько глав. Появилось несколько крутых идей касательно сюжета. Вместе с тем, постоянно приходят какие-то мысли, касающиеся книги-игры на конкурс. Думаю, у меня будут неплохие шансы, если я все сумею реализовать.

10. Двенадцатое октября. Писать о том, что я ничего не сделал уже тошно. Что-то нужно делать, но я... Нет, не бездействую. Я занят повседневностью и отчаянно жажду изменить свою жизнь...

11. Скрепя сердце, пишу одиннадцатую запись в журнале. Разработка восстановилась. У меня отпуск и есть время позаниматься. Тем более, что одну работу я уже отправил на конкурс и остается закончить эту. Хочется сделать ее особенной, но всякий раз я понимаю, что пуще каких-то "фишек" в книге важен сюжет. Моих крошечных знаний в области программирования недостаточно, чтобы придумать нечто в стиле "Вау!", но я вполне могу сделать хорошее повествование. В общем, не знаю...

12. Двенадцатая финальная запись. Прорвавшись сквозь монстров прокрастинации, преодолев девятый вал лени, я закончил работу и дав ей пару недель "помариноваться", отправил на конкурс. Алилуйя!

http://kakotkin.com/wp-content/uploads/2015/09/Ералаш_все_конец_.jpg

Отредактировано Станислав Соловьев (09.12.2017 08:54)

Неактивен

6    0    #2
21.11.2017 23:44

Nikita
Модератор (+404, -135)
Зарегистрирован: 29.10.2016
Сообщений: 139

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

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

...я даже увлекся идеей попробовать свои силы в создании парсерной игры. В чем особенности этой идеи:
-- Я никогда не играл в такие игры.
-- Попробовал около трех штук, понял принцип и сделал для себя кое-какие выводы.
-- Мне это действительно интересно, а учитывая, что я больше рассказчик, чем игродел, то это еще и сложно.
-- Куча идей, которые я не смогу реализовать, но буду пытаться и скорее всего получится какой-то уродливый гибрид. Но ведь есть те, кого увлекает цирк уродов (щюточка)?

Вы в праве делать всё, что вам угодно, но поскольку вы явно спросили, то я вам отвечу (под спойлером советы, а не мат):

 спойлер…

В любом случае, с хобби всегда лучше делать то, что нравится и хочется, а не прогибаться. Для прогибания придумана работа. Так что если даже хочется писать нетрадиционный парсер на неспециализированной платформе, то пишите, кто вам может запретить? Просто другим никто не сможет запретить это оценивать и эмоционально комментировать, так что к этому лучше сразу подготовиться.
Ну и как учит история, классической механики INSTEAD в РИЛ когда-то тоже никто не знал, пока одному человеку не захотелось сделать по-своему. Вот бы он тогда посоветовался с кем-нибудь с URQ или RTADS, где бы теперь было всё это? Мы же не знаем, вдруг вы тоже способны на что-то такое в ИЛ.
Вместе с этим, если вам интересны меню, то плюньте на всех фанатов парсера, которые здесь ошиваются. Кто они такие, в конце концов, чтобы заставлять вас писать по-другому?

Отредактировано Nikita (21.11.2017 23:48)

Неактивен

9    2    #3
22.11.2017 16:17

Nikita
Модератор (+404, -135)
Зарегистрирован: 29.10.2016
Сообщений: 139

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

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

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

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

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

 спойлер…

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

Неактивен

9    1    #4
23.11.2017 00:01

Nikita
Модератор (+404, -135)
Зарегистрирован: 29.10.2016
Сообщений: 139

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

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

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

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

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

 спойлер…

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

Неактивен

7    1    #5
23.11.2017 17:42

Nikita
Модератор (+404, -135)
Зарегистрирован: 29.10.2016
Сообщений: 139

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 байт, Скачано: 409

Неактивен

5    1    #6
24.11.2017 17:14

Nikita
Модератор (+404, -135)
Зарегистрирован: 29.10.2016
Сообщений: 139

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 всё-таки лучше идти на форум самой платформы, где активность и концентрация знающих людей выше.

Неактивен

2    0    #7
25.11.2017 23:26

Nikita
Модератор (+404, -135)
Зарегистрирован: 29.10.2016
Сообщений: 139

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

uux написал:

Для "установки" русификатора достаточно скопировать файлы из архива rtads в каталог игры.

Да, но тогда подключать их надо не через угловые скобки, а через двойные кавычки:
#include <advr.t> // Подключает библиотеку advr.t из директории компилятора или из директории, заданной через параметр -i
#include "advr.t" // Подключает библиотеку advr.t из рабочей директории (как правило, директория игры, хотя могут быть нюансы)
Я бы всё-таки советовал положить .t файлы в системную директорию среды разработки, так будет универсально и не надо будет их носить из проекта в проект.
Ну а если надо будет что-то изменить в стандартной библиотеке, то лучше пользоваться директивами modify для модификации методов объекта и replace для замены функции, а основные файлы оставлять неизменными. И хотя новые релизы RTADS давно не выходили, но если выйдут, то за счёт этого пересборка с новой версией будет проще. В таких вещах всегда лучше сразу прививать высокую культуру разработки.

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru