Collapse

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

Объект «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.

27-12-2013 14-15-18.png
27-12-2013 16-18-35.png


Содержание

Свойства

Общие параметры

  • Слушатель - Объект типа matchbattle.
  • Время партии - Время игры. По окончанию которого будет засчитано поражение.


Перегруженные правила

  • Типов фишек - Число разновидностей типов фишек.
  • Номер в фишках(numTokenNums) - Число номеров в фишках которые (для текущего уровня). Включая статические.
  • макс. номеров в фишках(numTokenNumsMax) - Максимальное число номеров в фишках. Включая статические.
  • Номер бомбы - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.
  • Номер крестобомбы - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.
  • Статический номер - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.
  • Типов узлов - Число разновидностей типов нормальных узлов графа.
  • Условия пометки - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.
  • Монотонность - Должны ли номера в первой пометке быть монотонной последовательностью.
  • Мин.пометка - Минимальное число фишек помечаемых в первой пометке.
  • Макс.пометка - Максимальное число фишек помечаемых в первой пометке.
  • Время пометки - Пометка завершается спустя заданное в этом поле время.
  • Переставлять - Фишки первой пометки переставляются.
  • Уменьшать - Фишки первой пометки уменьшают свой номер.
  • Удалять - Удалять ячейки первой пометки.
  • Условие удаления - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.
  • Тип удаления - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.
  • Мин.удаление - Минимальное число фишек, которое можно удалить.
  • Генерация без мачей - При генерации поля избегать готовых совпадений.
  • Проверка после осыпания - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.
  • Добавление(needBirth) - Нужно ли добавлять фишки на поле. Или игра на разбор; Можно перегрузить настройками уровня (результирующее значение будет в парамметре "needBirthLevel");
  • Схлопывание(needCollapse) - Нужно ли схлопывание (Ликвидация пустых столбцов);Можно перегрузить настройками уровня;
  • Менять тип узла - Увеличить ли тип нормальной ячейки, если над ней произошла трансформация фишек.
  • Поддерживать число ходов - При осыпании фишек проверить поле на то, чтоб обязательно был возможный ход.
  • Тащить фишку - Тащить первую фишку пометки за пальцем.
  • Завершать пометку - Не ждать отпускания пальца для завершения пометки - актуально в тех случаях, когда в ней всегда одинаковое число фишек.
  • Перемешивать при 0 ходов - если нет больше ходов на поле, да - поле перемешивать, нет - проигрыш.

Перегруженные цели

  • Очистить поле - Уничтожить соотв. % фишек. Не стоит комбинировать с досыпанием.
  • Перекрасить поле - Перекрасить все ячейки поля в базовый тип.
  • Уронить статические - Уронить все статические фишки на дно поля.
  • Уничтожить фишек - Уничтожить фишек, количество через запятую.


Внешний вид

  • Картинка - Графический ресурс картинки пазла.
  • Фишки - Не рекомендуется использовать. Заменено на добавляемые параметр, см.ниже.
  • Ячейки - Графический ресурс ячейки.
  • Курсор - Курсор для выделения фишек.
  • Колонок - Число колонок на которые разбивается пазл.
  • Строк - Число строк на которые разбивается пазл.
  • Авторазмер - Если 1, то для расчета размера ячеек используется картинка. 0 - размер ячейки = размер паззла / число ячеек
  • Сетка? - Если 1, то будет показана сетка при разрезке картинки на блоки. При 0 - сетки не будет.
  • Счетчик статических - Счетчик статических. Объект типа каунтер.
  • Прогресс статических - Прогресс-бар статических. Объект типа progress.
  • стиль(style) - стиль фишек (перегрузка арта фишек; артом из файла уровня); Стиль указанный в настройках уровня перебьёт стиль объекта; Получается вот такой приоритет (Арт из объекта -> Стиль указанный в объекте -> Стиль указанный в уровне);
  • анимация рождения(dropBorn) - тип рождения фишек объектом (скалирование/падение сверху), может быть перегруженно файлом уровня;
  • бомбы - Прогресс-бар статических. Объект типа progress.


