Создание простой адвентюры

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
Урок 10 << Оглавление >> Урок 1

Цель: создать простой адвентюрный проект

Задачи:

  • Ознакомится с понятием концепта игры и её сценария
  • Научиться работать с инвентарем и книгой заданий
  • Добавить в проект миниигры
  • Подготовить игру к релизу и протестировать результат на телефоне и планшетнике

Концепт и сценарий

Создание больших игровых проектов типа адвентюр начинается с написания концепта игры. Концепт - это короткий рассказ из которого становится ясным: антураж игры, её завязка, основные сюжетные линии и финальная развязка игры. Сценарий - это подробное описание архитектуры игры, списка экранов, предметов на них и логики прохождения. Для реальной игры, обычно, концепт состоит из одной странички A4 формата. Сценарий, в зависимости от сложности игры , может занимать до 100 страниц и более.

Концепт

Название: «Название игры»
Жанр: Мистика, детектив и т.п.
Цель: Глобальные цель(и) в игре
Место: Место игры, основной антураж
Время: Время событий

Идея

Краткая идея и завязка игры (2 строки текста)

Персонажи

  • Имя -
  • Имя -
  • Имя -

Основные локации

  • Локация -
  • Локация -
  • Локация -

Сюжет

Сюжет игры, включая её развязку

Материалы

Дополнительные материалы (исторические, мифологические и т.п.)

Сценарий

ЧАСТЬ 1.

  • Цель:
  • Задачи:
  1. текст
  2. текст
  3. текст

ЧАСТЬ 2.

  • Цель:
  • Задачи:
  1. текст
  2. текст
  3. текст

Сценарий

Создание игры

Проект к этому уроку является готовой простой адвенчурой. Необходимо ознакомится с проектом, его структурой, объектами, их взаимодействием и другими особенностями.

Описание адвенчуры: Игра начинается в холле гостиницы, в задачнике есть первая задача - "Позвонить по номеру...", происходит диалог с администратором. Администратор просит помочь разобрать ключи, в задачник записывается вторая задача "Помочь разобрать ключи". По клику на ключи открывается мини-игрушка мемори. По прохождению мемори, открывается локация комната. По клику на телефон открывается мини-игра "набор номера", но позвонить не удается так, как телефон отключен за неуплату, следует обратиться к администратору. Администратор дает третье задание "Навести порядок во дворе". Открывается локация двор гостиницы и хидден во дворе. По прохождению хиддена в инвентарь попадают собранные предметы, с которыми игрок может передвигаться по гостинице. Для завершения третьего задания необходимо правильно применить собранные предметы во дворе. После мини-игры во дворе администратор включает телефон. Набрав правильный номер игрок завершает адвенчуру.


Экраны

Большинство проектов адвенчур содержат большое количество экранов. По-этому очень важно с самого начала создания игры продумать структуру проекта в редакторе.

Сюжет следует разделить на блоки. Блоки - на сюжетные локации. Сюжетные локации - на простые локации, экраны. Например, игрок исследует город. К сюжетной локации можно отнести вокзал, отель, больницу, магазин и т.д. Каждую из таких локаций следует разбить на простые локации, экраны. Так больницу можно разбить на холл, коридоры, кабинеты и т.д.

В дереве проекта экраны относящиеся к одной сюжетной локации следует размещать рядом, в той последовательность, в которой они следуют в игре. Названия экранов должны быть короткими и при этом давать понятие о том, что находиться на экране. Помимо человека, который создает игру, названия должны быть понятны и другим людям, которые могут работать с проектом. Например, 1_h85_out, может нести такую информацию, 1 - первый блок, h85 - локация, дом №85, out - снаружи, двор.

Кроме экранов-локаций проект может содержать экраны с встроенными мини-играми. О добавлении мини-игр в проект написано ниже.

В проекте должен быть глобальный экран, содержащий объект типа Options (опции). Вся история прохождения игры будет записываться в опции с помощью различных параметров.

