|
|
Голосование
|
|
Когда стоит провести конкурс русских IF-игр?
[Результаты]
|
|
|
Структура игровой базы
|
|
|
Автор: Chip | 2004-05-29 01:08:30 | просмотров: 5886
|
|
ИГРОВАЯ БАЗА
С помощью редактора игровой базы разработчику системы IFER необходимо будет написать шаблон игры, где нужно прописать набор основных действий (идти, смотреть, взять, положить и т.д.) и набор общих свойств предметов, которые будут использоваться этими действиями. Шаблон игры, как и словарь, необходимо со временем расширять и дополнять.
Пример. Действие Осмотреться:
- Создаём общее свойство Описание для Локаций
- В условии Иначе действия Осмотреться пишем модуль:
Сообщить(Персонаж.ТекущаяЛокация.Описание);
Пример. Действие Осмотреть ОснПредмет:
- Создаём общее свойство ОписаниеОсмотра для Предметов
- В условии Иначе действия Осмотреть пишем модуль:
Если (ОснПредмет.ТекущаяЛокация=Персонаж.ТекущаяЛокация) Тогда
Сообщить(ОснПредмет.ОписаниеОсмотра);
Иначе
Сообщить("Здесь нет "+Род(ОснПредмет)+".");
КонецЕсли;
По аналогии можно прописать множество других действий, которые в ответ будут сообщать одно из свойств Предмета (нюхать, трогать, облизать и т.д.).
Пример реализации действия Взять Вы можете наблюдать на рисунке ниже (в разделе действий).
В итоге автору достаточно только добавить объекты и ввести начальные значения их основных свойств, чтобы получить готовую модель игрового мира, в котором уже можно совершать весь спектр стандартных действий.
Но, естественно, игра не была бы игрой, если бы в ней не было загадок и всякого рода сцен. Дальнейшая работа автора и заключается в описании условий и так называемых cкриптов.
Пример. Допустим, при попытке пройти через таможню с гранатой героя арестовывают (пойти на север из локации "таможня"):
- Добавляем условие в действие Север:
(Персонаж.ТекущаяЛокация=Локация.Таможня) и (Предмет.ТекущаяЛокация=Персонаж)
- В модуле добавленного условия пишем скриптовую сценку по аресту:
Сообщить("Таможенник достал пистолет, и выстрелил в потолок. Пуля отскочила от бетона и срикошетила герою в голову.");
ВыполнитьДействие(Действие.КонецИгры,,,);
При этом для добавления условий желательно придумать помощник, который бы позволял задавать условие более наглядно, используя для управления только мышку.
ПРЕДМЕТЫ
Под предметами, в данный момент, понимается совокупность всех объектов игрового мира, с которыми игрок может совершать какие-либо действия.
Предмет определяется своим уникальным ИДЕНТИФИКАТОРОМ. К предмету привязывается набор имен существительных и прилагательных, по которым АНАЛИЗАТОР КОМАНД будет его находить. И, самое главное, у предмета будет набор свойств, которые используются в модулях ДЕЙСТВИЙ (см. ниже). При создании игры автор разрабатывает свойства предметов и задает их начальные значения. Для упрощения работы можно предусмотреть возможность задания некоторого набора ОБЩИХ свойств для всех предметов (например: Вес, Локация, Описание и др.).
Локации тоже можно задавать в общем списке предметов, но для облегчения освоения системы и создания игр можно выделить локации в отдельную ветвь и задавать аналогично предметам.
Персонажи тоже требуют вынесения в отдельную ветвь, но их пока опустим.
ДЕЙСТВИЯ
Вводя команду, игрок желает что-то изменить в базе данных игры или что-то узнать о ней. ДЕЙСТВИЕ и является связующим звеном между игроком и игровым миром.
ДЕЙСТВИЕ, как и предмет, характеризуется своим уникальным ИДЕНТИФИКАТОРОМ. К действию привязывается набор КОНСТРУКЦИЙ ГЛАГОЛОВ, по коим АНАЛИЗАТОР КОМАНД будет его находить. В действии может участвовать до трех предметов: основной, вспомогательный и дополнительный. Галочками указываются предметы, необходимые для совершения действия.
ПРИМЕР. Игрок хочет «положить что-либо» - тогда в этом ДЕЙСТВИИ участвует только основной предмет. Если же игрок хочет «положить что-то на что-то другое» - тогда, в понимании данной системы, это уже совсем ДРУГОЕ ДЕЙСТВИЕ, в котором участвует уже два предмета – основной и дополнительный. У описанных действий будут разные конструкции глагола.
Допустим, анализатор команд нашёл нужное действие и количество предметов для его совершения. Далее происходит следующая последовательность действий:
- Запускается модуль под названием «В начале»;
- Проверяется правдивость введенных условий и запускается модуль, если условие выполняется;
- Если ни одно из условий не выполнилось, запускается модуль «Иначе»;
- Запускается модуль «В конце».
ПРИЛОЖЕНИЕ – ЧТО ДОЛЖНО БЫТЬ В ЯЗЫКЕ МОДУЛЕЙ
1.В модуле действия есть несколько предопределенных переменных:
- ОснПредмет – основной предмет
- ДопПредмет – дополнительный предмет
- ВспПредмет – вспомогательный предмет
- Персонаж – тот, кто совершает действие. Пока, предположим, это будет некоторый дополнительный объект со своим набором свойств.
2.Оператор присваивания:
ОснПредмет.Свойство = число, строка, другой объект
Предмет.Бомба.Описание = «Ла-ла»; - изменяем свойство конкретного объекта
Локация.Идентификатор.Свойство = …; - если выделить локации в отдельную ветвь
Персонаж.АлиБаба.Свойство =…; - если персонажей выделить в отдельную ветвь
2.Условный оператор.
Если (условия: равно, больше, меньше, и, или) Тогда
Модуль;
Иначе
Модуль;
КонецЕсли;
3.Вывести текст в игровое окно:
Сообщить(«что-то там произошло или описание чего-то там»);
4.Получить существительное в нужном падеже:
Имен(Имя существительное или Предмет);
Род(); Дат(); Вин(); Твор(); Пред();
5.Цикл
6.Выборка предметов – пробежаться по всем предметам(например, чтобы вывести инвентарь).
7.ВыполнитьДействие(Действие, ОснПредмет,ДопПредмет, ВспПредмет) - вызвать/перенаправить действие из текущего действия.
|
|
Комментарии: 0 | Версия для печати
|
|