Времена этапов

  • невидимости - Начальная пауза перед откртыием пазлы.
  • открытия - Время открытия исходной картинки (проявляется по alpha).
  • показа - Время показа исходной картинки (после проявления).
  • перемешивания - Время визуализации процесса перемешивания ячеек.
  • финала - Время финального показа пазлы после её разбора, перед переходом к закрытию.
  • закрытия - Время закрытия пазлы (в состояниия close, исчезает по alpha).


Времена игры

  • перестановки - Время перестановки двух ячеек местами при их выборе.
  • движения - Время движения фишек от одного узла к соседнему.
  • движения верх - Время движения фишек от одного узла к соседнему при отскоке.
  • отскока - Время движения фишек вверх при отскоке. Т.о. при дефолтных значениях фишка отскакивает на 200 / 600 треть высоты фишки"
  • рождения и удаления - Время рождения и удаления фишки.
  • поворота - Время поворота ячейки при повторном клике на нее.
  • паузы - Время паузы перед началом перестановки или поворота.
  • подсказки1 - Время за которое проявляется исходная картинка в состоянии hint.
  • подсказки2 - Время в течении которого показывается после проявления исходная картинка в состоянии hint.
  • подсказки3 - Время в течении которого закрывается после показа исходная картинка в состоянии hint.


Хинт при бездействии

  • время задержки - Время бездействия, после которого следует показывать хинт.
  • машина - Объект, который будет установлен между двумя фишками.


Генерация поля

  • min размер кластера - min размер кластера из фишек одного типа
  • max размер кластера - max размер кластера из фишек одного типа


Звуки

  • нажатие на фишку - Звук нажатия на фишку.
  • добавление фишки в выделение - Звук при выделении фишки (режим dots); звук воспроизводится с 2-й фишки.
  • перемещение фишки - Звук перемещения фищки.
  • возврат фишки - Звук возврата фищки при неудачном перемещении.
  • падение фишки - Звук для падения фишки.
  • применение крестовой бомбы(sndcross) - звук при применении крестовой бомбы;
  • применение горизонтальной бомбы(sndhor) - звук при применении горизонтальной бомбы;
  • применение вертикальной бомбы(sndver) - звук при применении вертикальной бомбы.

Специальные типы фишек

  • nt_lock - графический ресурс фона при работающем "замке";
  • nt_lock_ - графический ресурс поверх графики фишки при работающем "замке" (последовательность клипов через ","; первый клип д.б. задан, но он не используется; далее клипы по возрастанию жизни);

Добавляемые свойства

+.png Изменить состояние / параметр объекта - выигрыш

- изменить состояние / параметр объекта в случае выигрыша.

+.png Изменить состояние / параметр объекта - проигрыш

- изменить состояние / параметр объекта в случае проигрыша

+.png Изменить состояние объекта - клик на одиночную

- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"

+.png Изменить состояние объекта - запланирована новая линия в аркаде

- изменить состояние объекта при старте отсчёта времени для генерации следующей линии в режиме Аркада (в объект пишется перечень фишек(nextLine), которые будут добавлены и время до их добавления (currentDt))

+.png Звук фишки

- Удаление, появление.

+.png Уровень сложности

- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.

+.png Графика фишки

- Обычная: графический ресурс перетаскивается из редактора ресурсов.

+.png Эффект

- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.

+.png Эффект бомбы

- Объект, который при взрыве фишек посредством бонуса бомба(цветная или обычная) будет склонирован и будет передано состояние "beg". Данному объекту будет записано параметры:

  • effectOriginX,effectOriginY - координаты бонуса, который вызвал схлопывание(в координатах объекта); Эффект самой бомбы (которая взорвалась) получает координаты (0;0);
  • additionalNum - номер фишки; (для удобства, бонусы смещены до 100 номера(первый бонус иммет номер 100(первая цветная бомба)));

П.С. данный эффект генерируется только при взрыве бомбы из поля (бонусы запущенные через matchbattle - не создают эффект);

+.png Эффект крестобомбы

- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние beg.