Экран-локация:

Экран содержит несколько сцен. Количество сцен определяется либо их назначением (сцена с фоновыми объектами, сцена с мини-игрой, сцена с игровым интерфейсом и т.д.), либо положением по оси Z (можно расположить три ракурса комнаты на одном экране в разных сценах и по-очереди включать сцены, будет похоже на переход между экранами, только быстрее).

Сцену с игровым интерфейсом желательно располагать выше остальных сцен и расшаривать во все экраны. Тогда объекты игрового интерфейса (инвентарь, блокнот, карта, подсказки и т.д.) будут доступны во всех локациях.

Для начала необходимо открыть проект Lesson_11, он уже содержит готовую адвенчуру. Рассмотрим структуру проекта.

На первом игровом экране 1_hotel находиться три сцены:

1 - сцена содержащая основные графические объекты, активные зоны, навигацию и т.д., уникальные для данного экрана.

Рассмотрим основные параметры текстовых объектов t_admin и t_I. Они будут отображать диалог администратора и игрока. Объекты имеют свои графические ресурсы, начальное состояние, и не имеют текстового ID (его указывать не обязательно только в том случае, если каждый раз, когда у текстового объекта будет вызываться состояние first или next, ему будет присваиваться текстовый ID с помощью команды set).

Рассмотрим настройки кнопок btn_yard и btn_room. Кнопка btn_yard находится в состоянии disable (ей будет изменено состояние на up только на время прохождения мини-игры во дворе, все остальное время она не должна нажиматься).

Машина face отвечает за анимацию разговора администратора. Ресурс у этой машины - анимация. Состояние on - разговор, off - молчание.

Машина key в состоянии on становится видимой и по клику осуществляет переход на экран с мини-игрой мемори.

Машина first_task отвечает за запись первой задачи (см. раздел Книга задач).

Машина m_control отвечает за диалог, открытие (закрытие) локаций, добавление задач (см. раздел Логическая связь). Графический ресурс этой машины mask очень мал. Для масок удобно использовать маленькие объекты, растягивая их в несколько раз и изменяя прозрачность.

Следующая сцена на первом экране Inv_1. Эта сцена содержит все задания и инвентарь, которые будут в игре добавляться на этом экране. Обязательно у этой сцены должен быть параметр память = 1.

Третья сцена game первого экрана будет содержать панель с инвентарем и книгу с задачами.

Второй экран 2_memory содержит одну сцену с мини-игрушкой memory. Как встроить мини-игру описано в соответствующем разделе.

Третий экран 3_room, в него игрок попадает по левой кнопке (стрелочке) из первого экрана. Экран содержит две сцены:

3 - сцена содержащая основные графические объекты, активные зоны, навигацию и т.д., уникальные для данного экрана. На этой сцене находится фон, кнопка перехода обратно на 1 экран и кнопка (маска) перехода в мини-игру с набором номера (4 экран).

Вторая сцена game - расшариная. Чтобы сделать сцену расшариной нужно с первого экрана скопировать сцену game и вставить как ссылку в экран 3_room.

Четвертый экран 4_phone ,будет содержать одну сцену с мини-игрушкой "набор номера", которая будет реализована с использованием машин и описана в разделе Добавление мини-игр.

Пятый экран 5_yard будет содержать Хидден и мини-игру "уборка во двре". На экране будет нахоться три сцены:

5 - сцена содержащая основные графические объекты, активные зоны, навигацию, хидден-объекты и т.д.

Inv_5 - сцена содержащая инвентарные объекты, который будут добавляться на этом экране. Обязательно у этой сцены должен быть параметр память = 1.

Третья сцена game - расшариная с первого или третьего экрана.

Шестой экран Options - глобальный (значение 1), содержит одну сцену и один безресурсный объект типа Options. В процессе создания адвенчуры машиной (кнопкой и т.п.) нужно будет записывать в опции различные параметры.

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

В нашей адвенчуре продвижение по игре контролируется параметром game (назвать можно как угодно, но лучше не использовать уже существующие обозначения типов объектов, параметров, команд...) Проверку этого параметра осуществляет машина m_control, которая находится на первом экране. Обычно, такая машина есть на большинстве локаций. Если сюжет линейный, то достаточно одного параметра, если он разветвляется, то нужно будет вводить дополнительные параметры.

Параметр game принимает несколько значений:

1 - записывается, когда вторая задача (разобрать ключи) записывается в задачник;

2 - записывается, когда пройдена игра мемори с ключами, становится активна кнопка перехода в комнату;

3 - записывается, когда в задачник попадает третья задача;

4 - записывается, когда собран хидден во дворе;

5 - записывается, когда сыграна мини-игра по применению предметов во дворе;

6 - записывается, когда позвонили по правильному номеру.

Рассмотрим состояния машины m_control. В первом состоянии происходит проверка параметров и переход в одно из последующих состояний, в остальных состояниях прописан диалог игрока с администратором. Обычно, машины контролирующая диалог имеет много состояний, но все они однообразны. Смена состояний в диалоге происходит по клику на машину (можно по времени). Так же в этой машине происходит запись задач в задачник, включение (выключение) анимации, изменение состояний кнопок (разрешение или запрещение перехода между экранами).

Инвентарь

Инвентарь - группа объектов, которые игрок может использовать в разных локациях.

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

В данном проекте предметы, которые будут добавляться в инвентарь находятся на экране 5_yard. Все объекты размещаются на сцене Inv_5 (сцена с памятью). Иногда объекты размещают в видимой области сцены, иногда за ее пределами. В нашем случае удобнее размещать за пределами и в качестве инвентарных объектов использовать "двойников" тех объектов, что видны на сцене. В инвентарь могут добавляться объекты разного типа.

На сцене Inv_5 находятся объекты типа tool и machine. В свойствах объектов типа tool видно, что они могут таскаться по сцене и при попадании на определенный объект на сцене изменять состояние или параметр другого объекта, после чего автоматически удаляются из инвентаря. Если раскрыть машину, например, inv_4 видно, что все автоматические для объекта tool действия нужно прописывать в состояниях (add - добавление в инвентарь, extract - извлечение из инвентаря, таскание и применение, return - возвращение в инвентарь в случае отпускания не на целевой объект, remove - удаление и изменение состояний, параметров другим объектам). Подробно описание применения инвентарных объектов в разделе Добавление мини-игр.

В расшариной сцене game находится панель инвентаря и задачник. Ниже выделены параметры инвентаря и его таблицы, на которые следует обратить внимание.

Pic18.jpg

В панели инвентаря находиться кнопка btn_book (она не обязательно должна находиться в этой панели, главное, чтобы она была выше панели по оси z и находилась в расшариной сцене). Эта кнопка открывает задачник, т.е. переводит машину book (раздел Книга задач) в состояние open.


Книга задач

Книга задач - объект игрового интерфейса, содержит перечень заданий, которые должен выполнить игрок в ходе прохождения адвенчуры. Задания могут добавляться со временем. Помимо задач, в книге могут быть подсказки и отметки о выполнении.

Книгу задач можно реализовать используя объект Inventory. Только вместо панели инвентаря будет разворот блокнота с двумя видимыми ячейками таблицы, в которые вместо предметов будут помещаться текстовые объекты.

В адвенчуре книга задач находиться на расшариной сцене game. Для реализации используются 4 объекта: машина book (имеет графический ресурс развернутой книги с фоном), инвентарь, таблица и кнопка для закрытия блокнота. Основные параметры этих объектов приведены на рисунке ниже. Открытие задачника будет вызываться кнопкой notebook, находящейся в игровой панели. Дополнительно таблице можно добавить кнопки для листания, если задач будет больше 6 (больше, чем отображается в таблице).

