Collapse
Объект «Collapse» дает возможность организовать ряд игр, основанных на 3х "модах".
Все эти механики являются играми на поле, основой, которого является регулярная решетка. Игра происходит при помощи фишек, расположенных в ячейках поля.
Содержание
- 1 Свойства
- 2 Перегруженные правила
- 3 Перегруженные цели
- 4 Внешний вид
- 5 Времена этапов
- 6 Времена игры
- 7 Хинт при бездействии
- 8 Генерация поля
- 9 Звуки
- 10 Специальные типы фишек
- 11 Добавляемые свойства
- 11.1 Изменить состояние / параметр объекта - выигрыш
- 11.2 Изменить состояние / параметр объекта - проигрыш
- 11.3 Изменить состояние объекта - клик на одиночную
- 11.4 Изменить состояние объекта - запланирована новая линия в аркаде
- 11.5 Звук фишки
- 11.6 Уровень сложности
- 11.7 Графика фишки
- 11.8 Эффект
- 11.9 Эффект бомбы
- 11.10 Эффект крестобомбы
- 12 Состояния
- 13 Нумерация фишек объектом
- 14 Вычитаемые параметры
- 15 Файл уровней
- 16 Пример
- 17 Создание простейшего коллапса (классика)
Свойства
Общие параметры
- Слушатель - Объект типа matchbattle.
- Время партии - Время игры. По окончанию которого будет засчитано поражение.
Перегруженные правила
- Типов фишек - Число разновидностей типов фишек.
- Номер в фишках(numTokenNums) - Число номеров в фишках которые (для текущего уровня). Включая статические.
- макс. номеров в фишках(numTokenNumsMax) - Максимальное число номеров в фишках. Включая статические.
- Номер бомбы - Номер фишки, который соответствует бомбе. Не будет генерироваться сам по себе.
- Номер крестобомбы - Номер фишки, который соответствует крестобомбе, не будет генерироваться сам по себе.
- Статический номер - Номер фишки, которую нельзя добавить к пометке. Используется, например, для игры, в которой необходимо спустить статические объекты вниз, очистив при этом поле.
- Типов узлов - Число разновидностей типов нормальных узлов графа.
- Условия пометки - Условия для вхождения фишек в пометку. 0 - любые фишки, 1 - должен совпадать номер, 2 - должен совпадать цвет, 3 - должен совпадать номер и цвет фишек.
- Монотонность - Должны ли номера в первой пометке быть монотонной последовательностью.
- Мин.пометка - Минимальное число фишек помечаемых в первой пометке.
- Макс.пометка - Максимальное число фишек помечаемых в первой пометке.
- Время пометки - Пометка завершается спустя заданное в этом поле время.
- Переставлять - Фишки первой пометки переставляются.
- Уменьшать - Фишки первой пометки уменьшают свой номер.
- Удалять - Удалять ячейки первой пометки.
- Условие удаления - Условия для удаления фишек: 0 - не удалять, 1 - должен совпадать тип, 2 - должен совпадать номер, 3 - должен совпадать тип ИЛИ номер, 4 - должен совпадать тип И номер.
- Тип удаления - Тип удаления. 0 - заливка, 1 - вертикальные и горизонтальные линии, 2 - только сама пометка.
- Мин.удаление - Минимальное число фишек, которое можно удалить.
- Генерация без мачей - При генерации поля избегать готовых совпадений.
- Проверка после осыпания - После осыпания фишек ещё раз перепроверить возможные комбинации ходов.
- Добавление(needBirth) - Нужно ли добавлять фишки на поле. Или игра на разбор; Можно перегрузить настройками уровня;
- Схлопывание(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_ - графический ресурс поверх графики фишки при работающем "замке" (последовательность клипов через ","; первый клип д.б. задан, но он не используется; далее клипы по возрастанию жизни);
Добавляемые свойства
Изменить состояние / параметр объекта - выигрыш
- изменить состояние / параметр объекта в случае выигрыша.
Изменить состояние / параметр объекта - проигрыш
- изменить состояние / параметр объекта в случае проигрыша
Изменить состояние объекта - клик на одиночную
- изменить состояние объекта в случае клика на одиночную ячейку: открывает машину в которой необходимо объекту "Коллапс" установить состояние "del_last"
Изменить состояние объекта - запланирована новая линия в аркаде
- изменить состояние объекта при старте отсчёта времени для генерации следующей линии в режиме Аркада (в объект пишется перечень фишек(nextLine), которые будут добавлены и время до их добавления (currentDt))
Звук фишки
- Удаление, появление.
Уровень сложности
- Номеров в фишках, Мин.размер кластера и Макс.размер кластера.
Графика фишки
- Обычная: графический ресурс перетаскивается из редактора ресурсов.
Эффект
- Объект, который будет вызываться при взрыве фишек. Должен иметь состояние beg.
Эффект бомбы
- Объект, который при взрыве фишек посредством бонуса бомба(цветная или обычная) будет склонирован и будет передано состояние "beg". Данному объекту будет записано параметры:
- effectOriginX,effectOriginY - координаты бонуса, который вызвал схлопывание(в координатах объекта); Эффект самой бомбы (которая взорвалась) получает координаты (0;0);
- additionalNum - номер фишки; (для удобства, бонусы смещены до 100 номера(первый бонус иммет номер 100(первая цветная бомба)));
П.С. данный эффект генерируется только при взрыве бомбы из поля (бонусы запущенные через matchbattle - не создают эффект);
Эффект крестобомбы
- Эффект, который будет использоваться при взрыве крестобомбы. Должен иметь состояние 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
Создание простейшего коллапса (классика)
Коллапс - самостоятельный обьект, и для создания простейшего коллапса не нужно никаких дополнительных обьектов. Создайте новый проект, и на сцену поместите пустой обьект, измените тип на коллапс.
Графику для игры коллапс можно скачать здесь: Media:Fishki.rar
Сначала стоит рассчитать размеры поля. При создании обычного коллапса поле делают квадратным, а сверху добавляют еще один ряд для статических обьектов. Соответственно, размерность коллапса составит х*(х+1). Размер поля в пикселях должен соответствовать размеру фишки, умноженной на количество строк/столбцов. Создадим поле размером 12х13. Размеры нашей фишки в пикселях составляют 58х58, соответственно, размер нашего поля в пикслях составит 696*754.
Устанавливаем параметр "авторазмер" - авто.
ОБРАТИТЕ ВНИМАНИЕ: Не надо загружать текстуры фишек в поле "фишки" во внешнем виде! Это делается отдельно в добавляемом свойстве "Графика фишки" отдельно для каждой фишки
Добавьте графику для ваших фишек (один цвет - одна фишка), а также графику для статической фишки (которая будет находиться в верхнем ряду).
Перегрузка правил
Теперь перегрузим правила для коллапса классического. Так как обьект collapse многоцелевой и с его помощью можно сделать несколько различных миниигр, мы установим правила, нужные для классического коллапса.
Разберем поподробнее некоторые установленные параметры:
- перегрузка - да
- - для перегрузки правил необходимо уставить этот флаг;
- номеров в фишках - 5
- - это количество цветов и статических фишек, что у нас есть
- номер бомбы/крестобомбы - -1
- - будьте внимательны - изначально это значение стоит на 0, изза этого первый цветной блок у вас будет считаться бомбой, и при клике уничтожать все фишки своего цвета!
- - в классическом коллапсе вообще не используются бомбы
- статический номер - 0
- - это номер фишки, которая будет лежать на самом верхнем ряду, и которые надо опустить вниз
Все, что касается пометки, не требуется для классического коллапса, так как в нем не нужно отмечать фишки.
При установке номеров фишек для бомб и статических учтите, как нумеруется графика фишек.
Самый верхний добавленный ресурс будет иметь номер 0, следующий за ним - 1 и далее по возрастанию.
Перегрузим также и условия победы в нашей игре:
Так как условие победы в нашей игре - опустить все статические фишки на дно, то это мы и отметим, как цель игры. Обрабочтик победы добавляется так же, как и фишки - с помощью создания нового свойства:
Внешний вид
Настроим внешний вид нашей игры.
Некоторые параметры мы уже рассмотрели, немного об остальных:
- сетка? - работает по каким-то собственным алгоритмам, поэтому иногда выглядит странно, можно ее просто не показывать
- таймер - подключает таймер (можно установить ограничения по времени для решения коллапса)
- счетчик статических - подключаем счетчик, который ведет учет статических элементов, которые еще не опущены ко дну коллапса
- бомбы - в классическом коллапсе не используются
Со временами всяких анимаций и появлений можете поэксперементировать сами или использовать вот эти:
При генерации коллапс устанавливает блоки одинаковых фишек рядом, подчиняясь этим правилам:
Запустим получившуюся игру:
Более глубокие механики и условия попробуйте проработать сами с помощью машин, меняйте состояния для коллапса с помощью кнопок и создавайте красивые игры!