Всем привет! Не писал уже больше недели но было на то несколько причин. Самая главная это отсутствие комментариев. Я же вижу что каждый день приходят десятки читателей, зависают по пол часа и читают по 7 станиц в среднем, но написать пару слов лень =) Это кстати интересный парадокс, который надо любому разработчику брать на вооружение. Если вы думаете, что создадите бесплатную программу и вас боготворят — ошибаетесь! В лучшем случае будут коменты обвиняющие вас в распространении вируса или еще чего-то, так как бесплатно ничего не бывает… но не спешите делать платную программу. С платной будут коменты что вы зажрались и забираете последнюю копейку у игрока. А если сделать дешево, то качать ни кто не будет, так как дешевое все не качественное =)

Ладно, сегодня не об этом. Пишу я пост только потому, что дизайнеру нужен еще один день что бы обновить сцену с достижениями. Сами достижения у меня уже готовы, но мне надо добавить несколько новых, очень важных и обновить данные на самой сцене. Раньше я думал, что достаточно показать список достижений с красивыми медальками и подписать кратко, что для них надо сделать НО это не совсем так. Это конечно все верно, но еще надо показать прогресс каждого достижения, если таковой имеется. Вот к примеру у меня есть достижение «закончить 5 уроков с тремя звездами». У такого достижения важно показать прогресс 3/5, что значит что до получение медальки осталось всего еще два урока с тремя звездами. Так игрок может понять, на каких достижениях ему стоит сконцентрироваться. А что бы дополнительно мотивировать на достижения, я решил за каждое давать монетки, силу, сердечки или часы. Получается каждое достижение это мини квест с наградой.
Я также подумал, возможно поменяю функцию часов. Сейчас часы это возможность не ответить на один вопрос и не завалить экзамен. Но думаю будет проще, если часы будут просто останавливать таймер и давать пользователю неограниченное количество времени думать над вопросом =) Поправить код очень просто, а игроку легче понять его смысл.

Что касается самого проекта то тут все отлично. На данный момент все сделано: главное меню, выбор урока для трех навыков, изучение новых слов, произношение, правописание и даже игра правда или ложь. Также прикрепил магазин и окошки с отчетом об уроке или экзамене. Осталось реализовать: настройки, топ100 и достижения. Экран настроек очень простой и думаю сегодня его сделать. А вот топ100 думаю отложить… проблема в том, что надо будет программно ловить момент, что у пользователя нет интернет соединения.
Прошлый месяц поработал отлично. Да вы и сами все видите из статистики. Проводил эксперимент и пробовал работать без выходных по 18 часов в сутки. Скажу так, работа продвинулась шикарно, но на 8-9 день уже начались боли в затылке и вся шея покрывалась мокрым потом. Я сначала думал что это у меня кондиционер не достаточно охлаждает воздух (с нашей жарой это нормально), но позже понял, что это я уже на пределе… и можно даже умереть от утомления. В Японии это обычное дело и у них даже есть сотрудник в штате, в обязанность которого входит выгонять людей домой после работы =) что бы они не дай бог не померли там. Нам конечно это не грозит но все же, работать хорошо, но надо делать перерывы!

Моя новая система генерации интерфейса просто на 5+. Я уже не раз говорил, что можно создавать сложные элементы интерфейса всего несколькими строчками кода. Но еще больше мне понравилось, что все интерфейсы можно собрать всего 4 классами: кнопка, счетчик, прогресс и слаидер. Все эти классы можно использовать во всех сценах и даже в будущих проектах без модификации. Пока единственным недостатком является невозможность собирать сложные компоненты из уже существующих классов. Как например слаидер использует две кнопки слева и справа для ползунка. Так вот их желательно было создавать с помощью уже существующего класса кнопки. Но что бы это делать, тогда надо в Tiled где-то прописывать имя класса, который будет отвечать за его генерацию. А если учесть, что я пишу классы в JS так, что у них может быть сразу несколько наследников, то это очень сложно. Я вам про это еще не говорил правильно? Представьте у меня кнопка, в которой есть прогресс, а также слайдер (режим экзамена, кнопка с часами). Так вот она у меня собирается из трех классов: Slider(Progress(Button(Phaser.Group))) на выходе я имею не объект а именно класс, который можно использовать что бы создать новый объект тип которого будет сразу все три класса =) Экономия кода ОГРОМНАЯ.
На этом все, выше привел несколько демонстративных скриншотов. Правописание немного затянулось из за тайского языка (его я делаю для себя). В нем есть не только с десяток знаков ударения которые пишутся серху или снизу буквы, но и гласные которые пишутся слева, справа или даже сверху от буквы =) А разбить такое тайское слово правильно на карточки и что бы программа после могла собрать такое слово — задача сложная. Она кстати очень похожа на задачу в игре с Хомяками которую делает Элспер. У него хомяк должен взять товар со склада и одновременно несколько хомяков могут претендовать на один и тот же ресурс. А у меня две одинаковые буквы могут претендовать на одну и туже ячейку =) Не говоря уже о том, что слог можно собрать из двух карточек с одной буквой на какой или использовать одну карточку с двумя и т.д. Задача намного сложней чем может показаться со стороны (кстати в итальянском тоже есть ударения, так что код пригодится и для итальянского языка).
Теперь точно все =)