Всем привет.
Позавчера выпустил Прототип 8 фикс 7 бета 2, основная цель которого - поддержка ловушек в движке. Ловушки (они же перехваты) - позволяют перехватить любое действие, совершаемое над предметом. Т.е. можно поймать момент, когда какое-то действие (по имени) совершается с каким-то предметом (как параметр действия) - а именно: до действия (before), после действия (after), а также можно заменить действие (instead), - и выполнить свой набор инструкций.
Если при выполнении какого-то действия есть хотя бы одна замена (instead), тогда другие ловушки не работают, а выполняется только ловушка замены. Если нет, тогда выполняются все ловушки "до", затем действие, затем все ловушки "после". Если во время действия произошла ошибка, и оно не выполнилось, очередь до ловушек "после" не доходит. Это же верно, если ошибка произойдет во время выполнения любой из ловушек - следующие инструкции не будут выполняться.
Например, есть действие "взять", которое имеет шаблон "взять (что, В.П.)", в котором второй элемент (объект в В.П.) передается в процедуру Взять как параметр "предмет". В этом случае можно создать ловушки на действие "взять", совершаемое с объектом "предмет":
Предмет "Яблоко":
Ловушка на действие "взять" с объектом "предмет" до действия:
- вывести сообщение "Вы протягиваете руку, чтобы взять яблоко."
Ловушка на действие "взять" с объектом "предмет" после действия:
- вывести сообщение "Какое вкусное яблоко!"
Выглядит это примерно следующим образом:
> взять яблоко
Вы протягиваете руку, чтобы взять яблоко.
Вы взяли яблоко.
Какое вкусное яблоко!
> взять яблоко
Вы протягиваете руку, чтобы взять яблоко.
Яблоко уже у вас в инвентаре.
Или вариант с заменой:
Предмет "Яблоко":
Ловушка на действие "взять" с объектом "предмет" вместо действия:
- вывести сообщение "Яблоко оказалось приклеенным к полу!"
> взять яблоко
Яблоко оказалось приклеенным к полу!
Хотя, возможно, даже при замене действия (вместо / instead) стоит всё же выполнять ловушки "до".
Т.е. вот так:
Предмет "Яблоко":
Ловушка на действие "взять" с объектом "предмет" до действия:
- вывести сообщение "Вы протягиваете руку, чтобы взять яблоко."
Ловушка на действие "взять" с объектом "предмет" вместо действия:
- вывести сообщение "Яблоко оказалось приклеенным к полу!"
> взять яблоко
Вы протягиваете руку, чтобы взять яблоко.
Яблоко оказалось приклеенным к полу!
Как думаете?
воскресенье, 18 декабря 2011 г.
четверг, 10 марта 2011 г.
Прототип 8 фикс 5
Привет. Сорри, что давно не писал.
Изменений в ЯРИЛе с первого прототипа очень много.
Вкратце, перечислю фичи текущей версии (правда, Прототип 8 фикс 5 ещё не вышел, но скоро).
- Родной Редактор платформы, позволяющий редактировать игру без ручного кодирования XML.
- Создание локаций с названием, описанием, ссылками на соседние локации (по 4м сторонам света).
- Создание предметов с названием, описанием, ссылкой на словарные слова, указанием первоначальной локации, редактирование признаков предмета.
- Задание стартовых процедур и локаций.
- Подключение библиотек.
- Стандартная библиотека "Глаголы" с несколькими глаголами (переходы по сторонам света, осмотр, взять, положить, инвентарий).
- Редактирование процедур (из инструкций пока можно только редактировать сообщения).
- Каждый объект (в редакторе - пока только предметы) могут ссылаться на несколько словарных словосочетаний, одно из них помечено как главное. Каждое словосочетание склоняется по падежам. Это позволяет создавать длинные имена ("глиняный кувшин со сметаной"), и обращаться в игре к таким предметам, используя разные части этого имени ("кувшин", "глиняный кувшин", "со сметаной кувшин" и т.д.)
- Действия пока не редактируются, но загружаются их XML. Каждое действие описывается как совокупность шаблона фразы (команды игрока) и ссылки на процедуру обработки при совпадении шаблона с введённой игроком фразой. Шаблоны поддерживают жёсткую последовательность элементов, таких как набор синонимов (или) и ссылка на объект в падеже (с обращением к объекту по любому набору его словарных слов).
- Механизм перекрытия системых процедур, таких как ОписатьТекущуюЛокацию (showLocDesc), которая запускается автоматически, к примеру, если у игры стоит настройка "показывать описание первой локации".
Это пока всё, что удалось вспомнить навскидку.
Я сейчас заканчиваю переработку словаря (раньше он поддерживал только ссылку на одно слово из объекта), затем, скорее всего, будет релиз этой версии (Прототип 8 фикс 5).
Подписаться на:
Сообщения (Atom)