HTML5 Phaser ECMAScript 6

Часть 32: GIF игрового процесса и ошибки проектирования

Я сдержал свои обещания и рассказал вам про программы и утилиты которые использовал при разработке. Осталось только рассказать вам еще про Git (не стоит его путать с GitHub). Git был изобретен еще в 80-ые, а GitHub это красивая разрекламированная ПЛАТНАЯ обертка. Git можно за несколько минут настроить на своем сервере бесплатно. На GitHub нет ничего, что бы вы не смогли сделать сами (включая TODO список ошибок и планов по усовершенствования). А использовать Git надо даже если над проектом работает один программист. Чуть позже я вам расскажу почему.

Сегодня я хочу вам показать рабочий вариант игры Learn English. Так как некоторым лень переходить по ссылке и разбираться как работает игра (еще не завершенная), я воспользовался программой LICEcap (которой поделился со мной Элспер, мы с ним вместе участвуем в марафоне публичной разработки игры) для генерации коротеньких gif презентаций.

пример работы игры в режиме ознакомления и обычном, обратите внимание на язык карточки с вопросом

Во время разработки, а точней при добавлении режима «экзамен», всплыли многие недочеты в проектировании… представляете что было бы, если бы я заранее не отрисовал все сцены на бумаге? Как видно из gif примера, в центре сцены урока есть панель прогресса: желтым обозначены новые карточки, красным отвеченные неправильно, зеленым — правильно.

При проектировании я рассчитал, что количество карточек в уроке никогда не превышает 18, но решил подстраховаться и выделил место под 26 (по 13 на каждую линию). Расчет верный для урока, но в экзамене среднее количество карточек 60 (ведь слова берутся сразу из 4 уроков). Если даже добавить дополнительно две линии прогресса по 13 карточек, это только 52… да и прогресс в четыер строчки будет слишком грузить интерфейс (визуально).

Что бы не тормозить разработку, в первой версии игры я просто урезал максимальное количество слов на экзамене (выбираю 26 случайных карточек из 4 уроков). Но варианты ответов я по прежнему выбираю из полного списка, что бы экзамен был сложней уроков. Я также подумал, есть смысл позволить пользователю дать взятку, что бы перейти на следующий уровень, если он не смог его сдать после 5 попыток.

Но ошибки проектирования на этом не закончились. Как только я реализовал сохранение прогресса, я заметил вторую ошибку. Как вы помните, по задумке, новый урок игроку будет показан в режиме ознакомления: под карточкой не русское, а английское слово и варианты ответов на русском. Игрок фактически выбирает ответ по картинке. Так он частично  запоминает английского слово визуально и слышит его произношение (если ему сложно читать английский текст). Со следующего раза, урок уже включается в нормальном режиме — под карточкой русское слово, а варианты на выбор — английском.

Для вливания игрока в процесс (о важности постепенного вливаиня игрока в игру, я уже писал) изначально у пользователя только два варианта ответа. После каждого повторного изучения урока, количество ответов увеличивается до трех и четырех. Все шикарно, НО ознакомление урока и всего два варианта ответа создают проблему: сколько звезд давать за такой простой урок? Ознакомительный урок это 100% правильные ответы или 3 звезды, ответить правильно имея всего 2 варианта проще, чем при 4.

Конечно можно не давать звезды за ознакомительный урок, но это негативно отразится на игрока, ведь он что-то сделал… по теории надо его с самого начала мотивировать и дать 3 звезды. Но с другой стороны, так он теряет стимул учить уроки повторно, что бы улучшить свой результат. У меня всего два решения (которые не требуют большим модификаций, которые я сейчас не могу себе позволить):

1) Можно после каждой попытки обновлять количество звезд, а не хранить лучший результат.

2) Ограничить максимальное количество звезд, которое игрок может получить при определенном режиме.

Оба подхода имеют свои плюсы и минусы. Второй мне меньше нравится, так как я не хочу запутывать пользователя давая ему за ознакомительный урок всего 1 звезду. Он подумает, что он сделал что-то не верно и по этому получил всего одну, вместо возможных трех. Но и первый вариант тоже не логичен — ни в одной из игр, количество звезд за уровень не уменьшается. Если вы прошли уровень с 2 звездами, то даже если при повторной попытке вы получите 1, ваш результат за этот урок остается 2 звезды.

На момент написания этого поста, я нашел третье решение. Можно при обучении или режиме с 2, 3 ответами не давать полные звезды! Вместо этого давать такое же количество от 1 до 3, но мелких звезд. Так пользователь понимает, что он все сделал верно, но для получения больших звезд надо еще постараться. В результате мы имеем диапазон не 1-3, а 1-6… теперь осталось подумать, что делать с ознакомительным уроком, ведь его не реально завершить менее чем за 3 звезды. Есть ли у вас предложения?

У меня уже не осталось времени написать о сцене магазина и о проблеме невозможности различить сцену выбора урока для разных навыков. Об этом мы поговорим в следующий раз, сейчас время возобновить работу над игрой. Спасибо за то, что следите за разработкой, вместе веселей =) Если есть вопросы, пожелания, замечания, я всегда рад буду их выслушать. Спасибо!

2 thoughts on “Часть 32: GIF игрового процесса и ошибки проектирования

  1. Выглядит симпатично.

    Зашел с телефона, перешел по первой кнопке, там перешел на клубнику, показался экран загрузки, загрузился и все больше ничего, остался экран загрузки с прогрузившимся ползунком.
    Потом попробовал то же самое с ноута. Прогрузилось и нормально перешло на урок.

    На телефоне еще повернул телефон в альбомную ориентацию и всё сплющило. Но наверное это не проблема ведь он поворачивал страницу браузера и наверное в полноценном приложении будет просто запрещен поворот.

  2. На счет разворота ты прав Элспер, я его потом заблокирую в самой оболочке гибридного приложения. То что сплющилось, это из за мин размера… в принципе я Phaser-у сказал что минимальная ширина это 320 но высоту не ограничил. По правилам он не должен нарушать пропорции, но видимо это не распространяется при срабатывании мин размера.

    Но вот то, что урок у тебя не загрузился это плохо… если бы он у тебя и на ПК не работал, я бы подумал, что это моя логическая ошибка, но тут может что-то с декодированием аудио. А ты как отлавливаешь ошибки на стадии разработки? Ведь доступа к мобильному устройству бета тестера у тебя нет. Заранее спасибо за поддержку и советы Элспер, если бы не твой прошлогодний марафон, всего этого не было бы

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

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