Состояния

  • beg - пауза перед open
  • open - появляется по alpha-каналу
  • start - запустить новую игру (объект применяет все данные из лейаута + из файла уровней);
  • pause - поставить объект на паузу ("заморозить объект");
  • resume - снять объект с паузы ("разморозить объект");
  • sel1 - ждем окончания первой пометки
  • sel1_end - показываем окончание первой пометки
  • sel1_transf1 - первая трансформация первой пометки
  • sel1_transf2 - вторая трансформация первой пометки
  • sel2 - ждем окончания второй пометки
  • sel2_end - показываем окончание второй пометки
  • sel2_trands1 - первая трансформация второй пометки
  • sel2_trands2 - вторая трансформация второй пометки
  • born - рождение фишек
  • move - перемещаем фишки
  • aftermatch - проверяем, не случилось ли чего-то после движения/добавления фишек
  • close - исчезает по alpha-каналу
  • end - недоступна, невидима
  • rotate_left - повернуть влево на 90 градусов
  • rotate_right - повернуть вправо на 90 градусов
  • undo - отменить один ход
  • remove_color
  • remove_single
  • shuffle_cols
  • remove_last - удалить последнюю кликнутую ячейку (покупное удаление одиночных)

Нумерация фишек объектом

Фишки которые использует объект, нумеруются от 0 до N. Данная нумерация зависит от количества цветов. Последовательность выглядит как:

  • 0 - обычная цветная фишка (рандомного цвета - при запуске игры изменится на цветную фишку в диапазоне [1,numTokenNums])
  • [1;n] - цветные фишки (n==numTokenNumsMax, максимальное количество цветов);
  • [n+1;n+n] - цветные бомбы;
  • n+n+1 - обычная бомба;
  • n+n+2 - горизонтальная бомба;
  • n+n+3 - вертикальная бомба;
  • n+n+4 - крестовая бомба;
  • n+n+5 - ячейка-Хамелеон;

