Создание игры «Hidden Object Game» — различия между версиями

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(ПРОГРЕСС И ОКНО ВЫВОДА)
 
(не показаны 134 промежуточные версии 16 участников)
Строка 7: Строка 7:
 
{{TOC right}}
 
{{TOC right}}
  
'''Цель:''' Изучить настройки объектов HiddenObjectList, HiddenObject и  Table для типа механики Hidden Object Game на базе создания уровня из игры Travel.
+
'''Цель:''' Изучить настройки объектов [[HiddenList]], [[HiddenObject]] и  [[Table]] для типа механики Hidden Object Game на базе создания уровня из игры Travel.
 
   
 
   
 
'''Задача:''' Создать уровень игры содержащей 10 поисковых объектов расположенных на одном бэкграунде (фоне). При инициализации сцены обеспечить размещение 5 объектов для поиска.  
 
'''Задача:''' Создать уровень игры содержащей 10 поисковых объектов расположенных на одном бэкграунде (фоне). При инициализации сцены обеспечить размещение 5 объектов для поиска.  
Строка 13: Строка 13:
 
== Создание экрана и сцены в игровом проекте ==
 
== Создание экрана и сцены в игровом проекте ==
  
1. Запустить SceneEditor.
+
Откроем проект lessons. Создадим экран Lesson_7. [[Файл:Lesson7_textbase.png|right]]
 +
В экране Lesson_7 добавляем новую сцену* stg_7 с разрешением 960*640 (по умолчанию), в которую (через ResourcesEditor) добавим графические ресурсы из папки Lesson_7. (см. подготовка к работе [[Создание проекта]])
  
2. В меню <tt>Проект</tt> &rarr; <tt>Загрузить</tt> &rarr; <tt>lessons.seproj</tt>
+
* Графические объекты должны разместиться точно на местах предназначенных для их «Прятанья». Перетягиваем сначала '''bg''', потом остальные объекты с папки ''hiddenObj''.
  
