Wordsearch
Объект Wordsearch дает возможность организовать ряд игр поиска слов на поле в виде сетки. Игра на данный момент имеет два настраиваемых режима: режим разбора поля и режим с досыпанием.
Словарь
- Ссылка на словарь - ссылка на файл словаря. Словарь должен быть в формате json.
- Язык - язык слов. На данный момент доступно 5 языков: русский, английский, французский, немецкий, испанский.
Пример словаря:
[["АГА", "АКР", "АКТ", "АРТ"], ["АВВА", "АВТО", "АЖУР", "АЗОТ", "АИСТ"], ["АББАТ", "АБВЕР", "АБЗАЦ", "АБОРТ", "АБРЕК", "АБРИС"]]
Уровни
- Ссылка на файл уровней - для каждого уровня должен быть свой файл, поэтому в этом поле указывается имя файла (например: lvl/level.txt), к которому в последствии будет прибавлен номер уровня. Т.е. в папке 'lvl' будут лежать файлы level0.txt, level1.txt и т.д. Если это поле не заполнено, то настройки будут браться по умолчанию из полей ниже.
Файлы уровней удобней править в специальной утилите.
- Номер - номер уровня. Передается параметром перед инициализацией.
Настройка игровой сетки
- строк - количество строк игрового поля
- столбцов - количество столбцов игрового поля
- тип сетки - выбор типов сетки: прямоугольная, шестиугольная
- отсутствующие ячейки - номера ячеек через запятую, которые должны отсутствовать. В этом случае на их месте будет пустота. Таким образом можно полю придавать различную форму
- видимость сетки - показывать или нет сетку поля (рамочку)
- цвет - цвет этой сетки
Ячейка сетки
- размер ячейки - размер ячейки в пикселях. Размер поля формируется как сумма размеров ячеек и отступов между ними. Поэтому заранее установить фиксированный размер не получится
- отступ между ячейками - отступ между ячейками
- размер буквы относительно ячейки - размер буквы, помещаемой в ячейку. Измеряется от 0 до 1
- графика ячейки - графика ячейки это анимация минимум из 5 кадров. 1 - графика в нормальном состоянии, 2 - графика выделенной ячейки, 3 - правильно отгаданное слово, 4 - неправильно отгаданное слово, 5 - слово выделенное хинтом
- прямоугольной - ссылка на графический ресурс (анимация) ячейки прямоугольной формы
- шестиугольной - ссылка на графический ресурс (анимация) ячейки шестиугольной формы
- графика блока ячейки - ссылка на графический ресурс, которым будет помечена залоченная ячейка. Ячейка может быть залоченной несколько раз. Этот ресурс помещается с левой стороны ячейки и с небольшим интервалом копируется столько раз сколько раз залочена ячейка. Не очень удобная реализация
- графика опадающей ячейки - ссылка на графический ресурс предмета, который нужно опустить вниз
- шаблон ячейки - машина, олицетворяющая собой ячейку, которая потом будет расклонирована. Нужна для создания всяких красивостей. Подробнее тут
- ячейка без графики - в случае отсутствия графики для ячеек этими цветами они заливаются по умолчанию. 1 - графика в нормальном состоянии, 2 - графика выделенной ячейки, 3 - правильно отгаданное слово, 4 - неправильно отгаданное слово, 5 - слово выделенное хинтом
Настройки сложности
- длины слов - массив чисел через запятую, которые означают процентное соотношение слов разной длины. Например строка 30,35,35 означает, что слов с 3-я буквами будет 30%, слов с 4-я буквами 35% и с 5ю 35%
- ключевое слово - на поле размещается слово, по буквам которого формируются другие слова (начальные буквы слов)
- заполненность поля - процент заполненности поля словами. Работает только для досыпания. В режиме Разбора всегда 100% заполнено поле
Таблица и хинты
- таблица - ссылка на объект таблицы, в которую будут заносится слова
- доп. таблица - ссылка на дополнительную таблицу в случае если 2 игрока
- использование таблицы - настройки отображения слов. Такие режимы:
- Не показывать слова - слова не будут отображаться в таблице
- Показывать только найденные слова (по нахождению заносить а таблицу) - актуально для режима Аркады. Заносить в таблицу правильно найденные слова
- Показывать искомые слова в таблице (по нахождению отмечать) - актуально для Разбора. Слова уже находятся в таблице, а по нахождению зачеркиваются
- Показывать искомые слова в таблице (по нахождению удалять) -актуально для Разбора. Слова уже находятся в таблице, а по нахождению удаляются
- графика отметки - отмечает графикой найденное слово в таблице
Правила игры
- режим игры - выбор режима игры. На данный момент есть 2 режима: аркада (с досыпанием) и разбор
- диагональные соединения - возможность выделять ячейки по диагонали
- несмежные соединения - возможность выделять несмежные ячейки
- условия окончания - условия при которых игра закончится. На момент написания есть 2 условия окончания: на время (есть фиксированное время за которое нужно успеть), на разблокировку (игра закончится, когда будут разблокированы все ячейки)
- досыпание - досыпать или не досыпать ячейки при удалении слова
- автоудаление - автоматически удалять слово при нахождении.
Времена
- опадание - время, за которое ячейки упадут на свои места при старте игры. Т.е. заполнится поле. Реализация опадания такова, что фактически из этого времени возьмется только 0.65 (если в настройках стоит 1000мс, то падать будут 650мс). Поэтому этот факт важно учитывать
- досыпание - время, за которое досыпятся ячейки в случае удаления найденного слова
- задержка перед досыпом - задержка перед досыпанием для показа различных красивостей удаления. Нужно в связке с шаблоном ячейки
- перемешивания - время за которое ячейки переместятся на свои позиции при использовании перемешивания (shuffle)
- swap - время, за которое 2 ячейки поменяются местами при использовании swap
- уровень - количество секунд на уровень. По истечению времени наступает проигрыш по времени
- после проигрыша - это количество секунд добавляется после проигрыша при вызове состояния game_after_lose
- автохинт - время бездействия игрока, по истечению которого начинают подсвечиваться правильные слова.
Перемешивание
Настройки перемешивания ячеек
- номер easing-а - номер изинга, который берем для красивостей движения ячеек при перемешивании. Мне нравится 6 номер. Какие есть изинги можно найти тут.
Изинги | |
---|---|
1 | QUAD_IN_EASING |
2 | QUAD_OUT_EASING |
3 | QUAD_INOUT_EASING |
4 | BACK_IN_EASING |
5 | BACK_OUT_EASING |
6 | BACK_INOUT_EASING |
7 | SINE_IN_EASING |
8 | SINE_OUT_EASING |
9 | SINE_INOUT_EASING |
10 | CUBIC_IN_EASING |
11 | CUBIC_OUT_EASING |
12 | CUBIC_INOUT_EASING |
13 | QUART_IN_EASING |
14 | QUART_OUT_EASING |
15 | QUART_INOUT_EASING |
16 | QUINT_IN_EASING |
17 | QUINT_OUT_EASING |
18 | QUINT_INOUT_EASING |
19 | EXPO_IN_EASING |
20 | EXPO_OUT_EASING |
21 | EXPO_INOUT_EASING |
22 | ELASTIC_IN_EASING |
23 | ELASTIC_OUT_EASING |
24 | ELASTIC_INOUT_EASING |
25 | BOUNCE_IN_EASING |
26 | BOUNCE_OUT_EASING |
27 | BOUNCE_INOUT_EASING |
28 | CIRC_IN_EASING |
29 | CIRC_OUT_EASING |
30 | CIRC_INOUT_EASING |
- deltha - разброс по времени между стартом перемещения ячеек
Звуки
Для различных игровых действий можно вставлять звуки. Список доступных действий:
- выбор ячейки
- неверный выбор слова
- найдено слово
- хинт
- перемешивание
- swap
Шрифты
В этом разделе настраиваются шрифты для отображения букв на поле в случае если не указан шаблон ячейки. В нем почему-то всего 3 настройки: шрифт невыделенной ячейки, шрифт выделенной ячейки и шрифт правильно выделенной ячейки.
Очки
- очки - ссылка на счетчик, который отображает набранные очки
- доп. очки - ссылка на счетчик, который отображает очки второго игрока в режиме игры на двоих
- очков за букву - количество очков за одну букву
- коэффициент весов - все буквы имеют веса, которые определяются по редкости использования этой буквы в словаре. Этот коэффициент влияет на величину весов для букв. Веса домножаются на количество очков за букву.
- анимация полета очков - машинка, которая клонируется и помещается при нахождении правильного слова в координаты первой буквы. Машинке вызывается состояние beg. Также в нее параметром score_per_word передается количество очков за найденное слово. Машинка может содержать в себе счетчик, в который сложим эти очки.
Другие параметры
- таймер - ссылка на объект таймера для отображения оставшегося времени
- счетчик залоченных - ссылка на счетчик, который отображает текущее количество залоченных ячеек
- счетчик очков за слово - ссылка на счетчик, который отображает количество очков за последнее найденное слово
Добавляемые свойства
Тут в основном находятся обработчики различных игровых событий
- игра окончена - закончилось время - в случае игры на время этот обработчик сработает, если время закончилось
- победа в режиме Разбора - все слова на поле в режиме разбора найдены
- если хинт не находит слово в режиме Аркада - обработчик сработает, если после нажатия хинта не удалось найти на поле слово. В этом случае есть смысл вызвать состояние 'shuffle'
- на поле не осталось залоченных ячеек - все залоченные ячейки разлочены
- на поле не осталось опадающих предметов - в случае если на поле кроме букв есть еще другие предметы (в рамках механики "опусти предмет вниз"), то этот обработчик сработает, когда все ячейки с такими предметами будут опущены вниз и выведены с игрового поля
- найдено слово - сработает, когда правильно нашли слово
- хинт успешно сработает - после вызова состояния 'hint' если есть что подсвечивать, то вызовется этот обработчик.
- хинт невозможен - после вызова состояния 'hint' если нечего подсвечивать, то вызовется этот обработчик.
- ячейка разлочена - реакция на разлочку ячейки
- падающий предмет достиг нижней строки - один из предметов опцстился вниз
- добавить цвет отгаданной ячейки - это дополнительные цвета для окраски правильно отгаданных слов для того, чтобы отгаданные слова не сливались и их можно было различить на поле
Состояния
- init - объект подтягивает все заданные параметры, но отрисовка поля не происходит
- start - отрисовка поля, старт таймера
- game - вызывается механикой после start и в остальных необходимых случаях. Например после успеха вызова состояния hint
- pause - поле прячется, таймер становится на паузу
- resume - поле появляется, таймер продолжает время
- shuffle - перемешивания букв на поле
- swap - перестановка двух букв местами
- game_after_lose - доигрывание с добавлением N секунд, где N параметр из вкладки Времена
- next_level - запуск следующего уровня
- hint - подсветка правильного слова на поле
Шаблон ячейки
Отдельного описания заслуживает шаблон ячейки.