Pic12.jpg

Задачи, которые добавляются в задачник - текстовые объекты (могут быть и графические, и машины, и помещенные в один группы объектов). В этом частном случае три задачи будут добавляться на одном экране 1_hotel. Задачи находятся на сцене Inv_1. Первая задача должна быть записана с самого начала игры. Это означает, что ее нужно добавить при запуске экрана. Для этого на сцене 1 (расположить машину можно на любой сцене) создана безресурсная машину first_task, которая добавляет первое задание. Как видно из условия, машина выполнится только один раз за всю игру при ините экрана. На рисунке ниже показаны команды, которые осуществляют добавление задач. Последующие задачи добавляет машина m_control.

Pic14.jpg

Открытие и закрытие блокнота описано двумя состояниями машины book. Состояние open вызывается кнопкой notebook, находящейся в игровой панели. Состояние close вызывается кнопкой close, находящейся в открытом блокноте.

Добавление мини-игр

В адвенчуре может быть множество встроенных мини-игр. Для создания мини-игр можно использовать готовые механики (Memory, Hidden, Patchwork, Labyrinth, Match, Pipes, Puzzle), либо создавать мини-игры с помощью машины состояний. Второй способ займет много больше времени, зато позволит создать оригинальную мини-игру. Чем разнообразнее будут мини-игры, тем интереснее будет адвенчура.

Размещать мини-игру лучше всего на отдельном экране. Экран с мини-игрой следует называть так, чтоб было понятно, к какой локации он относится и какой тип игры, например, Hotel_memo (сразу понятно, что речь идет о игре Memory в локации отель).

Так же мини-игру можно размещать на отдельной сцене в экране-локации. Тогда сцену с мини-игрой можно будет включать (отключать), когда игрок открывает (закрывает) мини-игру, с помощью параметра vis. Если установить сцене параметр vis=0, то все объекты, находящиеся на сцене будут невидимы для клика. Если установить параметр vis=1, то сцена станет видимой.

Третий способ размещения мини-игры на одной сцене с объектами локации. Этот способ наиболее неудобен так, как можно легко спутать объекты относящиеся к мини-игре с объектами относящимися к локации.

У мини-игры должно быть минимальное количество "точек входа". Если в игре существует несколько моментов, когда игрок может попасть в мини-игру, то во все моменты должно вызываться одно (если позволяет сюжет) и то же состояние, в котором открывается мини-игра. По прохождению мини-игры следует записывать параметр в опции, что игра сыграна, например, hidden1=1. Тогда этот параметр можно будет использовать в различных условиях, например, если игра сыграна, то открыть сундук (дверь).


Первая мини-игра - Мемори с ключами. Открываем экран 2_memory. На сцене находится объект типа memory, кнопка выхода из игры и машина m_done, которая запишет в опции game = 2 (игра сыграна) и сменит экран. На рисунке ниже показаны свойства объекта memory.

Pic6.jpg


Вторая мини-игра - Набор номера.

Объекты с 0 по 9 - маски воспринимающие клик, каждая маска находится над соответствующей цифрой набора; по клику они включают маску, которая блокирует клик и запускают машину phone_table.

Машина phone_table будет вращаться, записывать параметры в опции и запускать проверку номера в зависимости от того, какая цифра нажата. Если раскрыть машину phone_table можно увидеть, что она имеет отдельные состояния для каждой цифры. Состояния 1, 5, 6, 8 отличаются тем, что в них увеличивается параметр call, если цифры нажимать в правильной последовательности (56188). В состоянии back машина возвращается в исходное положение, увеличивает параметр click на 1 (счетчик кликов, чтобы нельзя было набрать, например, 513688) и вызывает проверку.

Машина 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, для этого нужно перетянуть соответствующий текстовый объект из ресурсов текстов мышкой.


