Как почувствовать себя калькулятором. Создание своего первого мобильного приложения от идеи до публикации

Всем привет. Меня зовут Дмитрий и я студент, который имел банальную мечту, создать свою мобильную игру.

Начинал осуществлять свою мечту с простого. Как только увидел Construct Classic, я понял, что пора действовать, но как только я начал работать над своей мечтой, я начал понимать, на сколько сложно создавать мобильную игру. Время шло, менял идею за идеей.

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

Увидев Unity, я понял, что вот он мой спаситель и именно вместе с ним я покорю вершины Play Market. И я начал взахлеб изучать материл связанный с Unity и языком C#, все больше убеждаясь, что я нашел своего спасителя.
А время все шло, а я не решался полностью перейти на Unity. Я все никак не мог придумать, а, чтобы такого на нем сделать? Но вот наступил день, когда все закрутилось и завертелось.

Поиск идеи


Гуляя по сайту с готовыми UI работами дизайнеров в надежде, лишь бы пришла идея в голову, и она пришла. Зайдя случайно во вкладку с UI дизайном калькуляторов, я удивился, на сколько красивым может быть, простой калькулятор. И тут я понял, что хочу создать.

Выделив основные аспекты, которые будут в игре:

  • Основа — математические операции. Что нужно поделить, отнять, умножить или прибавить к такому числу, чтобы получился такой ответ?
  • Игровые элементы — Такие как бонусы, способности, достижения и т.п.
  • Дизайн — простой и постараться сделать его красивым.
  • Бесконечность — уровни будут генерироваться бесконечно.



И так начало положено. Пора идею визуализировать.

Дизайн


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

image

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

image

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

image

Был задан общий стиль UI элементов, да и цветовая палитра вроде даже радовала. Хотя я так и остался недовольным дизайном, но переделывая все заново, я возвращался примерно к такому результату, так что решил на этом и остановиться.

image

И если игрок ответил правильно:

image
Говорим игроку, что он молодец и ответ правильный.

А вот что будет если игрок ошибся:

image
Говорим игроку, что он ошибся, но ничего страшного.

Выделив основные элементы в игровом процессе:

  • Математический пример — самое главное, игрок должен сразу бросить на него взгляд и начать решать.
  • Ответы — как только игрок решил пример, нужно искать ответ, отличительная палитра цветов у UI элемента ответа, должна крикнуть. Эй, посмотри на меня!
  • Время — этот элемент, не должен постоянно кричать, он должен выглядеть как часы, посмотрел запомнил и дальше решаешь примеры.
  • Жизни — напоминание о том, что лучше не торопиться и решать вдумчиво и не ошибаться

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

Генерация уровней


Помните я говорил, что уровни генерируются случайно? Так вот, я Вас немного обманул. Зачем надеяться на удачу и думать, что с первого уровня математический процесс вовлечет игрока? Лучше давать “подсказки” случайности и генерировать уровни, уже почти как хочется, ограничиваясь нужным диапазоном.

Тут дело дошло до кривой сложности и настройка случайности. И вот что из подсказок для случайности я сделал:

  • Диапазон уровней — с какого по какой уровень, будет генерироваться заданная сложность.
  • Количество ответов — количество ответов, которые будут генерироваться, чем их больше, тем больше времени на выбор нужного ответа.
  • Диапазон основного числа — основное число, от которого будет отталкиваться вся остальная часть примера.
  • Шанс математической операции — пока в игре есть 4 операции. Сложение, вычитание, умножение и деление.

Проведя не одну ночь с бубном, танцами и настройкой сложности, получилась примерно вот такая кривая сложности:

image

Получилось 3 вида сложности:

  • Максимальная сложность — максимум в одном диапазоне уровней. Пик сложности.
  • Средняя сложность — самая вероятная сложность, которая будет приходиться на каждый диапазон уровней.
  • Минимальная сложность — минимум в одном диапазоне уровней. Самое простое, что может быть с игроком.

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

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

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

Итог


Стоили ли те бессонные ночи, которые я провел за разработкой своей игры? Конечно же, тот опыт, что я получил бесценен. А преодолевать каждый этап разработки, смотря на то как идея из головы потихоньку превращается во что-то существующее, очень здорово.

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

Спасибо за внимание, буду очень рад комментариям.
Метки:
разработка игр, разработка под android, unity3d, дизайн, мобильное приложение

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.