Способы передвижения в парсерных играх
Блог им. ASBer, 30 апреля 2015Перемещения между локациями — основное действие в любой текстовой игре, парсерной или менюшной (разве что кроме однокомнатных).
Но если в менюшной игре для перемещения ГГ в другую локацию достаточно одного ЛКМ по кнопке, в парсерных играх всё гораздо интереснее.Давайте для начала классифицируем все команды, которые может ввести игрок.
Все ниже перечисленные команды при удачном выполнении приводят к перемещению в другую локацию:- Перемещение в указанную локацию: иди в дом; иди на площадь; иди к забору. Вполне логичные команды — куда хочу, туда и иду. Для успешного выполнения в игре должны присутствовать локации «в_доме», «на_площади», «у_забора».
- Перемещения по сторонам света: юг, север, восток, вверх, вниз — самые типовые команды. Именно их опытный игрок будет вводить в первую очередь. И именно их же начинающий никогда не введет самостоятельно без подсказки. Для успешного выполнения, как минимум, должна существовать локация в указанном направлении от текущей.
Также будет неплохо, если игра понимает и другие варианты: иди на север; или просто на север.- Перемещение посредством какого-либо предмета, находящегося или описанного в локации: войди в дверь, иди по мосту, перепрыгни через ручей, пройди сквозь стену. Тоже вполне логичные действия, при условии что эти предметы тем или иным способом ведут в другую локацию.
- Движения внутрь и наружу. войди (вбеги, влети), выйди (выбеги, вылети). Действия основаны на представлении о вложенности пространств. Чтобы эти команды работали, необходимо описать в игре соответствующие отношения между локациями.
- Направления влево, вправо, вперед, назад. Тут есть 2 варианта:
Если в описании локации зафиксировано положение ГГ: «Ты стоишь перед зданием мэрии. Слева от тебя библиотека, направо порт». В этом случае в локации достаточно привязать эти действия к сторонам света.
Если положение ГГ свободно, тогда «назад» означает возвращение в предыдущую локацию, «вперед» — движение в сторону, противоположную предыдущей локации, налево и направо также динамически пересчитываются в стороны света. Для выполнения этих команд нужно помнить локацию и сторону света, откуда мы пришли. 2й вариант не столь однозначен для игрока, но у него всегда должен быть выбор из всего спектра возможных команд.- Любое произвольное действие, приводящее к перемещению в другую локацию: нажатие кнопки, заклинание телепортации, проглатывание синей таблетки. Все что нужно автору, имеет право быть. Но понятно, что подобные действия завязаны на сюжет, и никак не могут быть стандартизированы. Их реализация — дело автора.
ИТОГО: получается 6 классов команд. Если кто знает больше, обязательно напишите, возможно я что-то упустил.
Перемещения между локациями редко бывают безусловными. Чтобы проход открылся, обычно нужно решить какую-нибудь загадку, нажать скрытую кнопку, переставить слоников в порядке убывания, или хотя-бы просто открыть дверь.
При таком количестве возможных команд, проверка условий перехода, казалось бы, должна превратиться в кошмар. Но при ближайшем рассмотрении все типы команд сводятся к первому типу. На самом деле не важно, идёшь ты на север, в дом, в дверь или прямо, фактически ты всё равно идёшь в дом. Получается, что остальные типы команд имеют лишь лингвистическую ценность, расширяя спектр распознаваемых предложений.
Нам надо проверить лишь одно — можно ли в данный момент пройти из локации А в локацию Б.Платформа ТОМ поддерживает карту локаций. Каждая локация позиционируется в системе координат X, Y, Z. По умолчанию между соседними локациями всегда есть проход. Этот проход можно перекрыть, установив «стену» в локации. Проход можно также перенаправить в другую локацию, если это необходимо (например, выход в окно 2-го этажа приведет во двор уровнем ниже).
Для проверки перемещения есть специальная системная команда: check <локация>. Команда проверяет возможность прохода между локациями по карте и вызывает дополнительные проверки, реализованные как методы текущей локации.
Проверки-методы в локации контролируют выполнение условий, необходимых для перехода.
Системная команда goto <локация> осуществляет безусловный переход в локацию.Всё это в целом создаёт минимально необходимый функционал для перемещений в игре.
P.S. Вышеописанное актуально для версии 2.a.4.4 и выше.
P.P.S. На текущий момент поддерживаются все виды команд, за исключением влево, вправо, вперед, назад.
ifhub.ru: Способы передвижения в парсерных играх
Сообщений 1 страница 3 из 3
Поделиться12015-06-12 11:00:21
Поделиться22015-06-12 20:09:23
Платформа ТОМ поддерживает карту локаций. Каждая локация позиционируется в системе координат X, Y, Z. По умолчанию между соседними локациями всегда есть проход.
Что делать, если одна большая комната с одной стороны ведёт в несколько более маленьких комнат. Фактически, все они будут, допустим, на севере. Как запрограммировать такую ситуацию? Или, например, есть коридор, с обоих сторон которого есть множество комнат. Как расположить локации в системе координат ТОМа?
Поделиться32015-06-12 23:28:24
Локация - это место, все предметы в котором доступны в несколько шагов, что соответствует небольшой комнате.
Большой зал и длинный коридор нужно разбивать на несколько локаций, что логично. И если, например, посредине коридора ничего не происходит, локацию там делать тоже не нужно. Локация - это способ рассказать историю. В игре может быть очень большая карта, но локации на ней надо располагать только там где есть что рассказать. Нет ничего хуже пустых локаций с дежурным описанием, которые игрок проскакивает на автомате.
Вполне приемлемый вариант, мне думается:
>иди на север
Твой путь на север был долгим и трудным. Несколько месяцев ты преодолевал различные трудности и много раз заглядывал в глаза смерти.
Но всё же ты достиг цели, и одним прекрасным утром вошел в ворота северного города N.
Такое литературное описание гораздо лучше 100 проходных локаций на пути к городу N.