HTML5 Phaser ECMAScript 6

Часть 37: Сцена правописания готова и рассуждения о «достижениях» в игре

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

пример сцены с достижениями, но его надо переработать

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

Я также подумал, возможно поменяю функцию часов. Сейчас часы это возможность не ответить на один вопрос и не завалить экзамен. Но думаю будет проще, если часы будут просто останавливать таймер и давать пользователю неограниченное количество времени думать над вопросом =) Поправить код очень просто, а игроку легче понять его смысл.

сцена правописания в игре

Что касается самого проекта то тут все отлично. На данный момент все сделано: главное меню, выбор урока для трех навыков, изучение новых слов, произношение, правописание и даже игра правда или ложь. Также прикрепил магазин и окошки с отчетом об уроке или экзамене. Осталось реализовать: настройки, топ100 и достижения. Экран настроек очень простой и думаю сегодня его сделать. А вот топ100 думаю отложить… проблема в том, что надо будет программно ловить момент, что у пользователя нет интернет соединения.

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

статистика за сентябрь, на программирование чистыми 71.5 часа, хотя надо добавить время работы с дизайнером и нарезка графики для игры, это тоже непосредственно для программирования

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

На этом все, выше привел несколько демонстративных скриншотов. Правописание немного затянулось из за тайского языка (его я делаю для себя). В нем есть не только с десяток знаков ударения которые пишутся серху или снизу буквы, но и гласные которые пишутся слева, справа или даже сверху от буквы =) А разбить такое тайское слово правильно на карточки и что бы программа после могла собрать такое слово — задача сложная. Она кстати очень похожа на задачу в игре с Хомяками которую делает Элспер. У него хомяк должен взять товар со склада и одновременно несколько хомяков могут претендовать на один и тот же ресурс. А у меня две одинаковые буквы могут претендовать на одну и туже ячейку =) Не говоря уже о том, что слог можно собрать из двух карточек с одной буквой на какой или использовать одну карточку с двумя и т.д. Задача намного сложней чем может показаться со стороны (кстати в итальянском тоже есть ударения, так что код пригодится и для итальянского языка).

Теперь точно все =)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *