Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
28.02.2006 16:39

b0n0b0
Участник
Зарегистрирован: 28.02.2006
Сообщений: 7

Алиса в Стране Почемутостей

Я писатель про заек.

Предлагаю к рассмотрению проект текстовой игрушечки, в которой вместо стандартного ввода слов (что в случае русского языка, на мой взгляд, чересчур усложняет игровой процесс) в качестве парсеров используются условные знаки.

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

———————-
Итак, запускаем игру. Выдаётся текст:
На полянке Алиса (1), Коля Герасимов(2), Маша(3) и Корней Чуковский (4). Кем хотите играть сейчас?

Как игроку, мне предлагается увидеть эту полянку глазами любого из этих персонажей. Для этого у меня в распоряжении есть парсер #. Формат его использования  (#<номер персонажа>).

Смотрим "глазами Алисы": #1.

(Снова выводится перечисление объектов под номерами). Но теперь уже видны предметы.
Солнечная полянка! Алиса обводит мир загадочными детскими глазами, и видит, что пространство с ней разделяет Коля Герасимов(2), Маша(3) и Корней Чуковский (4). На подстилке (5) лежит печенье (6) и чайник (7).

Дальше, мы в качестве Алисы хотим рассмотреть поближе, к примеру, Колю Герасимова. Для этого у нас есть универсальный парсер @. (при желании, сам парсер можно глобально заменить на иной символ, но это не суть важно.)
Итак, смотрим.

@ 2
Коля Герасимов - мальчик не из робкого десятка. Сейчас он сидит напротив Алисы и смотрит на неё выразительными глазами. На шее у него бабочка. (Жирным шрифтом дан текст, описывающий Состояние объекта Коля на данный момент в глазах Алисы. Оно может меняться. Вопрос: где мне задавать это состояние, в описании объекта Алиса когда я задаю всё, что она видит в разные моменты игры, или в описании объекта "Коля"?)

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

! 2 4 (сказать Коле о Корнее Чуковском.)
"Ах, что за славные люди, эти детские писатели!"  говорит Алиса Коле. "Да? " -  сомневается Коля. " А по-моему они все слегка сумасшедшие!
(хотелось бы предусмотреть хотя бы две различные реакции на одинаковое обращение к персонажу. То есть, во второй раз Коля ответил бы как-нибудь по-другому. При этом после определённого ответа Корней Чуковский изменяет своё "состояние".  Kак мне это сделать?)

? 2 6 (спросить Колю о печенье)
"А что, Коля, неужели ты не знаешь, что сладкое портит зубы?"   интересуется Алиса. " Вот еще выдумки!"  отвечает Коля. " От сладкого крепнет уверенность в сегодняшнем дне!"  Коля встаёт и идёт к реке.    (последнее - это перемена состояния Коли. Он уходит.)

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

(продолжение следует)

Неактивен

0    0    #2
28.02.2006 17:06

b0n0b0
Участник
Зарегистрирован: 28.02.2006
Сообщений: 7

Re: Алиса в Стране Почемутостей

(продолжение предыдущего сообщения)

Дальше,  взаимодействие с объектами.
Я решил сделать его до предела универсальным, разделив на два вида, "деструктивное" и "недеструктивное";.  Парсеры для этого такие: "-" для деструктивного, и "+" для недеструктивного. В описанной ситуации строка "+6" может при первом вводе подействовать как "съесть печенье", при втором вводе как "взять печенье в руку". "+ 6 7" может подействовать как "положить печенье в чайник", а  "- 6"  может подействовать как "растоптать печенье". Разумеется, реакцию на все парсеры взаимодействия хотелось бы предусмотреть хотя бы для трёх попыток, то есть, в первый раз одно, второй раз другой, третий раз третье (зацикленное).

Теперь о "превращениях" персонажей.

Как  я описал вначале, игрок может "входить" в любого персонажа, то есть, видеть локацию "его глазами". Но то как конкретный персонаж видит окружающее, зависит от его "состояния". Например, съев печенья, Алиса начинает видеть остальных в другом виде: у Коли цвет волос поменялся, а у Чуковского крылышки торчат. (Всё это, я так понимаю, задается в списке описаний, присущих персонажу как объекту). Выпив чаю, Маша идет ловить жука. Она ловит жука, приносит и кладет его на подстилку. Алиса смотрит на жука. Но поговорив с Чуковским о жуке (это событие-триггер) она смотрит на жука и видит, что он превратился в бутылочку. "Выпей меня". Алиса пьет ("+8"), и видит, что Чуковский превратился в Белого Кролика, а Маша в Овцу, а Коля в Мелофон. А появление Белого Кролика - это есть возможность перехода к новой локации.

При этом я всегда могу ввести # и увидеть ситуацию глазами любого другого персонажа.

Вот, вкратце всё. Никаких глаголов, подлежащих и сказуемых.

Теперь то, как я понимаю, из чего состоит код.

Локация. [/]  (Как комната в первых Гоблинах). Выход из нее и есть задача. Разрешив ситуацию, мы активируем Ключ, т.е. объект, который нас из локации выводит. Это может быть Белый Кролик, или Дверь, или Сапоги Скороходы и т.д. Пройдя локацию, к ней можно вернуться, но не обычным способом (север, юг и т.д.), а просто взаимодействуя с Ключами.
      Описание локаций зависит от персонажа, которого игрок изберет, и состояния этого персонажа.

