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

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Основные параметры)
(Файл уровней)
 
(не показано 12 промежуточных версий 2 участников)
Строка 19: Строка 19:
 
*'''строчек''' - количество ячеек с элементами по вертикали;
 
*'''строчек''' - количество ячеек с элементами по вертикали;
 
*'''время поворота''' - время поворота элемента в миллисекундах.
 
*'''время поворота''' - время поворота элемента в миллисекундах.
 +
 +
'''Группа - 'внешний вид - эффект луча'''':
 +
 +
*'''прямая (|)''' - Графический ресурс луча проходящего через ячейку по прямой вертикально (соотв. кадру 1);
 +
*'''угол''' - Графический ресурс луча проходящего через ячейку с зеркалом (соотв. кадру 2);
 +
*'''крест''' - Графический ресурс луча проходящего через ячейку с зеркалом (соотв. кадру 4,5);
 +
  
 
Все кадры анимации, указанной в поле ''картинка'', должны быть одного размера. Последовательность кадров в анимации должна строго соответствовать приведенной на рисунке ниже:
 
Все кадры анимации, указанной в поле ''картинка'', должны быть одного размера. Последовательность кадров в анимации должна строго соответствовать приведенной на рисунке ниже:
Строка 42: Строка 49:
 
*'''грань''' - номер грани ячейки элемента, которая считается выходом (верхняя грань - значение '''0''', правая - '''1''', нижняя - '''2''', левая - '''3''').
 
*'''грань''' - номер грани ячейки элемента, которая считается выходом (верхняя грань - значение '''0''', правая - '''1''', нижняя - '''2''', левая - '''3''').
  
'''Расклад''' - "рисунок" собранного уровня в виде массива пар чисел в скобках через запятую, например, ''(1,0),(0,0),(2,3),..'' и т.д. Каждая пара чисел в скобках описывает один элемент (ячейку), первое число в паре - номер кадра анимации, который будет рисоваться в ячейке, второе число - угол поворота этого кадра ('''0''' - без поворота, '''1''' - поворот на 90 по часовой стрелке, '''2''' - поворот на 180 по часовой, '''3''' - поворот на 270 по часовой). Элементы описываются построчно, начиная с левого верхнего. Для пустых ячеек первое число в паре - '''0''' (начальный пустой кадр анимации).
+
'''Группа - настройки уровня''':
 +
 
 +
*'''Расклад''' - "рисунок" собранного уровня в виде массива пар чисел через запятую, например, ''1,0,0,0,2,3,..'' и т.д. Каждая пара чисел описывает один элемент (ячейку), первое число в паре - номер кадра анимации, который будет рисоваться в ячейке, второе число - угол поворота этого кадра ('''0''' - без поворота, '''1''' - поворот на 90 по часовой стрелке, '''2''' - поворот на 180 по часовой, '''3''' - поворот на 270 по часовой). Элементы описываются построчно, начиная с левого верхнего. Для пустых ячеек первое число в паре - '''0''' (начальный пустой кадр анимации).
 +
*'''файл уровней''' - Путь к файлу с описанием уровней;
 +
*'''номер уровня''' - Номер уровня.
  
'''Проверка висячих''' - условие сбора уровня, принимает значение '''0''' или '''1'''. Если значение '''0''', то у собранного трубопровода могут быть свободные (оборванные) соединения, а если значение '''1''', то свободных соединений быть не должно, т.е. все соединения узлов цепи, проходящей от входа к выходу, должны в итоге замыкаться на цепь
+
'''Проверка висячих''' - 1- не считать уровень пройденным, если у присоединенного ко вхожу узла есть свободные соединения нет=0, да=1";
 +
 
 +
'''вращать кресты''' - условие сбора уровня, принимает значение '''0''' или '''1'''. 1-крестообразные ячейки будут вращаться, 0-не будут (речь идет о кадрах 4 и 5, эффекта такое вращение в любом случае не дает нет=0, да=1".
  
 
== Добавляемые параметры ==
 
== Добавляемые параметры ==
Строка 83: Строка 96:
 
Объекту pipes можно передавать следующие состояния:
 
Объекту pipes можно передавать следующие состояния:
 
*'''init''' - элементы трубопровода поворачиваются произвольным образом, разрывая соединение входа с выходом;
 
*'''init''' - элементы трубопровода поворачиваются произвольным образом, разрывая соединение входа с выходом;
*'''skip''' - каждый элемент поворачивается в положение указанное в поле '''расклад''' за время поворота, после чего pipes считается собранным, и устанавливаются добавляемые параметры, если они есть.  
+
*'''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|200 px|thumb|right]]
 +
В объект был добавлен функционал, который позволяет сделать миниигру, цель которой - провести луч с точки А в точку Б используя систему зеркал.
 +
 
 +
Для такого вида труб тоже нужна фреймовая анимация из 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|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
  
 
== Примечания и дополнения ==
 
== Примечания и дополнения ==

Текущая версия на 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