Вычитаемые параметры

  • tokenStyle - перечень основных клипов для фишек ("," -разделитель;клипы фишек "norm");
  • bombClips - перечень клипов бонусов (по порядку "нумерации фишек"; первый клип - первая цветная бомба);
  • nextLine - перечень номеров фишек следующего ряда для режима Аркада ("," - разделитель; все номера бонусов смещены и начинаются с 100 (для удобства чтения); т.е. первая цветная бомба имеет номер 100, дальше по порядку);
  • currentDt - время между генерациями следующего ряда(режим Аркада);
  • chameleonColors - номера цветных фишек, используемых для ячейки-Хамелеон;
  • level_cols - количество строчек поля текущего уровня;
  • level_rows - количество колонок поля текущего уровня;
  • lastMouseDnX,lastMouseDnY - координаты X,Y последнего нажатия мыши в координатах родительского объекта;
  • goal_any - текущее значение цели - выбить N фишек;
  • goal_lines - текущее значение цели - выжить N генераций линий(Аркада);
  • goal_locks - текущее значение цели - убрать N замков;
  • goal_num_%N% - текущее значение цели - выбить m фишек N-го цвета (%N% - номер цвета фишки (нумерация с 0));
  • randomSize - размер "мешка" со случайными числами для досыпаний фишек. По умолчанию равен 100* на кол-во цветов фишек. Мешок генерируется в формате 0,1,2,0,1,2,0,1,2... затем перемешивается. Кастомный размер мешка не должен быть меньше, чем кол-во цветов фишек.
  • randomShuffles - число перемешиваний "мешка" для досыпаний. По умолчанию число перемешиваний равно размеру "мешка" (т.е. проходимся по каждой фишке и меняем ее с рандомной). Если кол-во перемешиваний меньше размера мешка, то игра усложнится (подсыпания приблизятся к последовательности 0,1,2,0,1,2... и будет сложнее матчить. Если кол-во перемешиваний = размеру мешка, то получаем полное перемешивание, т.е. абсолютно рандомную последовательность фишек. Ставить кол-во перемешиваний больше размера мешка нет смысла.

Файл уровней

Объект умеет загружать настройки из файла уровней, для этих целей у объекта должны быть заданы:

  • файл уровня(levelFile) - путь к xml файлу уровней;
  • номер уровня(levelNum) - id уровня из файла уровней;

На текущий момент объект вычитывает уровень из файла только при старте, т.е. чтобы сменить уровень нужно или сменить экран или проинитить сцену с коллапсом.

Структура файла

<levels>
     <style id="3">
          <tokens norm="355"/>
          <tokens norm="356"/>
     </style>
     <level id="1" rows="2" cols="2" numTokenNums="2" >
          <field>
               0,0,
               0,0
          </field>
     </level>
     <level id="2" rows="2" cols="2" numTokenNums="2" >
          <field>
               0,0,
               0,0
          </field>
     </level>
</levels>
Где <style> - стиль в котором перечисляем настройки фишек (resID);
    <level> - один игровой уровень
        <field> - стартовая настройка поля


Поле

Поле указывается в файле уровня:

<level><field>NTKXY,NTKXY,NTKXY,NTKXY</field></level>

Поле объекта - это строка которая имеет разделитель фишек ","(пробелы,табуляции и символы переноса игнорируются). Код каждой фишки может состоять от 1-го до 5-ти символов ("NTKXY"). Т.е. объект воспринимает поле как последовательность "NTKXY,NTKXY,NTKXY,NTKXY".

Значение символов:

  • N - индекс фишки объекта ( стартует с "0");
    • 0 - рандомная цветная фишка (цвет получится в диапазоне [1;numTokenNums]);
    • [1;m] - цветная фишка;
    • * - "дырка" (пустая ячейка) которая никогда не заполнится;
    • # - "разовая дырка" (пустая ячейка) которая может заполнится (для Аркады);
    • B - маркер который говорит, что данная фишка является бомбой, номер бомбы указывается в следующем поле(T):
      • 0 - цветная бомба 1-го цвета;
      • [1;m-1] - цветная бомба с 2-го по (m-1) цвета;
      • m - обычная бомба (взрывает всё в радиусе);
    • Z - маркер который говорит, что данная фишка является бонусом, после цветных бомб, номер бомбы указывается в следующем поле (T):
      • 0 - обычная бомба (взрывает всё в радиусе);
      • 1 - горизонтальная бомба;
      • 2 - вертикальная бомба;
      • 3 - крестовая бомба;
      • 4 - ячейка-Хамелеон;
  • T - используется как дополнительное поле, для поля предыдущего поля (N);
  • K - покраска фона (фон имеет жизнь, и при каждом матчинге, уменьшает её, при этом меняет меняется клип):
    • 0 - нет покраски;
  • X - специальный функционал:
    • 0 - обычная ячейка;
    • Z - замок с жизнью(ячейка залочена, не даём на неё нажимать если есть жизнь), при каждом матчинге жизнь уменьшается, количество жизней задаётся параметром Y(если параметр не указан, считаем == 1):
      • 0 - нет жизни (но смысла в этом мало);
      • [1;n] - количество жизней;
  • Y - используется как дополнительное поле, для поля X;

Цели

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

  • goalAny - выбить N фишек (у объекте параметр goal_any);
  • goalLines - выжить N генераций линий, для Аркады (у объекта параметр goal_lines);
  • goalLocks - убрать N замков (у объекта параметр goal_locks);
  • goalTokens - выбить N фишек конкретного цвета (последовательность через запятую для каждого нужного цвета); Объект пишет N параметров в себя goal_num_%N%, где %N% - номер фишки (нумерация с 0);Важно задавать количество цветов numTokenNums не меньшим чем количество целей - иначе уровень нельзя будет пройти;

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

  • id - id уровня (объект возьмёт первый уровень который совпадёт по id);
  • cols - высота поля;
  • rows - ширина поля;
  • numTokenNums - количество цветов которые будет генерировать объект(если у вас режим дотсы - будьте бдительны, статическая фишка тоже считается цветом, и по-умолчанию она будет первой фишкой);

Дополнительные параметры

  • needCollapse - схлопывание фишек при пустой вертикальной линии;
  • needBirth - досыпание фишек (для аркады можно не указывать);
  • style - id стиля, применит указанный стиль (применит настройки фишек из стиля и запишет в себя строку tokenStyle (resID фишек через запятую));

Бонусы

Бонус Хамелеон

Ячейка Хамелеон - это цветная фишка, которая периодически меняет свой цвет. Настраивается параметрами:

  • chameleonTime - время изменения фишки-Хамелеон (у объекта параметр currentDt);
  • chameleonColors - перечень цветов, которые будет менять фишка-Хамелеон (у объекта параметр chameleonColors);

Стартовая генерация бонусов

Для того чтобы стартово на поле были бонусы (рандомное место положение), мы указываем следующие настройки: startBombN="4";

где N - номер бонуса ( нумерация с "0"(первая цветная бомба));
    4 - требуемое количество;

Генерация бонусов при досыпании

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

  • bombProbArray - перечень бонусов через ","(нумерация с "0"(первая цветная бомба));
  • bombProb - общая вероятность генерации бонусов (бонус будет выбран из списка bombProbArray рандомно);


Аркада

Режим в котором ряд фишек добавляется снизу через время со сдвигом поля вверх. При этом проигрышь случается в случае когда мы не можем добавить ряд (размер поля увеличивается). В данном режиме очень не желательно использовать отмену действия (состояние undo).

  • dt0 - если больше 0 - включается режим аркады;
  • n - количество линий через которое время уменьшиться на множитель;
  • mult - множитель на которое уменьшиться время;

При работе режима, объект записывает строку (nextLine) в которой указан добавляемый ряд (цифры эквиваленты индексу фишки) и пинает обработчик - "запланирована новая линия в аркаде".

Пример

S:\!MOBILE\!!!EditorGames\Wiki_sample\test_collaps.zip


Создание простейшего коллапса (классика)

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

Tree.JPG

Графику для игры коллапс можно скачать здесь: Media:Fishki.rar

Установите правила игры коллапс.

Коллапс.png

Сначала стоит рассчитать размеры поля. При создании обычного коллапса поле делают квадратным, а сверху добавляют еще один ряд для статических обьектов. Соответственно, размерность коллапса составит х*(х+1). Размер поля в пикселях должен соответствовать размеру фишки, умноженной на количество строк/столбцов. Создадим поле размером 12х13. Размеры нашей фишки в пикселях составляют 58х58, соответственно, размер нашего поля в пикслях составит 696*754.

Size.JPG Size2.JPG

Устанавливаем параметр "авторазмер" - авто.

ОБРАТИТЕ ВНИМАНИЕ: Не надо загружать текстуры фишек в поле "фишки" во внешнем виде! Это делается отдельно в добавляемом свойстве "Графика фишки" отдельно для каждой фишки

Grafika fishki.JPG

Добавьте графику для ваших фишек (один цвет - одна фишка), а также графику для статической фишки (которая будет находиться в верхнем ряду).

Перегрузка правил

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

Rules classic.JPG

Разберем поподробнее некоторые установленные параметры:

  • перегрузка - да
- для перегрузки правил необходимо уставить этот флаг;
  • номеров в фишках - 5
- это количество цветов и статических фишек, что у нас есть
  • номер бомбы/крестобомбы - -1
- будьте внимательны - изначально это значение стоит на 0, изза этого первый цветной блок у вас будет считаться бомбой, и при клике уничтожать все фишки своего цвета!
- в классическом коллапсе вообще не используются бомбы
  • статический номер - 0
- это номер фишки, которая будет лежать на самом верхнем ряду, и которые надо опустить вниз

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

При установке номеров фишек для бомб и статических учтите, как нумеруется графика фишек.

Graphics num.JPG

Самый верхний добавленный ресурс будет иметь номер 0, следующий за ним - 1 и далее по возрастанию.

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

Celi.JPG

Так как условие победы в нашей игре - опустить все статические фишки на дно, то это мы и отметим, как цель игры. Обрабочтик победы добавляется так же, как и фишки - с помощью создания нового свойства:

Win.JPG

Внешний вид

Настроим внешний вид нашей игры.

Vneshniy.JPG

Некоторые параметры мы уже рассмотрели, немного об остальных:

  • сетка? - работает по каким-то собственным алгоритмам, поэтому иногда выглядит странно, можно ее просто не показывать
  • таймер - подключает таймер (можно установить ограничения по времени для решения коллапса)
  • счетчик статических - подключаем счетчик, который ведет учет статических элементов, которые еще не опущены ко дну коллапса
  • бомбы - в классическом коллапсе не используются

Со временами всяких анимаций и появлений можете поэксперементировать сами или использовать вот эти:

Vremena.JPG

При генерации коллапс устанавливает блоки одинаковых фишек рядом, подчиняясь этим правилам:

Generation.JPG

Запустим получившуюся игру:

Game.JPG

Более глубокие механики и условия попробуйте проработать сами с помощью машин, меняйте состояния для коллапса с помощью кнопок и создавайте красивые игры!