Третья мини-игра - Уборка во дворе (хидден + применение инвентаря). На сцене 5 размещены 12 хидден-объектов, хидден-лист и таблица, в которую будут помещаться объекты table_Hid. Машина m_control будет управлять прохождением мини-игры. В первом состоянии осуществляется проверка параметра: игрок попадает на этот экран впервые, когда параметр game=3, машина m_control переходит в состояние hid, в котором делает невидимой панель инвентаря и кнопку блокнота, и делает al=1 панели для хиддена panel_Hid (в этой панели находится таблица хидена и кнопка выхода).

После собирания хиддена машина m_control переходит в состояние done, в котором панель хиддена делается прозрачной, а панель инвентаря видимой и в инвентарь добавляются все объекты, которые будут использоваться в мини-игре. При этом записывается параметр game = 4 и открывается дверь. По клику на дверь игрок попадает на первый экран, а в инвентаре остаются все объекты, которые добавились на предыдущем экране.

На сцене Inv_5 находятся объекты, которые добавляются в таблицу инвентаря. Эти объекты двух типов: tool и machine. Таскание и применение объекта tool описано в свойствах объекта (пример на рисунке ниже). Объекты находятся ниже видимой области экрана потому, что в данном случае для применения используются "двойники" хидден-объектов.

Pic16.jpg

Если применение предмета должно быть возможным только при выполнении какого-то условия, то используется не tool, а machine. Например, машина Inv_04 содержит все необходимые состояния: добавления, извлечения, возврата, удаления. При применении одного предмета инвентаря параметр yard увеличивается на 1 и у некоторых объектов на сцене 5 изменяется параметр. Если после применения, например, повесить букву Е, параметр al у объекта game_10 становится равен 1, то при смене экранов, он вернется в 0, для того, чтобы этого не произошло, у объекта game_10 параметр память=1.

Рассмотрим каждый инвентарный объект:

Inv_01 - ручка при попадании на маску двери переводит машину game_01 в состояние on, в котором на двери появляется прикрепленная ручка (машина game_01, параметр al=1) и параметр yard увеличивается на 1.

Inv_02 - лейка применяется к цветам, делает свежие цветы видимыми.

Inv_03 - доска применяется к дыре в стене, делает дыру невидимой.

Inv_04 - провод применяется на невидимый (al=0,01) провод при условии, что на вывеске отремонтированы все буквы. Появляется подсоединенный провод и неоновая подсветка.

Inv_05 - стекло применяется на разбитое стекло, делает разбитое стекло невидимым.

Inv_06 - краска применяется на маску двери при условии, что на краску применили кисточку, делает грязь на двери невидимой.

Inv_07 - звонок применяется на невидимый (al=0,01), висящий на гвозде звонок, делает его видимым.

Inv_08 - метла применяется на листья, делает их невидимыми.

Inv_09 - применяется к граффити через apply, делает их невидимыми.

Inv_10 - буква Е применяется к невидимой (al=0,01) букве на вывеске.

Inv_11 - буква L применяется к невидимой (al=0,01) букве на вывеске.

Inv_12 - Кисточка применяется на краску, которая так же находится в инвентаре.

Во время игры с применением машина m_control находится в состоянии game и проверяет параметр yard. Это состояние является зацикленным до тех пор, пока параметр yard не станет равен 15, тогда произойдет переход в состояние done1, где запишется параметр game=5 (игра с применением сыграна). После игры с применением администратор позволит позвонить.

Упражнения

1. Изучить структуру проекта, параметры объектов, работу машин.

2. Переделать мини-игру с телефоном так, чтобы набрать нужно было номер 12321.

3. Переписать логику игры (машина m_control и параметр game) так, чтобы первым заданием было убраться во дворе, а вторым разобрать ключи. После первого задания администратор пропускает в номер, после второго подключает телефон.

4. В игре с применением переделать объект Inv_02 c tool на machine и прописать все состояния.



Урок 10 << Оглавление >> Урок 1