Где моё молоко? Разработка обучающей математической игры под андроид


Все дети любят играть — это бесспорный факт, который вряд ли кто-то пожелает подвергнуть сомнению. Игры и игрушки — это самые узнаваемые атрибуты детства, которые сопровождают каждого маленького человечка на протяжении всей его детской жизни, помогая, поддерживая и подсказывая что-то даже тогда, когда взрослые подсказчики оказываются бессильны или бесполезны в своей закостенелой «взрослости».

Любой толковый психолог (за исключением особо рьяных адептов субботней порки), скажет, что самый лучший способ научить ребёнка чему-либо — это придумать занимательную игру на нужную тему. Именно благодаря этому факту учебники математики заполнены задачками в стиле: «у Маши и Саши было на двоих 3 яблока и 6 груш». Детям нужен хоть какой-то игровой момент в процессе учёбы, без него им будет откровенно скучно и неинтересно.


Наверняка каждый в детстве мечтал, чтоб ему вместо очередного «уроки сделал?», родители сказали: «Ты сегодня должен обязательно хотя бы один сюжетный квест за Паладинов выполнить!»

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

Для хорошей обучающей игры я вывел 3 тезиса:

0-Игра должна быть доступной. (Идеально в данном случае приложение на телефоне, он всегда с собой, и почти всегда свободен, в отличие от того же настольного компьютера).
1-Игра должна быть яркой (серые вереницы чисел на экране-та ещё тоска).
2-Игра должна быть интересной (просто читать цифры и вводить ответы -это скучно).
3-Игра должна давать полезные навыки («Научись одевать пони для карнавала»- это не то что поможет в школе).

Чтоб не изобретать велосипед, я для начала прошерстил магазин мобильных приложений под андроид. К сожалению, 90% представленных там обучающих игр соответствуют лишь первому пункту. По остальным полный провал. Либо серые вереницы действий без обратной связи, либо обучение непонятно чему. Что ж, хочешь сделать хорошо — сделай это сам.

Подход к разработке у меня уже давно сложился такой:
  • изображение идеи (рисунок)
  • черновой эскиз приложения (рисунок)
  • пишу основную логику игры в целом (переходы между уровнями, старт, конец игры, база игрового цикла)
  • пишу сам игровой цикл
  • рисую графику (черновой вариант)
  • тестирую
  • правлю ошибки и добавляю графику — чистовой вариант
  • добавляю звуки и обратную связь для игрока (звёздочки, искорки, вспышки)
  • тестирую
  • исправляю найденные ошибки.

Вот такие 10 шагов.

Обычно первые 4 пункта я делаю в пределах одного дня, пока не перегорело желание работать и не потерялось то самое первое «чувство направления», которое позволяет развивать игру целостно, не разделяя её на мелкие сущности.

Программирование я описывать не стану, здесь не применяется никаких сложных алгоритмов. Поговорим о гейм-дизайне, который, как подсказывает опыт, зачастую гораздо важнее изощрённых навыков программирования.

Итак:


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

Внизу имеется 4 варианта ответов (один из которых верный). Игрок считает в уме, выбирает ответ и получает за это один балл если правильно посчитал, и -1 если ошибся. Игра продолжается бесконечно, и прерывается только если счёт достигает отрицательного значения.

Первоначально идея казалась неплохой, но чтоб игра была всё таки игрой, нужно более явно обозначить возможность проиграть, и сделать игровой процесс чуть аркаднее. Для этого было решено отказаться от разнообразия действий с числами на экране внутри одной игровой сессии. Для этого я убрал вычитание и умножение, оставив лишь сложение.

Это позволило отказаться от подвешивания на шариках знаков операций, и заменить их на более полезную нагрузку, которая будет падать при выборе вариантов решения.

В качестве нагрузки я нарисовал мужичка, а чтоб ему нескучно было падать на земле ему организовал шезлонг с прелестницей (это для разработки, чтоб было веселее, потом заменю на что-нибудь более подобающее детской тематике). Количество вариантов ответов увеличил до пяти. Чтоб добавить процессу живости, в одной из частей экрана организовал воду, в которую может падать «полезная нагрузка» если игрок слишком долго будет думать над ответом.
Потом подумал, и добавил ещё и несколько коробок с анимироваными «бонусами», которые нужно было сбросить непосредственно в шезлонг.
Игровой экран приобрёл вот такой вид:





Уже веселее, но ещё чего то не хватает. Одиноко плывущий на шариках объект -это скучновато, нужно больше движения в кадре! Поэтому разделяю цифры на отдельные шарики, и к каждому подвешиваю полезную нагрузку.

Игровой экран теперь выглядит вот так:



Шарики летят слева направо, ударяются о невидимую стенку справа и летят обратно. Если игрок не успел сосчитать, пока они летят туда и обратно, то шарики лопаются, а «полезная нагрузка» падает в воду. Как только оба шарика лопнули, вылетает два новых.

Играть уже веселее, у подсчёта цифр появилась цель — спасать «нагрузку» от утопления.

Теперь, когда основная игровая механика определена, и запрограммирована, можно приступать к перерисовке графики.

Для начала, главный герой! Да, в игре обязательно должен быть главный герой. Он олицетворяет самого игрока, и сближает его с игровой реальностью. Мне пришёл в голову кот-обормот, и я решил его посадить прямо посреди игровой сцены, а полезную нагрузку заменить на бутылки с молоком.

Первоначально котик был улыбающийся, но после недолгих размышлений и экспериментов над живыми образцами семейства кошачьих, я пришёл к выводу, что кот, которому на голову падают бутылки с молоком не должен быть сильно счастлив.



Также переработал фон в более урбанистический стиль, долой шезлонги с прелестницами!



Усаживаем кота посредине, и заваливаем его тоннами молочных бутылок.



Отлично. Игровой процесс идёт весело, котик печально сидит под градом падающих молочных бутылок и думает свои грустные мысли. Теперь пора добавить немного драмы.

Как нам всем известно, ничто в нашем мире ниоткуда не берётся, и никуда не исчезает. Вот и кот, должен откуда-то взяться на этой забытой всеми платформе.

Я вышел во двор и окинул глазами соседские балконы. Точно! Вот оно! Кот будет выпадывать из окна! Причём не просто сам выпадывать, а его будут оттуда выбрасывать!

Вот так это выглядело изначально

А это после того как жена и дочь вступились за котика

Уже лучше! История печального котика начала обрастать подробностями. Добавим ещё немного драмы, и придадим смысл необходимости складывать цифры! Пусть за каждый неверный ответ кусок платформы, на которой сидит котик, взрывается и падает в воду. А через 5 неправильных ответов и сам котик оказывается в воде.



Ну вот. Теперь картина полная, игра имеет смысл, цель и пользу для игрока. Теперь по вечерам я могу просто сказать дочери: «Прелесть моя, покажи мне на телефоне результат счёта от 1 до 100 не менее 50, и можешь идти дальше смотреть свои мультфильмы». И всё, никаких истерик, сидит ребёнок тихонько, тыкает пальцем в телефон. Математика прокачивается, родители довольны.

Саму игрушку можно посмотреть вот здесь:
play.google.com/store/apps/details?id=air.ru.sublustris.whereismymilk

Ну или вот qr-код, чтоб можно было установить сразу с телефона


Перед тем, как выпустить игру в свободное плавание, я обратился к нескольким издателем с предложением взять её под своё крыло (впрочем, без особой надежды на успех, жанр не мейнстримный). Из всех, к кому обратился, хочу положительно отметить лишь парней из FDG, от них я получил ЕДИНСТВЕННЫЙ!!! вежлиый и честный ответ, за что им от меня большой респект.

PS:
Чуть не забыл, AS3-AIR, FB 4.7, Starling, Photoshop.

Комментарии (10)

0
Ну… 21 век, толерантность, все дела… ))))
0
Кстати, исходники всей анимации то остались ведь. Могу на флеше забахать 21+ версию :)
0
По-моему, взрослая версия игры — шикарна! Я б поиграл ))
0
Члены умеешь рисовать :D
0
И котиков! :)
0
Бесспорно остальное тоже отлично нарисовано )
Постараюсь затестить, как время будет…
0
имхо, вариант, когда кота выкидывают из окна и из ТОГО же окна летит молоко — выглядит странно…
а так — идея и реализация выглядят отлично! хочу больше клёвых образовательных игр.
0
Ааа, такая же задумка игры приходила в голову пару месяцев назад :)
0
Поиграл.
Красиво, но: мало звуков; нет нарастания сложности — соответственно быстро надоедает; сюжет претендует на абсурдный юмор, но не дотягивает )
0
Я думал насчёт нарастания сложности, но не решил как организовать. Скорость движения шариков увеличивать? или выкидывать три шара вместо двух?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.