3. Кликнув правой кнопкой мыши по ранее созданному экрану Lesson_06.1, создать экран Lesson_07.
+
Создадим папку Lesson_7  в базе текстовых описаний с помощью TextEditor. Добавим в неё 10 текстовых записей, соответствующих именам поисковых объектов. Заполним для каждой текстовой записи 2 значения, один из которых называет сам предмет, а второе - является его синонимом или ассоцией, которая укажет на него ([[Интерфейс TextEditor#Создание и заполнение текстовой базы проекта | Word]], [[Интерфейс TextEditor#Создание и заполнение текстовой базы проекта | Sentence-En]]), добавим графическое отображение поискового объекта. Сделать это можно вручную, перетащив картинку соответствующего объекта из редактора ресурсов и, по нажатию на картинке правой кнопкой мыши, выберем тип "icon1". Или же более быстрым [[Интерфейс TextEditor#Добавление иконок в текстовый элемент | способом]].
  
[[Файл:07 1.png]]
+
== Общая настройка объектов ==
  
4. В экране Lesson_07 создать новую сцену* 07 с разрешением 960*640, в которую (через ResourcesEditor) добавить графические ресурсы из папки Sources\Lesson_07 (см. подготовка к работе [[Создание проекта]])
+
1. Для всех поисковых графических объектов изменяем тип с image на [[HiddenObject]]: выделяем первый и последний элементы, удерживая кнопку Shift, в окне Property выбраем соответствующий параметр.
  
* Для корректной работы на мобильном устройстве необходимо настроить параметр.
+
[[Файл:Lesson7_hidden_obj.png]]
  
* Графические объекты должны разместиться точно на местах предназначенных для их «Прятанья».
+
2. Создаем новую сцену, которую называем 7_1 и добавляем на нее специальные объекты [[Table]] и [[HiddenList]]. Для этого переносим графическое изображение table и изменяем его тип с image на Table. Название объекта изменить на table**
  
5. Создать папку Lesson_07  в базе текстовых описаний с помощью TextEditor.
+
[[Файл:07 5.png]]
  
6. Добавить в папку Lesson_07 10 текстовые записи, соответствующие именам поисковых объектов.
+
3. Для объекта HiddenList создаем  новый объект и меняем его тип с image на HiddenList. Для данного типа объекта не требуется графический ресурс. Название объекта изменить на HiddenList**
  
7. Присвоить каждой текстовой записи значение Word, Sentence-En, добавить графическое отображение поискового объекта с типом icon1.
+
[[Файл:Lesson7_HiddenList.png]]
  
[[Файл:07 2.png]]  [[Файл:07 3.png]]
 
  
== Общая настройка объектов ==
+
'''**''' Имена для специальных объектов могут использоваться любые.
  
1. Для всех поисковых графических объектов изменить тип с image на HiddenObject.
+
== Детальная настройка объектов ==
  
[[Файл:07 4.png]]
+
'''1. Описание HiddenObject.'''
  
2. Создать специальные объекты Table и HiddenList. Для этого необходимо перенести графическое изображение table с последующим изменением типа с image на Table. Название объекта изменить на HOT**
+
''HiddenObject'' - это поисковый объект, взаимодействующий со списком HiddenList. Каждому поисковому объекту необходимо указать графический ресурс (картинку), идентификатор объекта HiddenList и идентификатор текстового ресурса (строки описания) в HiddenList.[[Файл:07 7.png|right]]
  
[[Файл:07 5.png]]
+
Необходимо выбрать используемый объект с именем HiddenList (тип HiddenObjectList) в поле list.
  
3. Для объекта HiddenList перенести любое графическое изображение с последующим изменением типа с image на HiddenList и удалением графического ресурса из поля настроек (res)*. Название объекта изменить на HOL**
 
  
[[Файл:07 6.png]]
+
''текстID'' – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора;
  
*Для данного типа объекта не требуется графический ресурс.
+
''текст'' – обычный текст (будет отображаться в таблице при отсутствии ТекстID, для быстрых экспериментов);
  
**Имена для специальных объектов могут использоваться любые.
+
''list'' – ссылка на HiddenList, к которому будет подключен объект, для обеспечения связи между ними;
  
[[Файл:07 10.png]]
+
''flyer'' – объект типа flyer, который запустится в работу при нахождении поискового объекта. Неудачный клик обрабатывает HiddenList. Если параметр не задан, используется fly_ok объекта HiddenList.(objid);
  
== Детальная настройка объектов ==
+
''actor'' – объект, который отображает анимацию спрятанного объекта после удачного клика на него (обычно это машина состояния). Парметр необязателен. Актёры нужны тогда, когда отличается графика объекта, который непосредственно находится на сцене и который летит к таблице. Это может быть случай, когда на сцене лежит часть объекта, а летит целый. Или же на сцене - с тенью, а летит - без.
  
1. Описание HiddenObject.
+
''тип'' – номер типа объекта, используется для логического разделения объектов при обработке HiddenList.
  
''HiddenObject'' поисковый объект, взаимодействующий со списком HiddenList. Каждому поисковому объекту необходимо указать графический ресурс (картинку), идентификатор объекта HiddenList и идентификатор текстового ресурса (строки описания) в HiddenList.
 
  
Необходимо выбрать используемый объект с именем HOL (тип HiddenObjectList) в поле list.
 
  
[[Файл:07 7.png]]
 
  
''текстID'' – выводимый в списке текст - идентификатор из редактора строк (txtid);
+
'''2. Описание HiddenObjectList.'''
  
''текст'' – обычный текст (аналогично txtID, для быстрых экспериментов) (txtid);
+
HiddenList - это список поисковых объектов (Hidden), которые надо найти в хидден-сцене. [[Файл:07 8.png|right]] Каждый поисковый объект на сцене связывают со списком. Объектов может быть больше, чем будет показано в данной игровой сессии (поле "объектов"). В этом случае они выбираются случайным образом. Запоминаются те из них, по которым произошёл клик (увеличивается счетчик их кликов). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле "количество".
 +
 +
HiddenList определяет основные параметры для настройки HiddenObject (скорость полета и т.п.). В дальнейшем, при необходимости, эти же параметры можно добавить в HiddenObject, чтобы для данного объекта они "перебивали" общие значения для всех.
  
''list'' – необходимо выбрать объект с типом HiddenList для обеспечения связи объектов;
 
  
''flyer'' – объект типа flyer, который нуждо запустить на работу при клике на поисковй объект (огонечки). Эти флаеры запускаются при удачном клике (объект нашли). Неудачный клик обрабатывает HiddenList. Если не задан, используется fly_ok объекта HiddenList.(objid);
+
Подготовка спрятанных объектов:
  
''actor'' – объект, который должен отобразить анимацию спрятанного объекта после удачного клика на него (обычно это машина состояния); если его нет выполняется предопределенное поведение;
+
''num'' (поле "объектов") максимальное количество объектов, участвующие в поиске. (int)
  
''тип'' – используется для логического разделения объектов при обработке HiddenList.
+
''hide'' (поле "прятать") если 1, то делать невидимыми объекты, не участвующие в поиске. (int)
  
2. Описание HiddenObjectList.
+
Визуальные параметры списка:
  
Список поисковых объектов (Hidden), которые надо найти в хиден-сцене. Каждый поисковый объект на сцене связывают со списком. Объектов может быть больше, чем будет показано в данной игровой сессии (поле "объектов"). В этом случае они выбираются случайным образом. Запоминаются те из них, по которым произошёл клик (увеличивается счетчик их кликов). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле "количество".
+
''table'' (поле "таблица") – идентификатор объекта Table. (objid)
+
HiddenList определяет основные параметры для настройки HiddenObject (скорость полета и т.п.). В дальнейшем, при необходимости, эти же параметры можно добавить в HiddenObject, чтобы для данного объекта они "перебивали" общие значения для всех.
+
  
[[Файл:07 8.png]]
+
''kind'' (внешний вид - поле "тип списка") – тип отображения объекта в списке (0-слово,1-ассоциация, 2-иконка, 3-иконка). (int)
  
3. Описание Table
+
''cross'' (внешний вид - поле "вычеркнуть") – зачеркивать найденный элемент списка. Eсли 0 (по умолчанию), то найденный элемент удаляется, иначе "зачеркивается".(int).
  
[[Файл:07 9.png]]
 
  
4. Подготовка спрятанных объектов:
+
 
+
'''3. Настройка Table'''
''num'' – максимальное количество объектов, участвующие в поиске. (int)
+
 
+
''hide'' – если 1, то делать невидимыми объекты, не участвующие в поиске. (int)
+
  
5. Визуальные параметры списка:
 
  
''table'' – идентификатор объекта Table. (objid)
+
[[Файл:Table lesson7.png]]
  
''txtKn'' – тип отображения (0-слово,1-ассоциация, 2-иконка, 3-иконка). (int)
+
Хотелось бы напомнить , что вы можете “поиграться” с вкладкой “таблица”, чтобы настроить внешний вид , вспомогательную область для поиска предметов.
  
''cross'' – зачеркивать найденный элемент списка. Eсли 0 (по умолчанию), то найденный элемент исчезает, иначе "зачеркивается".(int).
+
'''4. Параметры, общие для всех спрятанных объектов:'''
 
+
Зачеркивание может быть нескольких видов: перечеркнутый текст, иконка другого вида (alpha, цвет, картинка) TODO.
+
+
6. Параметры, общие для всех спрятанных объектов:
+
  
 
''die'' –  тип исчезания при удачном клике на объект (если нет актера) (int):  
 
''die'' –  тип исчезания при удачном клике на объект (если нет актера) (int):  
Строка 128: Строка 114:
  
 
fy - финальная координата x, к которой объект должен перелететь, при удачном клике (см. тип исчезания). (int)
 
fy - финальная координата x, к которой объект должен перелететь, при удачном клике (см. тип исчезания). (int)
 +
 +
 +
<blockquote>
 +
[[файл:wrong.png|right|32px]]
 +
        '''Внимание!'''  HiddenList не будет работать без объекта [[Редактор текстовых ресурсов#Упражнения|Options]], который вы должны были создать в предыдущем уроке, а так же без параметра ''id игры'' (Очковая система -> id игры; для теста заполним его любой строкой).
 +
</blockquote>
  
 
== Упражнения ==
 
== Упражнения ==
  
1. Щелкнув правой кнопкой мыши по экрану Lesson_07, создать новый экран Lesson_07.1
+
1. Щелкнув правой кнопкой мыши по экрану Lesson_7, создать новый экран Lesson_7_1.
  
2. Создать новую сцену (с названием 07.1).
+
2. Создать новую сцену (с названием stg_7_1).
  
3. Скопировать все объекты из сцены 07 (экрана Lesson_07).
+
3. Скопировать все объекты из сцены stg_7 (экрана Lesson_7).
  
4. Вставить скопированые объекты в новую сцену 07.1.
+
4. Вставить скопированые объекты в новую сцену stg_7_1.
  
 
[[Файл:07 11.png]]
 
[[Файл:07 11.png]]
Строка 149: Строка 141:
 
c) добавить текстовое описание в TextEditor;
 
c) добавить текстовое описание в TextEditor;
  
e) установить время игры 20 секунд, паузу 2 секунды с переходом на экран Lesson_07.1.
+
e) установить время игры 20 секунд, паузу 2 секунды с переходом на экран Lesson_7_1.
 +
 
 +
6. Модифицировать экран Lesson_7 в полноценный уровень с выводом количества очков, игрой на время и графикой.
 +
 
 +
== Упражнение № 6 ==
 +
Экран lesson_7  необходимо модифицировать  в полноценный уровень.
 +
 
 +
Для этого создаем еще одну сцену 7_3 в первом экране с объектами, которые сделают игру полноценной: первый экран дополняем  2 счетчиками ([[counter]]), таймером ([[timer]]), машиной-блокатором ([[machine]]) и прогрессом ([[progress]]). Второй экран с выводом очков составим позже.
 +
 
 +
[[Файл:1.png]]
 +
 
 +
Счетчик «amt» ([[counter]]) показывает сколько объектов найдено. Счетчик «score_H» ([[counter]]) насчитывает баллы за собранные объекты. Таймер ([[timer]]) запускается при старте игры и отсчитывает заданное время на игру, машина-блокатор «ban_H» блокирует сцену при серии ошибочных кликов. Прогресс «progr» ([[progress]]) активируется во время комбо.
 +
 
 +
Чтобы всё заработало необходимо указать счетчики, таймер, машину-блокатор и прогресс в свойствах HiddenList ([[hiddenList]]).
 +
 
 +
== СЧЕТЧИК ==
 +
 
 +
В редакторе ресурсов выбираем анимацию и добавляем графику для счетчика.
 +
 
 +
<blockquote>
 +
[[файл:wrong.png|right|32px]]
 +
'''Внимание!'''  Если в редакторе ресурсов нету анимации, то [[Интерфейс_ResourceEditor#Анимация|создайте]] её -  это просто). Анимация создается с названием папки, в которой хранились картинки, избегайте кириллицы в названии  папок.
 +
</blockquote>
 +
 
 +
‎[[Файл:Coun (5).png]] ‎[[Файл:Coun (6).png]] [[Файл:Coun (7).png]] [[Файл:Coun (8).png]] ‎[[Файл:Coun (9).png]] [[Файл:Coun_(10).png]] ‎[[Файл:Coun (11).png]] ‎[[Файл:Coun (1).png]] ‎‎[[Файл:Coun (2).png]] ‎[[Файл:Coun (3).png]] ‎[[‎Файл:Coun (4).png]]
 +
 
 +
Создаем объект сцены с типом «[[counter]]», в поле res перетаскиваем анимацию с цифрами от 0 до 9, разделитель уже указан в настройках. Настройки для счетчика:
 +
 
 +
[[Файл:243.png]]
 +
 
 +
== ТАЙМЕР ==
 +
 
 +
В свойствах таймера «[[timer]]» необходимо указать «значение» с которого начнется отсчет времени (18000 = 18 сек.).
 +
В свойство «графика» из графического редактора перетаскиваем анимацию которую делали для счетчика и двоеточие или делаем его обычным шрифтом, редактируя в свойствах параметр '''шрифт'''. Настройки для таймера:
 +
 
 +
[[Файл:444.png]]
 +
 
 +
Также стоит обновить настройки в HiddenObjectList , т.к. если мы их не укажем, то отсчет времени просто не начнется. Время таймера и время указанное в HiddenObjectList должны совпадать, иначе отсчет времени будет идти от меньшего времени вне зависимости указано оно в HOL или в таймере.
 +
  [[Файл:HOL_time.png]]
 +
 
 +
== ПРОГРЕСС И ОКНО ВЫВОДА==
 +
 
 +
[[Progress]] используют для отображения каких либо ачивментов, например когда игрок проходит уровень он может получить 1,2,3 звезды или бронзовую, серебряную, золотую или совершая необходимые действия в игре, например комбо.
 +
Настройки для '''прогресса''' :
 +
 
 +
[[Файл:555.png]]
 +
 
 +
Графика для Progress: [[Файл:666.png]]
 +
 
 +
Настройки для машины-блокатора «ban_H» (machine) (подобъектe '''black''' изменяем тип на rectangle, более подробно о нем дальше):
 +
 
 +
[[Файл:Ban h na max.png]]
 +
[[Файл:9.png]]
 +
 
 +
Настройки для '''hiddenList''':
 +
 
 +
[[Файл:1010.png]]
 +
 
 +
Машина ''win_lose'' помогает определить победителя и вызывает соответствующее окно ''win'' после победы или поражения.
 +
 
 +
Группа - звезды combo num =1 - количество быстро найденных объектов, нужное для получения звезды Combo. Combo time = 3000 - интервал между кликами, считающимися быстрыми. Combo accuracy = 0,85 - точность кликов для получения звезды Accuracy (1 = 100%, все клики должны быть только удачные). Лимит ложных кликов = 5 - количество неверных кликов. Формула расчета его: количество верных кликов делим на общее количество получаем коэффициент, если он равен или больше указного нами, то в опции пишем параметр, если нет то не пишем.
 +
 
 +
 
 +
Для HiddenList и Counter пункт "сохранить в профиль" должен совпадать. Если в HiddenList указано "глобально", то и в Counter также необходимо установить "глобально".
 +
 
 +
 
 +
Создаем новую сцену '''w''' и создаем в ней объект c типом machine ''win'', на которой формируем окно вывода результатов из ректангла (Rectangle), текстовых объектов и счетчиков. Окно
 +
должно открываться по окончанию игры и при выигрыше показывать набранные очки и надпись об удаче, при проигрыше - нулевые очки и надпись о неудаче.
 +
 
 +
[[Файл:Example.jpg]]
 +
 
 +
Графика для Rectangle rec: [[Файл:0001.png]] [[Файл:0002.png]] [[Файл:0003.png]] [[Файл:0004.png]] [[Файл:0005.png]] [[Файл:0006.png]] [[Файл:0007.png]] [[Файл:0008.png]] [[Файл:0009.png]] [[Файл:00010.png]]   
 +
 
 +
<blockquote>
 +
[[файл:wrong.png|right|32px]]
 +
'''Внимание!''' Rectangle black (Цвет задается в свойстве фон->цвет заливки) используется в качестве фона, на котором будет размещаться всплывающие окно с показаниями результата пройденной игры.
 +
</blockquote>
 +
 
 +
[[Файл:1012.png]] [[Файл:0102.png]]
 +
 
 +
 
 +
Далее копируем Rectangle "black" и делаем подобъектом блокатора ban_H, а также меняем размеры rectangle black (устанавливаем не нулевые!), устанавливаем параметр фон и alpha на свое усмотрение.
 +
 
 +
Создадим еще 5 счетчиков. Они нам понадобятся в конце игры для выведения бонусного счета.
 +
 
 +
В свойствах счетчиков необходимо прописать уровень!
 +
 
 +
1) счетчик 7_4_1 — игровые очки;
 +
 
 +
уровень: last_game.score30_total
 +
 
 +
2) счетчик 7_4_2 — бонус за время;
 +
 
 +
уровень: last_game.score30_time
 +
 
 +
3) счетчик 7_4_3 — бонус за аккуратность;
 +
 
 +
