Pipes — различия между версиями

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Пример)
(Файл уровней)
 
(не показана 31 промежуточная версия 5 участников)
Строка 1: Строка 1:
== Трубопроводы (микросхемы) ==
+
{{TOC right}}
 +
[[Файл:Sc_Bed_Times.jpg|200px|right]]
  
===Общее Описание ===
+
Pipes - [[Object|объект]], который обладает механикой сбора трубопровода (микросхемы и т.п.) путем поворота отдельных элементов . Объект реализован в виде матрицы, каждая ячейка которой содержит вращающийся элемент. При инициализации объекта pipes все его элементы (ячейки) случайным образом поворачиваются, разрывая соединение входа и выхода. Каждый клик на элемент поворачивает его по часовой стрелке на 90 градусов. Игра считается завершенной, если между входом и выходом трубопровода образуется цепь правильно повернутых элементов.
  
*На поле находится регулярная квадратная  решетка.
+
'''Общие параметры'''
В ячейках поля находятся  фишки, каждая из сторон которых имеет или не имеет вход. Входы связываются  при помощи однозначно заданных линий. При пересечении линии могут быть как связанными, так и не связанными между собой. Фишки располагаются на поле случайным образом.
+
(см. описание [[Object|Object]])
* Используются фишки с таким возможным расположением линий.
 
  
 +
*'''положение''' - координаты левого верхнего угла игрового поля по оси x и y;
 +
*'''размер''' - ширина и высота одной ячейка трубопровода.
  
[[Файл:Трубы_Fishky.jpg‎]]
+
== Основные параметры ==
  
<div class="tleft" style="clear:none">[[Файл:0.png|150px|frame|0]]</div>
+
[[Файл:Pipes_0.jpg|200px|right]]
<div class="tleft" style="clear:none">[[Файл:1.png|150px|frame|1]]</div>
+
'''Группа - внешний вид''':
<div class="tleft" style="clear:none">[[Файл:2.png|150px|frame|2]]</div>
 
<div class="tleft" style="clear:none">[[Файл:3.png|150px|frame|3]]</div>
 
<div class="tleft" style="clear:none">[[Файл:4.png|150px|frame|4]]</div>
 
<div class="tleft" style="clear:none">[[Файл:5.png|150px|frame|5]]</div>
 
<div class="tleft" style="clear:none">[[Файл:6.png|150px|frame|6]]</div>
 
  
[[Файл:Анимация2.png|500px]]
+
*'''картинка''' - анимация, состоящая из элементов трубопровода начиная с пустого, перетаскивается мышкой из базы ресурсов;
 +
*'''колонок''' - количество ячеек с элементами по горизонтали;
 +
*'''строчек''' - количество ячеек с элементами по вертикали;
 +
*'''время поворота''' - время поворота элемента в миллисекундах.
  
 +
'''Группа - 'внешний вид - эффект луча'''':
  
*Графика фишек, подгружаемых в игру, должна представлять из себя папку с пронумерованными файлами. Ресурс фишек - '''анимация, каждый кадр которой должен представлять из себя фишку с определенным количеством  входов, выходов и соединяющих их линий, а также все ресурсы фишек должны иметь абсолютно одинаковый размер.'''.
+
*'''прямая (|)''' - Графический ресурс луча проходящего через ячейку по прямой вертикально (соотв. кадру 1);
'''Важно то, что порядок кадров анимации должен быть всегда выдержан в соответствии с приведенными рисунками.'''
+
*'''угол''' - Графический ресурс луча проходящего через ячейку с зеркалом (соотв. кадру 2);
 +
*'''крест''' - Графический ресурс луча проходящего через ячейку с зеркалом (соотв. кадру 4,5);
  
*Кроме того,  на поле задаются  ячейки с началом и концом трубопровода.Поле при этом  имеет вид
 
  
 +
Все кадры анимации, указанной в поле ''картинка'', должны быть одного размера. Последовательность кадров в анимации должна строго соответствовать приведенной на рисунке ниже:
 +
