Создание простой адвентюры — различия между версиями
Odyadina (обсуждение | вклад) (→Книга задач) |
Odyadina (обсуждение | вклад) (→Книга задач) |
||
Строка 122: | Строка 122: | ||
[[Файл:Pic12.jpg]] | [[Файл:Pic12.jpg]] | ||
− | Задачи, которые добавляются в задачник - текстовые объекты (могут быть и графические, и машины, и помещенные в один группы объектов). В адвенчуре будет 3 задачи. В этом частном случае все они будут добавляться на одном экране 1_hotel, следовательно, на сцене с памятью Inv_1 нужно создать три текстовых объекта, параметры которых приведены на рисунке ниже. | + | Задачи, которые добавляются в задачник - текстовые объекты (могут быть и графические, и машины, и помещенные в один группы объектов). В адвенчуре будет 3 задачи. В этом частном случае все они будут добавляться на одном экране ''1_hotel'', следовательно, на сцене с памятью ''Inv_1'' нужно создать три текстовых объекта, параметры которых приведены на рисунке ниже. |
[[Файл:Pic13.jpg]] | [[Файл:Pic13.jpg]] | ||
− | Первая задача должна быть в задачнике с самого начала игры. Это означает, что ее нужно добавить в задачник при запуске экрана. Для этого на сцене 1 (расположить машину можно на любой сцене) создадим безресурсную машину first_task, у которой будет два состояния (см.Рис.). Как видно из условия, машина выполнится только один раз за всю игру при ините экрана. В состоянии 1 выполняется добавление первого текста в задачник (две первые команды set). В поле val_obj выбираем объект, который помещается в инвентарь (задачник). | + | Первая задача должна быть в задачнике с самого начала игры. Это означает, что ее нужно добавить в задачник при запуске экрана. Для этого на сцене ''1'' (расположить машину можно на любой сцене) создадим безресурсную машину ''first_task'', у которой будет два состояния (см.Рис.). Как видно из условия, машина выполнится только один раз за всю игру при ините экрана. В состоянии 1 выполняется добавление первого текста в задачник (две первые команды ''set''). В поле ''val_obj'' выбираем объект, который помещается в инвентарь (задачник). |
[[Файл:Pic14.jpg]] | [[Файл:Pic14.jpg]] | ||
+ | |||
+ | Открытие и закрытие блокнота описано двумя состояниями машины ''book'' (рисунок ниже). Состояние ''open'' вызывается кнопкой ''notebook'', находящейся в игровой панели. Состояние ''close'' вызывается кнопкой ''close'', находящейся в открытом блокноте. | ||
+ | |||
+ | [[Файл:Pic15.jpg]] | ||
=== Добавление мини-игр === | === Добавление мини-игр === |
Версия 13:17, 5 февраля 2013
Урок 10 << | Оглавление | >> Урок 1 |
---|
Цель: создать простой адвентюрный проект
Задачи:
- Ознакомится с понятием концепта игры и её сценария
- Научться работать с инвентарем и книгой заданий
- Добавить в проект миниигры
- Подготовить игру к релизу и протестировать результат на телефоне и планшетнике
Концепт и сценарий
Создание больших игровых проектов типа адвентюр начинается с написания концепта игры. Концепт - это короткий рассказ из которого становится ясным: антураж игры, её завязка, основные сюжетные линии и финальная развязка игры. Сценарий - это подробное описание архитектуры игры, списка экранов, предметов на них и логики прохождения. Для реальной игры, обычно, концепт состоит из одной странички A4 формата. Сценарий, в зависимости от сложности игры , может занимать до 100 страниц и более.
Концепт
Сценарий
Создание игры
Задача: создать проект-адвенчуру, используя готовую базу ресурсов и текстовую базу.
Описание адвенчуры: Игра начинается в холле гостиницы, в задачнике есть первая задача - "Позвонить по номеру...", происходить диалог с администратором. Администратор просит помочь разобрать ключи, в задачник записывается вторая задача "Помочь разобрать ключи". По клику на ключи открывается мини-игрушка мемори. По прохождению мемори, открывается локация комната. По клику на телефон открывается мини-игра "набор номера", но позвонить не удается так, как телефон отключен за неуплату, следует обратиться к администратору. Администратор дает третье задание "Навести порядок во дворе". Открывается локация двор гостиницы и хидден во дворе. По прохождению хиддена в инвентарь попадают собранные предметы, с которыми игрок может передвигаться по гостинице. Для завершения третьего задания необходимо правильно применить собранные предметы во дворе. После мини-игры во дворе администратор включает телефон. Набрав правильный номер игрок завершает адвенчуру.
Экраны
Большинство проектов адвенчур содержат большое количество экранов. По-этому очень важно с самого начала создания игры продумать структуру проекта в редакторе.
Сюжет следует разделить на блоки. Блоки - на сюжетные локации. Сюжетные локации - на простые локации, экраны. Например, игрок исследует город. К сюжетной локации можно отнести вокзал, отель, больницу, магазин и т.д. Каждую из таких локаций следует разбить на простые локации, экраны. Так больницу можно разбить на холл, коридоры, кабинеты и т.д.
В дереве проекта экраны относящиеся к одной сюжетной локации следует размещать рядом, в той последовательность, в которой они следуют в игре. Названия экранов должны быть короткими и при этом давать понятие о том, что находиться на экране. Помимо человека, который создает игру, названия должны быть понятны и другим людям, которые могут работать с проектом. Например, 1_h85_out, может нести такую информацию, 1 - первый блок, h85 - локация, дом №85, out - снаружи, двор.
Кроме экранов-локаций проект может содержать экраны с встроенными мини-играми. О добавлении мини-игр в проект написано ниже.
В проекте должен быть глобальный экран, содержащий объект типа Options (опции). Вся история прохождения игры будет записываться в опции с помощью различных параметров.
Экран-локация:
Экран содержит несколько сцен. Количество сцен определяется либо их назначением (сцена с фоновыми объектами, сцена с мини-игрой, сцена с игровым интерфейсом и т.д.), либо положением по оси Z (можно расположить три ракурса комнаты на одном экране в разных сценах и по-очереди включать сцены, будет похоже на переход между экранами, только быстрее).
Сцену с игровым интерфейсом желательно располагать выше остальных сцен и расшаривать во все экраны. Тогда объекты игрового интерфейса (инвентарь, блокнот, карта, подсказки и т.д.) будут доступны во всех локациях.
Наша адвенчура будет содержать 6 экранов. Для начала необходимо открыть проект Lesson_11, который уже содержит готовую базу ресурсов и текстов.
В пустом лэйауте создаем экран 1_hotel - первый игровой экран, с которого будет начинаться адвенчура. На экране будет находиться три сцены:
1 - сцена содержащая основные графические объекты, активные зоны, навигацию и т.д., уникальные для данного экрана. На эту сцену добавим фон (bg_hotel), анимацию лица (hotel), ключи (keys), две кнопки(btn_green_up), два текстовых облака (text_cloud_1 и _2) и маску (mask). Расположим объекты на экране так, как показано на Рис.1.
Настроим кнопки (стрелочки) и текстовые объекты (облачка). Параметры настройки приведены ниже (Рис.2). В первом окне показаны настройки text_cloud_2, во втором - text cloud_1, в третьем - правой кнопки, в четвертом - левой кнопки. Для кнопок поле перейти на заполняется после того, как будут созданы соответствующие экраны.
Теперь настроим анимацию лица. Персонаж на экране должен говорить, когда его реплика, и замолкать по клику или по истечению некоторого времени. Следовательно, анимации меняет тип объекта на machine (Рис.3). Машина будет иметь два состояния off (молчание, анимация невидима) и on (разговор, анимация видима и длится 3 секунды).
Маске установим такие параметры: al - 0,01; scale x - 53; scale y - 37; тип - machine. Эта маска будет воспринимать любой клик по экрану и управлять диалогами, задачником и т.д. Она должна находиться по z выше всех объектов сцены, кроме кнопок переходов между экранами.
Следующая сцена на первом экране Inv_1. Эта сцена будет содержать все задания и инвентарь, которые будут в игре добавляться на этом экране. Обязательно у этой сцены должен быть параметр память = 1.
Третья сцена game первого экрана будет содержать панель с инвентарем и задачник с задачами.
Второй экран 2_memory содержит одну сцену с мини-игрушкой memory. Как встроить мини-игру описано в соответствующем разделе.
Третий экран 3_room, в него игрок попадает по левой кнопке (стрелочке) с первого экрана. Экран содержит две сцены:
3 - сцена содержащая основные графические объекты, активные зоны, навигацию и т.д., уникальные для данного экрана. На эту сцену добавим фон (bg_hotel), кнопку(btn_green_up) и маску (mask).
Кнопку располагаем справа и настраиваем аналогично кнопке btn_yard c первого экрана, за исключение параметров: состояние - пустое поле (по умолчанию будет состояние up); перейти на - экран 1_hotel. Маску будет осуществлять переход на четвертый экран. На рисунке ниже показаны параметры, которые необходимо установить маске. Поле перейти на заполняется после того, как будет создан соответствующий экран.
Вторая сцена game - расшариная. Зайдем на первый экран, скопируем сцену game и вставим как ссылку в экран 3_room.
Четвертый экран 4_phone ,будет содержать одну сцену с мини-игрушкой "набор номера", которая будет реализована с использованием машин и описана в разделе мини-игры. На эту сцену можно поместить все объекты из папки phone базы ресурсов.
Пятый экран 5_yard будет содержать Хидден и мини-игру "уборка во двре". На экране будет нахоться три сцены:
5 - сцена содержащая основные графические объекты, активные зоны, навигацию, хидден-объекты и т.д. На эту сцену можно поместить все объекты из папки yard базы ресурсов, кроме Inv_*.
Inv_5 - сцена содержащая инвентарные объекты, который будут добавляться на этом экране. Обязательно у этой сцены должен быть параметр память = 1.
Третья сцена game - расшариная. Зайдем на первый экран, скопируем сцену game и вставим как ссылку в экран 5_yard выше остальных сцен.
Шестой экран Options - глобальный (1), содержит одну сцену и один безресурсный объект типа Options. В процессе создания адвенчуры машиной (кнопкой и т.п.) нужно будет записывать в опции какой-то параметр.
После того, как все экраны и сцены созданы должна получиться структура как на рисунке ниже.
Инвентарь
Инвентарь - группа объектов, которые игрок может использовать в разных локациях.
Значительная часть игрового времени в адвенчуре уходит на то, что игрок ищет нужные предметы (ключ, бинокль, лом, часть замка, монеты), а затем применяет их в других локациях (ключем, найденным на дне фонтана, открывает потайную дверь в камине, монеты обменивает на карту и т.д.)
...
Книга задач
Книга задач - объект игрового интерфейса, содержит перечень заданий, которые должен выполнить игрок в ходе прохождения адвенчуры. Задания могут добавляться со временем. Помимо задач, в книге могут быть подсказки и отметки о выполнении.
Книгу задач можно реализовать используя объект Inventory. Только вместо панели инвентаря будет разворот блокнота с двумя видимыми ячейками таблицы, в которые вместо предметов будут помещаться текстовые объекты.
В адвенчуре книга задач будет находиться на расшариной сцене game. Для реализации задачника необходимо создать 4 объекта: машина book (имеет графический ресурс развернутой книги с фоном), инвентарь, таблица и кнопка для закрытия блокнота. Основные параметры этих объектов приведены на рисунке ниже. Открытие задачника будет вызываться кнопкой notebook, находящейся в игровой панели. Дополнительно таблице можно добавить кнопки для листания, если задач будет больше 6 (больше, чем отображается в таблице).
Задачи, которые добавляются в задачник - текстовые объекты (могут быть и графические, и машины, и помещенные в один группы объектов). В адвенчуре будет 3 задачи. В этом частном случае все они будут добавляться на одном экране 1_hotel, следовательно, на сцене с памятью Inv_1 нужно создать три текстовых объекта, параметры которых приведены на рисунке ниже.
Первая задача должна быть в задачнике с самого начала игры. Это означает, что ее нужно добавить в задачник при запуске экрана. Для этого на сцене 1 (расположить машину можно на любой сцене) создадим безресурсную машину first_task, у которой будет два состояния (см.Рис.). Как видно из условия, машина выполнится только один раз за всю игру при ините экрана. В состоянии 1 выполняется добавление первого текста в задачник (две первые команды set). В поле val_obj выбираем объект, который помещается в инвентарь (задачник).
Открытие и закрытие блокнота описано двумя состояниями машины book (рисунок ниже). Состояние open вызывается кнопкой notebook, находящейся в игровой панели. Состояние close вызывается кнопкой close, находящейся в открытом блокноте.
Добавление мини-игр
В адвенчуре может быть множество встроенных мини-игр. Для создания мини-игр можно использовать готовые механики (Memory, Hidden, Patchwork, Labyrinth, Match, Pipes, Puzzle), либо создавать мини-игры с помощью машины состояний. Второй способ займет много больше времени, зато позволит создать оригинальную мини-игру. Чем разнообразнее будут мини-игры, тем интереснее будет адвенчура.
Размещать мини-игру лучше всего на отдельном экране. Экран с мини-игрой следует называть так, чтоб было понятно, к какой локации он относится и какой тип игры, например, Hotel_memo (сразу понятно, что речь идет о игре Memory в локации отель).
Так же мини-игру можно размещать на отдельной сцене в экране-локации. Тогда сцену с мини-игрой можно будет включать (отключать), когда игрок открывает (закрывает) мини-игру, с помощью параметра vis. Если установить сцене параметр vis=0, то все объекты, находящиеся на сцене будут невидимы для клика. Если установить параметр vis=1, то сцена станет видимой.
Третий способ размещения мини-игры на одной сцене с объектами локации. Этот способ наиболее неудобен так, как можно легко спутать объекты относящиеся к мини-игре с объектами относящимися к локации.
У мини-игры должно быть минимальное количество "точек входа". Если в игре существует несколько моментов, когда игрок может попасть в мини-игру, то во все моменты должно вызываться одно (если позволяет сюжет) и то же состояние, в котором открывается мини-игра. По прохождению мини-игры следует записывать параметр в опции, что игра сыграна, например, hidden1=1. Тогда этот параметр можно будет использовать в различных условиях, например, если игра сыграна, то открыть сундук (дверь).
Первая мини-игра - Мемори с ключами. Открываем экран 2_memory. На сцену добавляем фон (bg_memory) и кнопку выхода(btn_red_up). Создаем безресурсный объект m_done, машину, которая будет запускаться объектом memory по завершению и записывать в опции игровой параметр. Создаем на сцене объект типа memory. Настраиваем кнопку выхода, машину и объект memory как показано на рисунке ниже.
Вторая мини-игра - Набор номера. На рисунке ниже показано дерево проекта справа. На экране 4_phone находятся игровые объекты, расположение которых видно в центре рисунка. Слева раскрыты параметры маски, которая будет проверять набранный номер и блокировать клик. Объекты с 0 по 9 - маски воспринимающие клик, каждая маска находится над соответствующей цифрой набора. Машина phone_table будет вращаться, записывать параметры в опции и запускать проверку номера в зависимости от того, какая цифра нажата. На рисунке ниже описаны состояния машины phone_table. В состоянии init машина ничего не выполняет. Состояния с 1 по 0 однообразны, вызываются кликом на соответствующую маску, машина вращается на определенный для каждой цифры угол. Состояния 1, 5, 6, 8 отличаются тем, что в них увеличивается параметр call, если цифры нажимать в правильной последовательности (56188). В состоянии back машина возвращается в исходное положение, увеличивает параметр click на 1 (счетчик кликов, чтобы нельзя было набрать, например, 513688) и вызывает проверку.
Машины с 1 по 0 имеют два состояния, которые приведены на рисунке ниже. При этом параметры объектов такие: al = 0,01; scale x = scale y = 3. Графический ресурс - mask из базы ресурсов. Значения для выделенного на рисунке поля: 1,2,3,4,5,6,7,8,9,0 для каждой из машин соответственно.
Машина recall осуществляет сброс набранного номера. По клику происходит перерисовка графического ресурса данной машины (опускается рычаг), обнуление параметров call и click, которые отвечали за правильность набора и счет кликов и инит проверочной машины. Состояния для машины сброса показаны на рисунке ниже.
Машина m_control осуществляет проверку набранного номера и вызывает соответствующее текстовое сообщение. Ниже показаны состояния машины. В состоянии init машина прозрачна для клика. В состояние block машину переводит нажатие на одну из масок 0-9, в этом состояние машина блокирует следующий клик до тех пор, пока не запишутся параметры. Состояние check вызывается машиной phone_table; в этом состоянии происходит проверка условий и переход в одно из трех следующих состоянии. Если параметр game<5 (т.е. игрок не убрал двор), то осуществляется переход в состояние no_money. Если параметр click=5, а call!=5 (т.е. набран номер из 5 цифр, но неправильный), то осуществляется переход в состояние err. Если параметр click=5 и call=5 (т.е. набран правильный номер), то осуществляется переход в состояние done. В поле val_txt указываются текстовые ID, для этого нужно перетянуть соответствующий текстовый объект из ресурсов текстов мышкой.
Текстовый объект t_phone имеет графический ресурс text_cloud_3 и является прокликиваемым (1).
Кнопка btn_room имеет те же параметры, что и кнопка выхода с экрана 2_memory, только в поле перейти на нужно указать экран 3_room.
Упражнения
Урок 10 << | Оглавление | >> Урок 1 |
---|