Этап 1: Протоитип из картона и пластилина.
Еще до того, как товарищ программист стал усиленно кодить, я сделала такой вот бумажный прототип:
Ну, это как бы самая первая версия игры и самая медленная. Кстати, кое-что про бумажный прототип я уже писала вот здесь.
Этап 2: Схематичные наброски.
Дальше несколько уровней я нарисовала в фотошопе:
Потом художник Stone Brush нарисовал мордочки в своем несколько своеобразном стиле. Про историю создания смайликов можно почитать здесь, если кто еще не видел.
Этап 3: Проектирование. Количество и структура.
Сначала предполагалось, что в игре будет 50 уровней. Потом все-таки решили, что это маловато, и на данный момент игра насчитывает целых 75. Один экран вмещает в себя 15 уровней:
Итого выходит 5 таких экранов. Как-то само собой возникла мысль делить по этому принципу их на группы. То есть для каждого экрана свой отдельный фон, доминирующий вид смайликов и своя музыкальная тема.
А вот систему открывания уровней предложил программист. На каждом уровне через определенные промежутки времени вылазят звездочки. Для открытия уровня нужно собрать определенное количество звезд в общей сумме. Сложность собирания звезд состоит в том, что при нажатии на звезду теряется один ход, ну, иначе было бы слишком тривиально.
Насчет порядка уровней у нас возникли споры. На данный момент в демке сделано так, что иногда уровни открываются не по порядку нумерации, а может открыться уровень, например, на другом экране. Я это распределила по нарастающей сложности, как правило, в конце каждого блока уровни самые сложные, а в начале - обучающие. Еще пока не совсем ясно, насколько это удобно игрокам, потому что никто так далеко еще не проходил!
Этап 4: Цифры вместо мордочек.
Ну и, наконец, добрались от теории к практике. Сначала вместо спрайтов в игре были вот такие циферные заглушки:
Цифры показывали степень веселости смайликов. В таком состоянии проще было понять, насколько правильно оно работает.
Этап 5: Редактор уровней.
StaticZ запрограммировал игру таким образом, что уровни считываются из простого текстового файла формата ecd, как, впрочем, и многие другие настраиваемые значения, такие как спрайтлист, титры, интерфейс.
Формат *.ecd (Exarion Cascade Descriptor) по сути является текстовым файлом в кодировке UTF-8.
Открываем мы его простым Notepad++, ну можно еще подсветку синтаксиса настроить разве что.
В простейшем случае такой файл состоит из последовательности пар ключ-значение, разделяемых двоеточием, таким образом значением является любые символы начиная с двоеточия и до следующей управляющей конструкции. Перед ключем ставится символ бакса '$'. При чтении все пустые символы игнорируются (т.е. пробелы, табуляция и т.д.)
В некоторых случаях файл может быть разделен на секции, каждая секция не зависима и может рассматривать как отдельный файл.
Для интереса приведу кусок кода из этого файла:
[LEVEL053]
$title:ru."Вместе мы сила!"
$title:en."We are strong together."
$stars:{65,67,69}
$layer:"bck_layer04"
$music:"mus_theme04"
$decay:4
$swing:"<< >> ^^ __"
$field:"
=+++ <>7o <>7o <>5o <>8o =+++
=+++ >>3o >>5s <<5s <<3o =+++
=+++ >>3o <<5s >>5s <<3o =+++
=+++ <>8o <>5o <>7o <>7o =+++
"
Вот как этот же уровень выглядит в игре:
Несложно догадаться, что смайлики здесь обозначаются матрицей. Так как у нас есть четыре типа, для каждого присвоена своя буква:
o - обычный смайл
n - смайл нельзя вращать
u - смайл нельзя тапать
s - смайл нельзя ни вращать ни тапать
Число от 1 до 9, что определяет настроение смайла. 9 - самое лучшее настроение, 2 - почти самый грустный, когда настроение падает до 1 - уровень проигрывается.
А вот эти значки >> - определяют направление взгляда. Если, например, напишем вот так ^^, то наш смайлик смотрит вверх. Кстати, $swing задает перечень этих направлений, доступных на уровне. Дело в том, что раньше на некоторых уровнях можно было глаза вращать только в определенные места, а потом от этого ограничения отказались.
Перед уровнем задаются его индивидуальные параметры:
$title - название уровня
$stars - на каком ходу появляются звезды. Например, на 53 уровне три звезды появляются на 65ом, 67ом и 69ом ходах соответственно.
$layer - фон уровня
$music - музыка, которая играет на уровне
$decay - скорость погрустнения, в данном случае если смайлик не трогать 4 хода, то он на единицу погрустнеет
Как видите, в принципе созданием уровней для игры может заняться любой желающий! В этом нет ничего сложного. Конечно, StaticZ мог бы придумать и реализовать и более продвинутый редактор уровней, но в данном случае в этом нет необходимости, этот отлично справляется с поставленной задачей.