[[Файл:Трубы_Fishky.jpg|300px|right‎]]
 +
* ''Нулевой кадр'' - пустой;
 +
* ''Первый кадр'' - прямой элемент с двумя соединениями на верхней и нижней гранях;
 +
* ''Второй кадр'' - изогнутый элемент с двумя соединениями на правой и нижней гранях;
 +
* ''Третий кадр'' - тройник с соединениями на правой, нижней и левой гранях;
 +
* ''Четвертый кадр'' - крестик с соединениями на всех четырех гранях;
 +
* ''Пятый кадр'' - пересечение двух прямых не совмещенных элементов (верхнее и нижнее соединения относятся к одному элементу, правое и левое ко второму);
 +
* ''Шестой кадр'' - два изогнутых не совмещенных элемента (правое и нижнее соединения относятся к одному элементу, верхнее и левое ко второму).
  
[[Файл:Sc_Bed_Times.jpg|500px]]
+
'''Группа - вход''':
+
 
[[Файл:Безымянный.png|500px]]
+
*'''x''' - номер столбца ячейки, с которой будет начинаться трубопровод, нумерация начинается с 0 и следует слева направо;
 +
*'''y''' - номер строка ячейки, с которой будет начинаться трубопровод, нумерация начинается с 0 и следует сверху вниз;
 +
*'''грань''' - номер грани ячейки элемента, которая считается входом (если отправной точкой является верхняя грань, то значение поля '''0''', правая грань - '''1''', нижняя - '''2''', левая - '''3''').
 +
 
 +
'''Группа - выход''':
 +
 
 +
*'''x''' - номер столбца ячейки, которой будет заканчиваться трубопровод, нумерация начинается с 0 и следует слева направо;
 +
*'''y''' - номер строка ячейки, которой будет заканчиваться трубопровод, нумерация начинается с 0 и следует сверху вниз;
 +
*'''грань''' - номер грани ячейки элемента, которая считается выходом (верхняя грань - значение '''0''', правая - '''1''', нижняя - '''2''', левая - '''3''').
 +
 
 +
'''Группа - настройки уровня''':
 +
 
 +
*'''Расклад''' - "рисунок" собранного уровня в виде массива пар чисел через запятую, например, ''1,0,0,0,2,3,..'' и т.д. Каждая пара чисел  описывает один элемент (ячейку), первое число в паре - номер кадра анимации, который будет рисоваться в ячейке, второе число - угол поворота этого кадра ('''0''' - без поворота, '''1''' - поворот на 90 по часовой стрелке, '''2''' - поворот на 180 по часовой, '''3''' - поворот на 270 по часовой). Элементы описываются построчно, начиная с левого верхнего. Для пустых ячеек первое число в паре - '''0''' (начальный пустой кадр анимации).
 +
*'''файл уровней''' - Путь к файлу с описанием уровней;
 +
*'''номер уровня''' - Номер уровня.
 +
 
 +
'''Проверка висячих''' - 1- не считать уровень пройденным, если у присоединенного ко вхожу узла есть свободные соединения нет=0, да=1";
 +
 
 +
