Pull to refresh

Разработка детской обучающей игры, складываем с удовольствием

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

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

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

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

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

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

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

Благодаря тому, что я за свою жизнь разработал уже больше десятка игр, подход к разработке уже давно сложился:

  1. изображение идеи (рисунок)
  2. черновой эскиз приложения (рисунок)
  3. пишу основную логику игры в целом (переходы между уровнями, старт, конец игры, база игрового цикла)
  4. пишу сам игровой цикл
  5. рисую графику (черновой вариант)
  6. тестирую
  7. правлю ошибки и добавляю графику — чистовой вариант
  8. добавляю звуки и обратную связь для игрока (звёздочки, искорки, вспышки)
  9. тестирую
  10. исправляю найденные ошибки.

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

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

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

Тем не менее, чтоб удовлетворить любопытство технарей, озвучу некоторые технические подробности. Игра разрабатывалась на ActionScript3 (AS3), в среде adobe flash professional cs6 с использованием фреймворка Starling. Я люблю флеш, и чем дольше его использую, тем больше его люблю. Игра разрабатывалась под Андроид и iOS, но выпущена пока только под Андроид (я забыл в этом году заплатить денег жадному Эпплу, и не имею пока возможности выкладывать свои приложения в АппСтор).

Итак:



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

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

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

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

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

Игровой экран приобрёл вот такой вид:



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

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



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

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

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

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

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



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



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



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

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

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



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



Ну вот. Теперь картина полная, игра имеет смысл, цель и пользу для игрока. Теперь по вечерам я могу просто сказать дочери: «Прелесть моя, покажи мне на телефоне результат счёта от 1 до 100 не менее 50, и можешь идти дальше смотреть свои мультфильмы». И всё, никаких истерик, сидит ребёнок тихонько, тыкает пальцем в телефон. Математика прокачивается, родители довольны.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.