[b] Объекты.

            Они имеют
            Состояние   (ЧуковскийКролик, КоляМелофон, что объект делает в определенный момент, "сидит на подстилке и ест печенье." и т.п.)
            Описание   (минимум три варианта для каждого Состояния)
            Методы реагирования   на парсерывзаимодействия; они зависят от Состояния  объекта (см.ниже)

События. Они являются Триггерами изменения Состояния Объектов.

Парсеры.  
                        # <номер объекта> для "входа" в (одушевленный) объект номер такой-то.
                       + <номер объекта> для "недеструктивного" взаимодействия
                       - <номер объекта> для "деструктивного" взаимодействия
                      ! <номер объекта> для "восклицательного" обращения
                       ? <номер объекта>  для "вопросительного" обращения

Каждый Объект имеет набор свойств, соответствующий этим парсерам, для каждого Состояния соответственно. Например, Алиса может "швырнуть" печенье в Чуковского (5-3). "Чуковский ловко уворачивается, и укоризненно качает пальцем." Но она может "предложить" его ему (5+2). "Чуковский благодарит и любезно отказывается. Он сыт, по-видимому." Также подобная операция может стать триггером для События, и Чуковский поменяет Состояние (превратится в Рыбу, например.)

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

Как упростить ввод парсеров? Удобно ли будет вводить 5!6 или !56 (парсер, первый объект, второй объект)? Есть ли смысл вставлять и обрабатывать пробелы?

Заранее большое спасибо всем желающим откликнуться!

Неактивен

0    0    #3
02.03.2006 12:17

b0n0b0
Участник
Зарегистрирован: 28.02.2006
Сообщений: 7

Re: Алиса в Стране Почемутостей

qwerty написал:

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

Вот-вот. Вот она, помощь-то! Так и знал, не стоит на русскоязычный форум лезть; всё равно толком никто ничего не посоветует.

Спасибо.

Неактивен

0    0    #4
02.03.2006 13:11

b0n0b0
Участник
Зарегистрирован: 28.02.2006
Сообщений: 7

Re: Алиса в Стране Почемутостей

fireton написал:

По-моему, какой-то жуткий гемморой. Как для автора, так и для игрока. Или я не понял. smile

Большего гемора, чем ввод русских команд и обработка падежей, представить себе трудно. Обогнать его по вынужденной  нелитературности может только ввод венгерских или эстонских команд (16 падежей!).

Поэтому спасти "дело русской IF" может спасти только "очень простой парсер".

Это раз.

А во-вторых, меня мало интересует стандартная формула игрового процесса "пойти туда, открытьвзять то, ударитьприменить это". В силу того, что все почему-то стараются придерживаться именно этой формулы, в адвентурах до сих пор царит элементарщина. А экспериментируют только Плоткин и Кадр.

Я просил, если кому-то НЕ ЛЕНЬ, показать, как можно оформить в коде, например, на ТАЦ, или ИНФОРМ, идею "смотреть глазами одного из персонажей". У меня есть примерный код на Java.
Куски кода - интересно.
Советы - неинтересно.

Неактивен

0    0    #5
03.03.2006 16:20

b0n0b0
Участник
Зарегистрирован: 28.02.2006
Сообщений: 7

Re: Алиса в Стране Почемутостей

Спасибо за ответы! Кое-что интересное подсказали." Space under window" я частенько вспоминаю.

Неактивен

0    0    #6
07.03.2006 17:26

b0n0b0
Участник
Зарегистрирован: 28.02.2006
Сообщений: 7

Re: Алиса в Стране Почемутостей

qwerty написал:


DELPHI или любой другой язык программирования высокого уровня: если интересует, могу помочь, но нужно обсудить некоторые детали. а кроме того- я ведь тоже собираюсь учавствовать в КРИЛ, и мне на мой квест тоже нужно время. готовые куски кода СИЛЬНО разнятся в зависимости от желаемого конечного результата: мой подход к написанию программ совершенно непохож на подход автора программ из предыдущего моего поста.

Отлично, вот это уже внушает горизонты!
Из языков подойдет ли Java? Я бы всё же ориентировался на неё, поскольку это, кроме всего, выход на мобильные девайсы.

Сейчас читаю доки к TADS 3 и изучаю многие фишки, внедренные там, в частости настройки и программирование поведения NPC (и как раз встречаю то, что хотел сам воплотить на Java!). Теперь советуюсь с программерами на Яве, как и что можно cлепить.

Да, то, что в ТАЦ уже многое продумано заранее, частенько сбивает с толку. С одной стороны, многое можно понастраивать, а с другой стороны, пока разгребешь, что и где, иногда ум за разум залетает. (Но это с непривычки, разумеется.)

Если охота позабавиться с программированием первого сюжета - пропечатаю сценарий здесь, мне совершенно не жалко. И вовсе не собираюсь взваливать весь программинг со своих плеч! Мне не меньше интересно учиться самому.

Неактивен

0    0    #7
10.03.2006 12:07

b0n0b0
Участник
Зарегистрирован: 28.02.2006
Сообщений: 7

Re: Алиса в Стране Почемутостей

А интересно, можно ли работать в ActionScript Flash, да так чтобы задавать класс Актеров, модели их поведения, в общем основной набор функций и классов из ТАДС 3. Ведь там парсинг динамического текста  пробработан весьма неплохо! Помнится, когда-то я интересовался седьмым флешом, а восьмой, говорят, еще лучше с вводом текста работает. Какие мысли?

Неактивен

Powered by PunBB
© copyright 2001–2022 iFiction.Ru