'''вращать кресты''' - условие сбора уровня, принимает значение '''0''' или '''1'''. 1-крестообразные ячейки будут вращаться, 0-не будут (речь идет о кадрах 4 и 5, эффекта такое вращение в любом случае не дает нет=0, да=1".
 +
 
 +
== Добавляемые параметры ==
 +
 
 +
[[Файл:Pipes_1.jpg|200px|right]]
 +
Меню выбора ''Добавляемые параметры'' к объектам активируется по правой кнопки мыши.
 +
 
 +
[[Файл:+.png]] '''Вход в трубопровод''' (используется, если входов больше одного):
 +
 
 +
*'''x''' - номер столбца ячейки, с которой будет начинаться трубопровод;
 +
*'''y''' - номер строка ячейки, с которой будет начинаться трубопровод;
 +
*'''грань''' - номер грани ячейки элемента, которая считается входом.
 +
 
 +
[[Файл:+.png]] '''Выход из трубопровода''' (используется, если выходов больше одного):
 +
 
 +
*'''x''' - номер столбца ячейки, которой будет заканчиваться трубопровод;
 +
*'''y''' - номер строка ячейки, которой будет заканчиваться трубопровод;
 +
*'''грань''' - номер грани ячейки элемента, которая считается входом.
 +
 
 +
[[Файл:+.png]] '''Фишка повернута правильно''':
  
=== Игровая механика ===
+
*'''объект''' - объект, который перейдет в новое состояние, если элемент трубопровода повернуть правильно;
 +
*'''состояние''' - новое состояние объекта из предыдущего поля.
  
*'''Игровое действие.''' Игрок при помощи тапа может поворачивать  фишки каждую относительно ее центра, таким образом, чтоб линии,  проходящие из ячейки в ячейку, соединялись.
+
[[Файл:+.png]] '''Изменить состояние объекта''':
  
*'''Фишки могут располагаться''' сейчас только одним единственно заданным способом.
+
*'''объект''' - объект, который перейдет в новое состояние по собиранию pipes;
''В перспективе - фишки должны располагаться случайным образом, при этом должна проводится проверка, на существование хотя бы одной линии.''
+
*'''состояние''' - новое состояние объекта из предыдущего поля.
  
*'''Цель игры''' - соединить начало трубопровода с его концом при помощи одной или нескольких непрерывных линий.
+
[[Файл:+.png]] '''Изменить параметр (свойство) объекта''':
  
*В игре может быть как '''несколько входов''', так и '''выходов'''. Линия, которая строится при этом должна соединять в одну сеть все входы и выходы. ''В перспективе, должна быть возможность ставить в соответствие каждому входу - свой выход.''
+
*'''объект''' - объект, которому будет меняться параметр по собиранию pipes;
 +
*'''параметр''' - изменяемый параметр;
 +
*'''значение''' - новое значение параметра.
  
=== Параметры объекта Pipes ===
+
== Состояния ==
  
Для создания объекта '''pipes''' необходимо создать любой безресурсный объект и выбрать для него из раздела '''Game mechanic''' тип '''pipes'''.  
+
Объекту pipes можно передавать следующие состояния:
 +
*'''init''' - элементы трубопровода поворачиваются произвольным образом, разрывая соединение входа с выходом;
 +
*'''skip''' - каждый элемент поворачивается в положение указанное в поле '''расклад''' за время поворота, после чего pipes считается собранным, и устанавливаются добавляемые параметры, если они есть.
 +
*'''hide_effect''' - выключает отображение луча, для включения нужно или переинитить объект или нажать на любую ячейку(кроме ячеек с  4 и 5  фреймом).
  
[[Файл:Создание.png|250px]] [[Файл:Характеристики.png|250px]]
+
== Файл уровней ==
 +
'''Важно!''' После экспорта файл уровней нужно поместить в папку к layout.xml. Иначе он не попадет в сборку и на устройстве игра работать не будет!
  
Кроме общих для всех параметров "положение" и "размер" необходимо задать параметры непосредственно для объекта pipes.
+
Для объекта можно задать несколько уровней, с помощью xml-файла. При этом поле "расклад" в самом объекте должно быть пустым, иначе будет грузиться уровень, прописанный в этом поле.
(У объекта Pipes нет отображения его положения на экране, поэтому для определения его места и правильного расположения в игре необходимо делать его подобъектом какой то машины, размер объекта задаётся количеством его колонок и строк)
 
Память должна стоять "1" если надо что-бы игра не переигрывалась после каждого разбора.
 
  
'''ВНЕШНИЙ ВИД'''
+
Пример файла уровней:
*'''картинка''' в это поле из редактора ресурсов перетаскивается анимациякадрами которой являются изображения фишек в заданной последовательности,
+
<?xml version="1.0" encoding="UTF-8"?>
*'''колонок''' - здесь задается число колонок поля,  
+
*'''строчек''' - здесь задается число строчек поля,
+
<levels>
*'''время поворота''' - время поворота фишки вокруг центра ячейки,
+
 +
<level id="0"  field="2,0,5,0,2,1,5,0,5,0,2,0,5,0,2,0,5,0,5,0,2,1,5,0,2,2,2,3,5,0,5,0,5,0,
 +
5,0,5,0,2,0,5,0,2,0,5,0,2,0,2,0,5,0,2,3,5,0,2,2,5,0,5,0,2,0,2,0,5,0,2,0,5,0"
 +
  fixed="12,0" />
 +
   
 +
<level id="1"  field="2,0,5,0,2,0,5,0,5,0,2,1,5,0,2,0,5,0,5,0,2,1,5,0,5,0,2,2,5,0,5,0,5,0,
 +
2,3,5,0,2,1,5,0,2,1,5,0,2,0,2,2,5,0,2,3,5,0,2,2,5,0,5,0,2,1,2,1,5,0,2,0,5,0"
 +
fixed="13,0" />
 +
 +
<level id="2"
 +
field="5,0,5,0,2,0,5,0,5,0,2,1,5,0,2,0,5,0,5,0,5,0,2,2,5,0,2,2,5,0,5,0,2,0,5,0,5,0,5,0,5,0,
 +
2,2,5,0,2,2,2,0,5,0,2,3,5,0,2,2,5,0,5,0,5,0,2,1,5,0,2,1,5,0"
 +
  fixed="13,0" />
 +
</levels>
  
Ячейки имеют нумерацию (0;0), (0;1), (0;2), (0;3),(0;4), (0;5), (0;6), (0;7).... - в строке,
+
*'''level id''' - номер уровня
и (0;0), (1;0), (2;0), (3;0),(4;0), (5;0), (6;0), (7;0).... - в столбце,
+
*'''field''' - описание игрового поля
 +
*'''fixed''' - ячейки с заданным начальным положением
  
[[Файл:Ячейки2.png|400px]]
+
В параметре field описываем конфигурацию собранного расклада игры. Отдельная ячейка описывается 2 числами: 1 - тип фишки(номер фрейма в анимации); 2 - угол поворота по часовой стрелке(возможные значения: 0, 1, 2, 3).
  
'''ВХОД'''
+
В параметре fixed описываем ячейки с заданным начальным углом. Ячейка описывается 2 числами: 1 - номер ячейки на поле(нумерация идет с левого верхнего угла, начинается с 0); 2 - начальный угол поворота по часовой стрелке(возможные значения: 0, 1, 2, 3).
*'''x''' - задается номер ячейки по х
 
*'''y''' - задается номер ячейки по y,  
 
*'''грань''' - здесь задается номер грани, с которой начинается линия.К постановке этого параметра нужно отнестись осмысленно. Нумерация граней идет по часовой стрелке, начиная сверху - 0,1,2,3
 
  
Аналогично задаются параметры выхода
+
Для смены уровня в объекта нужно изменить параметр level_id и вызвать состояние init.
  
'''ВЫХОД'''
+
== Вариант игры: прохождение луча ==
*'''x''' - задается номер ячейки по х
+
[[Файл:Pip1.png|200 px|thumb|right]]
*'''y''' - задается номер ячейки по y,  
+
В объект был добавлен функционал, который позволяет сделать миниигру, цель которой - провести луч с точки А в точку Б используя систему зеркал.
*'''грань''' - здесь задается номер грани, на которой заканчивается лини
 
  
В строке '''РАСКЛАД''' в строчку задается расположение конкретных фишек в ячейках поля.
+
Для такого вида труб тоже нужна фреймовая анимация из 7 кадров. 6 из них - пустые кадры (рационально добавить в анимацию 1 пустой кадр и его раскопировать для нужных фреймов) и кадр для отображения зеркала, которое можно вращать(2 фрейм анимации). Также для корректной работы нужно выставить параметр "вращать кресты" в "нет" - это запретит вращать ячейки с 4 и 5 фреймом анимации труб.
*Рисунок уровня в виде последовательности чисел через запятую. Чисел должно быть четное количество. Первое число каждой пары - тип ячейки от 0 до 6 включительно, Второе - начальный поворот от 0 до 3. Если в этом параметре пустая строка - уровень генерируется. Расклад '''необходим''' для перевода
 
Pipes в состояние Skip.  
 
  
[[Файл:1.0.png|150px]] [[Файл:1.1.png|150px]] [[Файл:2.0.png|150px]] [[Файл:2.2.png|150px]]
+
Игровое поле набирается только ячейками с 2 и 5 фреймом: 2 фрейм - ячейка с зеркалом, 5 фрейм - через которую проходит луч.
 +
Пример уровня:
 +
  "2,0,5,0,2,1,5,0,5,0,2,0,5,0,2,0,5,0,5,0,2,1,5,0,2,2,2,3,5,0,5,0,5,0,5,0,
 +
  5,0,2,0,5,0,2,0,5,0,2,0,2,0,5,0,2,3,5,0,2,2,5,0,5,0,2,0,2,0,5,0,2,0,5,0"
  
 +
[[Файл:Pip3.png|thumb|right]]
 +
Уровень можно указать 2 способами:
 +
# в поле "расклад" объекта pipes, при этом файл уровней игнорируется
 +
# с помощью файла уровней
 +
При использовании файла уровней есть возможность принудительного задания начального положения фишки, что может быть нужно для получения корректного начального отображения.
  
по правой кнопке мыши добавляются команды, по которым можно изменять состояние или параметр объекта при выигрыше, а также состояние объекта при постановке фишки в правильное положение( заданное в строке расклад), к этому параметру нужно относится специфически так как у симметричных ячеек может быть несколько правильных положений.
+
Графика для отображения эффекта прохождения луча добавляется в вкладке "внешний вид - эффект луча". В ней указываем 3 графических ресурса:
 +
[[Файл:Pip2.png|thumb|right]]
 +
* ''прямая'' (|) - ресурс для отображения луча проходящего через ячейку(вертикальная прямая, как на 1 кадре анимации для обычных труб)
 +
*''угол'' - ресурс для отображения луча, который отражается зеркалом(должен быть аналогичен 2 кадру для анимации труб)
 +
*''крест'' - ресурс для отображения 2 лучей, которые пересекаются (аналогичен 5 кадру анимации для труб)
  
'''ИЗМЕНИТЬ СОСТОЯНИЕ'''
+
При передаче объекту состояния skip, он отрабатывает следующим образом:
*'''объект''' - выбирается доступный в этом экране объект
+
# выключается луч
*'''состояние''' - задается состояние этого объекта
+
# ячейки разворачиваются в правильную позицию
 +
# включается луч
  
'''ИЗМЕНИТЬ ПАРАМЕТР'''
+
Также объекту можно передать состояние hide_effect, которое выключает отображение луча. После этого луч включится или при повороте любого зеркала или при передаче объекту init.
*'''объект''' - выбирается доступный в этом экране объект
 
*'''параметр''' - параметр который мы изменяем
 
*'''значение''' - задается новое значение параметра для этого объекта
 
  
'''ФИШКА ПОВЁРНУТА ПРАВИЛЬНО'''
+
Пример: S:\!MOBILE\!!!EditorGames\Wiki_sample
*'''объект''' - выбирается доступный в этом экране объект
 
*'''состояние''' - задается состояние этого объекта
 
  
 +
Файл: pipes_light.zip
  
== Пример ==
+
== Примечания и дополнения ==
  
В качестве примере приводится мини игра из "Game_Adventure_RiteOfResurrection"
+
Вариантов собранного трубопровода может быть несколько, в зависимости от рисунка, но в случае скипа всегда будет рисоваться вариант, указанный в раскладе.
  
У нас есть объект Pipes с заданными характеристиками
+
Трубопровод может иметь несколько входов и выходов. Линия, которая строится при этом, должна соединять в одну сеть все входы и выходы (возможность ставить в соответствие каждому входу свой выход пока не реализована).
  
[[Файл:Пример1.png|750px]]
+
== Пример ==
  
У нас есть заданный расклад для 5-ти столбцов и 7-ми строк
+
[http://fs5.absolutist.com/files/wikisample/Pipes.rar Download]
А также flyer при постановки ячейки в правильное положение при окончании игры мы выключаем видимость сцены.
 
  
[[Файл:Example.jpg|500px|]]
+
[[Category:Game mechanic]]

Текущая версия на 05:08, 3 апреля 2015

Sc Bed Times.jpg

Pipes - объект, который обладает механикой сбора трубопровода (микросхемы и т.п.) путем поворота отдельных элементов . Объект реализован в виде матрицы, каждая ячейка которой содержит вращающийся элемент. При инициализации объекта pipes все его элементы (ячейки) случайным образом поворачиваются, разрывая соединение входа и выхода. Каждый клик на элемент поворачивает его по часовой стрелке на 90 градусов. Игра считается завершенной, если между входом и выходом трубопровода образуется цепь правильно повернутых элементов.

Общие параметры (см. описание Object)

  • положение - координаты левого верхнего угла игрового поля по оси x и y;
  • размер - ширина и высота одной ячейка трубопровода.

Основные параметры

Pipes 0.jpg

Группа - внешний вид:

  • картинка - анимация, состоящая из элементов трубопровода начиная с пустого, перетаскивается мышкой из базы ресурсов;
  • колонок - количество ячеек с элементами по горизонтали;
  • строчек - количество ячеек с элементами по вертикали;
  • время поворота - время поворота элемента в миллисекундах.

Группа - 'внешний вид - эффект луча':

  • прямая (|) - Графический ресурс луча проходящего через ячейку по прямой вертикально (соотв. кадру 1);
  • угол - Графический ресурс луча проходящего через ячейку с зеркалом (соотв. кадру 2);
  • крест - Графический ресурс луча проходящего через ячейку с зеркалом (соотв. кадру 4,5);


Все кадры анимации, указанной в поле картинка, должны быть одного размера. Последовательность кадров в анимации должна строго соответствовать приведенной на рисунке ниже: right‎

  • Нулевой кадр - пустой;
  • Первый кадр - прямой элемент с двумя соединениями на верхней и нижней гранях;
  • Второй кадр - изогнутый элемент с двумя соединениями на правой и нижней гранях;
  • Третий кадр - тройник с соединениями на правой, нижней и левой гранях;
  • Четвертый кадр - крестик с соединениями на всех четырех гранях;
  • Пятый кадр - пересечение двух прямых не совмещенных элементов (верхнее и нижнее соединения относятся к одному элементу, правое и левое ко второму);
  • Шестой кадр - два изогнутых не совмещенных элемента (правое и нижнее соединения относятся к одному элементу, верхнее и левое ко второму).

Группа - вход:

  • x - номер столбца ячейки, с которой будет начинаться трубопровод, нумерация начинается с 0 и следует слева направо;
  • y - номер строка ячейки, с которой будет начинаться трубопровод, нумерация начинается с 0 и следует сверху вниз;
  • грань - номер грани ячейки элемента, которая считается входом (если отправной точкой является верхняя грань, то значение поля 0, правая грань - 1, нижняя - 2, левая - 3).

Группа - выход:

  • x - номер столбца ячейки, которой будет заканчиваться трубопровод, нумерация начинается с 0 и следует слева направо;
  • y - номер строка ячейки, которой будет заканчиваться трубопровод, нумерация начинается с 0 и следует сверху вниз;
  • грань - номер грани ячейки элемента, которая считается выходом (верхняя грань - значение 0, правая - 1, нижняя - 2, левая - 3).

Группа - настройки уровня:

  • Расклад - "рисунок" собранного уровня в виде массива пар чисел через запятую, например, 1,0,0,0,2,3,.. и т.д. Каждая пара чисел описывает один элемент (ячейку), первое число в паре - номер кадра анимации, который будет рисоваться в ячейке, второе число - угол поворота этого кадра (0 - без поворота, 1 - поворот на 90 по часовой стрелке, 2 - поворот на 180 по часовой, 3 - поворот на 270 по часовой). Элементы описываются построчно, начиная с левого верхнего. Для пустых ячеек первое число в паре - 0 (начальный пустой кадр анимации).
  • файл уровней - Путь к файлу с описанием уровней;
  • номер уровня - Номер уровня.

Проверка висячих - 1- не считать уровень пройденным, если у присоединенного ко вхожу узла есть свободные соединения нет=0, да=1";

вращать кресты - условие сбора уровня, принимает значение 0 или 1. 1-крестообразные ячейки будут вращаться, 0-не будут (речь идет о кадрах 4 и 5, эффекта такое вращение в любом случае не дает нет=0, да=1".

Добавляемые параметры

Pipes 1.jpg

Меню выбора Добавляемые параметры к объектам активируется по правой кнопки мыши.

+.png Вход в трубопровод (используется, если входов больше одного):

  • x - номер столбца ячейки, с которой будет начинаться трубопровод;
  • y - номер строка ячейки, с которой будет начинаться трубопровод;
  • грань - номер грани ячейки элемента, которая считается входом.

+.png Выход из трубопровода (используется, если выходов больше одного):

  • x - номер столбца ячейки, которой будет заканчиваться трубопровод;
  • y - номер строка ячейки, которой будет заканчиваться трубопровод;
  • грань - номер грани ячейки элемента, которая считается входом.

+.png Фишка повернута правильно:

  • объект - объект, который перейдет в новое состояние, если элемент трубопровода повернуть правильно;
  • состояние - новое состояние объекта из предыдущего поля.

+.png Изменить состояние объекта:

  • объект - объект, который перейдет в новое состояние по собиранию pipes;
  • состояние - новое состояние объекта из предыдущего поля.

+.png Изменить параметр (свойство) объекта:

  • объект - объект, которому будет меняться параметр по собиранию pipes;
  • параметр - изменяемый параметр;
  • значение - новое значение параметра.

Состояния

Объекту pipes можно передавать следующие состояния:

  • init - элементы трубопровода поворачиваются произвольным образом, разрывая соединение входа с выходом;
  • skip - каждый элемент поворачивается в положение указанное в поле расклад за время поворота, после чего pipes считается собранным, и устанавливаются добавляемые параметры, если они есть.
  • hide_effect - выключает отображение луча, для включения нужно или переинитить объект или нажать на любую ячейку(кроме ячеек с 4 и 5 фреймом).

Файл уровней

Важно! После экспорта файл уровней нужно поместить в папку к layout.xml. Иначе он не попадет в сборку и на устройстве игра работать не будет!

Для объекта можно задать несколько уровней, с помощью xml-файла. При этом поле "расклад" в самом объекте должно быть пустым, иначе будет грузиться уровень, прописанный в этом поле.

Пример файла уровней:

<?xml version="1.0" encoding="UTF-8"?>

<levels>

<level id="0"  field="2,0,5,0,2,1,5,0,5,0,2,0,5,0,2,0,5,0,5,0,2,1,5,0,2,2,2,3,5,0,5,0,5,0,
5,0,5,0,2,0,5,0,2,0,5,0,2,0,2,0,5,0,2,3,5,0,2,2,5,0,5,0,2,0,2,0,5,0,2,0,5,0" 
fixed="12,0" />

<level id="1"  field="2,0,5,0,2,0,5,0,5,0,2,1,5,0,2,0,5,0,5,0,2,1,5,0,5,0,2,2,5,0,5,0,5,0,
2,3,5,0,2,1,5,0,2,1,5,0,2,0,2,2,5,0,2,3,5,0,2,2,5,0,5,0,2,1,2,1,5,0,2,0,5,0"
fixed="13,0" />

<level id="2"
field="5,0,5,0,2,0,5,0,5,0,2,1,5,0,2,0,5,0,5,0,5,0,2,2,5,0,2,2,5,0,5,0,2,0,5,0,5,0,5,0,5,0,
2,2,5,0,2,2,2,0,5,0,2,3,5,0,2,2,5,0,5,0,5,0,2,1,5,0,2,1,5,0"
fixed="13,0" />
</levels>
  • level id - номер уровня
  • field - описание игрового поля
  • fixed - ячейки с заданным начальным положением

В параметре field описываем конфигурацию собранного расклада игры. Отдельная ячейка описывается 2 числами: 1 - тип фишки(номер фрейма в анимации); 2 - угол поворота по часовой стрелке(возможные значения: 0, 1, 2, 3).

В параметре fixed описываем ячейки с заданным начальным углом. Ячейка описывается 2 числами: 1 - номер ячейки на поле(нумерация идет с левого верхнего угла, начинается с 0); 2 - начальный угол поворота по часовой стрелке(возможные значения: 0, 1, 2, 3).

Для смены уровня в объекта нужно изменить параметр level_id и вызвать состояние init.

Вариант игры: прохождение луча

Pip1.png

В объект был добавлен функционал, который позволяет сделать миниигру, цель которой - провести луч с точки А в точку Б используя систему зеркал.

Для такого вида труб тоже нужна фреймовая анимация из 7 кадров. 6 из них - пустые кадры (рационально добавить в анимацию 1 пустой кадр и его раскопировать для нужных фреймов) и кадр для отображения зеркала, которое можно вращать(2 фрейм анимации). Также для корректной работы нужно выставить параметр "вращать кресты" в "нет" - это запретит вращать ячейки с 4 и 5 фреймом анимации труб.

Игровое поле набирается только ячейками с 2 и 5 фреймом: 2 фрейм - ячейка с зеркалом, 5 фрейм - через которую проходит луч. Пример уровня:

 "2,0,5,0,2,1,5,0,5,0,2,0,5,0,2,0,5,0,5,0,2,1,5,0,2,2,2,3,5,0,5,0,5,0,5,0,
 5,0,2,0,5,0,2,0,5,0,2,0,2,0,5,0,2,3,5,0,2,2,5,0,5,0,2,0,2,0,5,0,2,0,5,0" 
Pip3.png

Уровень можно указать 2 способами:

  1. в поле "расклад" объекта pipes, при этом файл уровней игнорируется
  2. с помощью файла уровней

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

Графика для отображения эффекта прохождения луча добавляется в вкладке "внешний вид - эффект луча". В ней указываем 3 графических ресурса:

Pip2.png
  • прямая (|) - ресурс для отображения луча проходящего через ячейку(вертикальная прямая, как на 1 кадре анимации для обычных труб)
  • угол - ресурс для отображения луча, который отражается зеркалом(должен быть аналогичен 2 кадру для анимации труб)
  • крест - ресурс для отображения 2 лучей, которые пересекаются (аналогичен 5 кадру анимации для труб)

При передаче объекту состояния skip, он отрабатывает следующим образом:

  1. выключается луч
  2. ячейки разворачиваются в правильную позицию
  3. включается луч

Также объекту можно передать состояние hide_effect, которое выключает отображение луча. После этого луч включится или при повороте любого зеркала или при передаче объекту init.

Пример: S:\!MOBILE\!!!EditorGames\Wiki_sample

Файл: pipes_light.zip

Примечания и дополнения

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

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

Пример

Download