уровень: last_game.score30_accuracy
 +
 
 +
4) счетчик 7_4_4 — бонус за комбо;
 +
 
 +
уровень: last_game.ecmbRowMax
 +
 
 +
5) счетчик 7_4_5 — очки за уровень;
 +
 
 +
уровень: last_game.score30_level
 +
 
 +
Важный аспект: после того как вы добавили last.game.xxx в графу уровень в каждом счетчике , графа игра должна остаться пустой и так же не стоит эти счетчики закидывать в HOL , т.к. одни и те же данные могут конфликтовать между собой. Также обязательным условием является включение графы “очки 3.0” в HOL`e.
 +
 
 +
После создания счетчиков и установки уровней добавляем 5 текстовых объектов, которые описывают значения, выводящиеся счетчиками в конце игры в окне результатов (игровые очки, бонус за время и т.д.).
 +
 
 +
Настройки для машины — '''star1'''
 +
(проверка в опциях параметра last_game.last_star_accuracy0,
 +
last_game.last_star_time0, )
 +
 
 +
[[Файл:0303.png]]
 +
 
 +
Настройки для машины — '''star2'''
 +
(если параметр accuracy=0)
 +
 
 +
[[Файл:0304.png]]
 +
 
 +
Настройки для машины — '''star3'''
 +
(если игра пройдена за указанное время)
 +
 
 +
[[Файл:0305.png]]
 +
 
 +
Настройки для машины — '''win'''
 +
 
 +
[[Файл:0306.png]]
 +
 
 +
 
 +
Машина '''win''' считывает «read» показания счетчика и запускает star1 если игра пройдена.
 +
 
 +
Также создаем кнопку ''close'' (button), которая должна закрывать окно результатов. Добавляем "изменить состояние объекта"; объект win, состояние close.
 +
 
 +
Включаем вьювер и наблюдаем как автоматически включается таймер, за каждый собранный предмет вам начисляются очки, прогресс показывает прохождение игры, в конце игры появляется окно с выводом результатов набранных очков с звездами.
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
 +
 
  
 
----
 
----
 +
 
{| width="100%"   
 
{| width="100%"   
  | width="40%"|[[Редактор текстовых ресурсов|Урок 5]] <<  
+
  | width="40%"|[[Редактор текстовых ресурсов|Урок 6]] <<  
 
  ! width="20%"|[[Learning|Оглавление]]  
 
  ! width="20%"|[[Learning|Оглавление]]  
  | width="40%" align="right"| >> [[Настройка миниигр|Урок 7]]
+
  | width="40%" align="right"| >> [[Настройка миниигр|Урок 8]]
 
|}
 
|}
 +
 +
[[Category:Learning]]

Текущая версия на 12:22, 20 декабря 2019

Урок 6 << Оглавление >> Урок 8

Цель: Изучить настройки объектов HiddenList, HiddenObject и Table для типа механики Hidden Object Game на базе создания уровня из игры Travel.

Задача: Создать уровень игры содержащей 10 поисковых объектов расположенных на одном бэкграунде (фоне). При инициализации сцены обеспечить размещение 5 объектов для поиска.

Создание экрана и сцены в игровом проекте

Откроем проект lessons. Создадим экран Lesson_7.
Lesson7 textbase.png

В экране Lesson_7 добавляем новую сцену* stg_7 с разрешением 960*640 (по умолчанию), в которую (через ResourcesEditor) добавим графические ресурсы из папки Lesson_7. (см. подготовка к работе Создание проекта)

  • Графические объекты должны разместиться точно на местах предназначенных для их «Прятанья». Перетягиваем сначала bg, потом остальные объекты с папки hiddenObj.

Создадим папку Lesson_7 в базе текстовых описаний с помощью TextEditor. Добавим в неё 10 текстовых записей, соответствующих именам поисковых объектов. Заполним для каждой текстовой записи 2 значения, один из которых называет сам предмет, а второе - является его синонимом или ассоцией, которая укажет на него ( Word, Sentence-En), добавим графическое отображение поискового объекта. Сделать это можно вручную, перетащив картинку соответствующего объекта из редактора ресурсов и, по нажатию на картинке правой кнопкой мыши, выберем тип "icon1". Или же более быстрым способом.

Общая настройка объектов

1. Для всех поисковых графических объектов изменяем тип с image на HiddenObject: выделяем первый и последний элементы, удерживая кнопку Shift, в окне Property выбраем соответствующий параметр.

Lesson7 hidden obj.png

2. Создаем новую сцену, которую называем 7_1 и добавляем на нее специальные объекты Table и HiddenList. Для этого переносим графическое изображение table и изменяем его тип с image на Table. Название объекта изменить на table**

07 5.png

3. Для объекта HiddenList создаем новый объект и меняем его тип с image на HiddenList. Для данного типа объекта не требуется графический ресурс. Название объекта изменить на HiddenList**

Lesson7 HiddenList.png


** Имена для специальных объектов могут использоваться любые.

Детальная настройка объектов

1. Описание HiddenObject.

HiddenObject - это поисковый объект, взаимодействующий со списком HiddenList. Каждому поисковому объекту необходимо указать графический ресурс (картинку), идентификатор объекта HiddenList и идентификатор текстового ресурса (строки описания) в HiddenList.
07 7.png

Необходимо выбрать используемый объект с именем HiddenList (тип HiddenObjectList) в поле list.


текстID – название хидден-объекта, которое будет отображаться в списке. Перетаскивается мышкой из текстового редактора;

текст – обычный текст (будет отображаться в таблице при отсутствии ТекстID, для быстрых экспериментов);

list – ссылка на HiddenList, к которому будет подключен объект, для обеспечения связи между ними;

flyer – объект типа flyer, который запустится в работу при нахождении поискового объекта. Неудачный клик обрабатывает HiddenList. Если параметр не задан, используется fly_ok объекта HiddenList.(objid);

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

тип – номер типа объекта, используется для логического разделения объектов при обработке HiddenList.



2. Описание HiddenObjectList.

HiddenList - это список поисковых объектов (Hidden), которые надо найти в хидден-сцене.
07 8.png
Каждый поисковый объект на сцене связывают со списком. Объектов может быть больше, чем будет показано в данной игровой сессии (поле "объектов"). В этом случае они выбираются случайным образом. Запоминаются те из них, по которым произошёл клик (увеличивается счетчик их кликов). При следующем заходе на сцену, поисковые слова сортируются по возрастанию числа кликов и снова активизируется количество спрятанных объектов, указанных в поле "количество".

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


Подготовка спрятанных объектов:

num (поле "объектов") – максимальное количество объектов, участвующие в поиске. (int)

hide (поле "прятать") – если 1, то делать невидимыми объекты, не участвующие в поиске. (int)

Визуальные параметры списка:

table (поле "таблица") – идентификатор объекта Table. (objid)

kind (внешний вид - поле "тип списка") – тип отображения объекта в списке (0-слово,1-ассоциация, 2-иконка, 3-иконка). (int)

cross (внешний вид - поле "вычеркнуть") – зачеркивать найденный элемент списка. Eсли 0 (по умолчанию), то найденный элемент удаляется, иначе "зачеркивается".(int).


3. Настройка Table


Table lesson7.png

Хотелось бы напомнить , что вы можете “поиграться” с вкладкой “таблица”, чтобы настроить внешний вид , вспомогательную область для поиска предметов.

4. Параметры, общие для всех спрятанных объектов:

die – тип исчезания при удачном клике на объект (если нет актера) (int):

0: просто исчезает;

1: летит к пункту с описанием в списке HiddenList;

2: улетает в случайном направлении;

3: улетает к заданным координатам (fx, fy).

vm - скорость движения при полете к списку предметов после клика в px/sec (float)

vr - скорость вращения при полете к списку предметов после клик в град/sec (float)

fw - финальная ширина к которой надо уменьшится при подлете к финальной точке (int)

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

fx - финальная координата x, к которой объект должен перелететь, при удачном клике (см. тип исчезания). (int)

fy - финальная координата x, к которой объект должен перелететь, при удачном клике (см. тип исчезания). (int)


Wrong.png

Внимание! HiddenList не будет работать без объекта Options, который вы должны были создать в предыдущем уроке, а так же без параметра id игры (Очковая система -> id игры; для теста заполним его любой строкой).

Упражнения

1. Щелкнув правой кнопкой мыши по экрану Lesson_7, создать новый экран Lesson_7_1.

2. Создать новую сцену (с названием stg_7_1).

3. Скопировать все объекты из сцены stg_7 (экрана Lesson_7).

4. Вставить скопированые объекты в новую сцену stg_7_1.

07 11.png

5. В новой сцене:

a) добавить еще 3 графических ресурса и перевести в тип HiddenObject;

b) разместить на местах предназначенных для их «Прятанья»;

c) добавить текстовое описание в TextEditor;

e) установить время игры 20 секунд, паузу 2 секунды с переходом на экран Lesson_7_1.

6. Модифицировать экран Lesson_7 в полноценный уровень с выводом количества очков, игрой на время и графикой.

Упражнение № 6

Экран lesson_7 необходимо модифицировать в полноценный уровень.

Для этого создаем еще одну сцену 7_3 в первом экране с объектами, которые сделают игру полноценной: первый экран дополняем 2 счетчиками (counter), таймером (timer), машиной-блокатором (machine) и прогрессом (progress). Второй экран с выводом очков составим позже.

1.png 

Счетчик «amt» (counter) показывает сколько объектов найдено. Счетчик «score_H» (counter) насчитывает баллы за собранные объекты. Таймер (timer) запускается при старте игры и отсчитывает заданное время на игру, машина-блокатор «ban_H» блокирует сцену при серии ошибочных кликов. Прогресс «progr» (progress) активируется во время комбо.

Чтобы всё заработало необходимо указать счетчики, таймер, машину-блокатор и прогресс в свойствах HiddenList (hiddenList).

СЧЕТЧИК

В редакторе ресурсов выбираем анимацию и добавляем графику для счетчика.

Wrong.png

Внимание! Если в редакторе ресурсов нету анимации, то создайте её - это просто). Анимация создается с названием папки, в которой хранились картинки, избегайте кириллицы в названии папок.

Coun (5).pngCoun (6).png Coun (7).png Coun (8).pngCoun (9).png Coun (10).pngCoun (11).pngCoun (1).png ‎‎Coun (2).pngCoun (3).pngCoun (4).png

Создаем объект сцены с типом «counter», в поле res перетаскиваем анимацию с цифрами от 0 до 9, разделитель уже указан в настройках. Настройки для счетчика:

243.png

ТАЙМЕР

В свойствах таймера «timer» необходимо указать «значение» с которого начнется отсчет времени (18000 = 18 сек.). В свойство «графика» из графического редактора перетаскиваем анимацию которую делали для счетчика и двоеточие или делаем его обычным шрифтом, редактируя в свойствах параметр шрифт. Настройки для таймера:

444.png

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

 HOL time.png

ПРОГРЕСС И ОКНО ВЫВОДА

Progress используют для отображения каких либо ачивментов, например когда игрок проходит уровень он может получить 1,2,3 звезды или бронзовую, серебряную, золотую или совершая необходимые действия в игре, например комбо. Настройки для прогресса :

555.png

Графика для Progress: 666.png

Настройки для машины-блокатора «ban_H» (machine) (подобъектe black изменяем тип на rectangle, более подробно о нем дальше):

Ban h na max.png
9.png

Настройки для hiddenList:

1010.png

Машина win_lose помогает определить победителя и вызывает соответствующее окно win после победы или поражения.

Группа - звезды combo num =1 - количество быстро найденных объектов, нужное для получения звезды Combo. Combo time = 3000 - интервал между кликами, считающимися быстрыми. Combo accuracy = 0,85 - точность кликов для получения звезды Accuracy (1 = 100%, все клики должны быть только удачные). Лимит ложных кликов = 5 - количество неверных кликов. Формула расчета его: количество верных кликов делим на общее количество получаем коэффициент, если он равен или больше указного нами, то в опции пишем параметр, если нет то не пишем.


Для HiddenList и Counter пункт "сохранить в профиль" должен совпадать. Если в HiddenList указано "глобально", то и в Counter также необходимо установить "глобально".


Создаем новую сцену w и создаем в ней объект c типом machine win, на которой формируем окно вывода результатов из ректангла (Rectangle), текстовых объектов и счетчиков. Окно должно открываться по окончанию игры и при выигрыше показывать набранные очки и надпись об удаче, при проигрыше - нулевые очки и надпись о неудаче.

Example.jpg

Графика для Rectangle rec: 0001.png 0002.png 0003.png 0004.png 0005.png 0006.png 0007.png 0008.png 0009.png 00010.png

Wrong.png

Внимание! Rectangle black (Цвет задается в свойстве фон->цвет заливки) используется в качестве фона, на котором будет размещаться всплывающие окно с показаниями результата пройденной игры.

1012.png 0102.png 


Далее копируем Rectangle "black" и делаем подобъектом блокатора ban_H, а также меняем размеры rectangle black (устанавливаем не нулевые!), устанавливаем параметр фон и alpha на свое усмотрение.

Создадим еще 5 счетчиков. Они нам понадобятся в конце игры для выведения бонусного счета.

В свойствах счетчиков необходимо прописать уровень!

1) счетчик 7_4_1 — игровые очки;

уровень: last_game.score30_total

2) счетчик 7_4_2 — бонус за время;

уровень: last_game.score30_time

3) счетчик 7_4_3 — бонус за аккуратность;

уровень: last_game.score30_accuracy

4) счетчик 7_4_4 — бонус за комбо;

уровень: last_game.ecmbRowMax

5) счетчик 7_4_5 — очки за уровень;

уровень: last_game.score30_level

Важный аспект: после того как вы добавили last.game.xxx в графу уровень в каждом счетчике , графа игра должна остаться пустой и так же не стоит эти счетчики закидывать в HOL , т.к. одни и те же данные могут конфликтовать между собой. Также обязательным условием является включение графы “очки 3.0” в HOL`e.

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

Настройки для машины — star1 (проверка в опциях параметра last_game.last_star_accuracy0, last_game.last_star_time0, )

0303.png

Настройки для машины — star2 (если параметр accuracy=0)

0304.png

Настройки для машины — star3 (если игра пройдена за указанное время)

0305.png

Настройки для машины — win

0306.png


Машина win считывает «read» показания счетчика и запускает star1 если игра пройдена.

Также создаем кнопку close (button), которая должна закрывать окно результатов. Добавляем "изменить состояние объекта"; объект win, состояние close.

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






Урок 6 << Оглавление >> Урок 8