Хочу поделиться опытом и размышлениями, которые постигли меня в процессе разработки мобильной игры!
Создание игры. С чего всё началось.
Идея была проста, сделать что-то интересное и в тоже время простое.
Так как этих параметров ясное дело не хватало для создания игры, я сел и стал думать.
Быстрая и динамическая, вот какую хочу сделать игру, подумалось мне.
Игра в которой всё зависит от реакции игрока и его умения быстро принимать решения.
Но в тоже время простой, такой, которой можно управлять лишь одним пальцем, держа телефон в руке. С этими представлениями я и начал разработку основной концепции игры.
Кем управлять и куда делать движение раз она динамическая?
На этом этапе я начал думать. А какие есть варианты?
Движение справа налево или на оборот? Пропадал элемент активности в игре.
Ведь в этом случае, игрок в любой момент мог остановиться на месте и не куда не двигаться, всё, пропадала динамика.
Наверх или вниз? Логично, что в этом случае персонаж должен уметь прыгать. Прыгать куда
и с чего? Я решил использовать элемент свободного падения, как основную концепцию игры.
То есть вниз. Как можно динамически двигаться вниз?
Правильно, прыгая с платформ. Не переставая прыгать.
С этим разобрались, встал новый вопрос. А кто прыгает?
Прыгает мячик, поэтому я нарисовал круг.
Каркас готов, переходим к логике игры. Просто прыгать вниз не весело, нужен стимул.
И знаете, он быстро нашёлся. Выдать игроку в начале игры ограниченное количество прыжков и расходовать их при каждом прыжке. Увеличивая их значение, каждый раз, как игрок прыгнет в низ, на следующий уровень. Так и поступил. Отлично подумалось мне, но это оказалось слишком простая игра.
Что делать? Увеличим сложность! А как?
Добавлением объектов отнимающих большее число прыжков!
Нарисовал квадрат, повернул на 45 градусов, готово, получился шип.
Создал два разных типа шипов и перекрасил их в разные цвета,
в зависимости от уровня их урона. Забегая в перёд, добавлю, что
наносимый ими урон, прямо зависит от количество доступных вам прыжков.
Добавили сложности, но нужно добавить и противоположность.
Поразмыслив, решением было добавить не просто создать объект добавляющий прыжки,
а являющийся полноценным элементом игры. Платформа перекрывающая спуск в низ.
Для разрушения её и предоставления себе дороги, необходимо попрыгать на ней,
только после этого путь будет свободен и игроку будут начислены прыжки. Основная механика и логика игры почти готова. А что дальше?
Локации.
Делать уровни разной возрастающей сложности? Слишком трудоёмко для одного человека и даёт удар по основной концепции, по динамичности, помните? Не переставая прыгать!
Выбор пал на случайную генерацию локаций, по определённым параметрам.
Ну что же, не проблема. Написал генерацию и зациклил уровни с обеих сторон. А что бы жизнь игроку сахаром не казалась, количество шипов и их тип, стал почти прямо, пропорционально зависим от количество имеющихся прыжков, увеличивая сложность и сохраняя баланс. Так же было принято решение, об увеличении скорости, с которой игрок прыгает по локации, с течением времени, до определённых параметров, тем самым увеличивая сложность и делая процесс игры более интересным.
Чем разнообразить геймплей? Бонусы и сбор внутриигровой валюты! Бонусы. А что нужно игроку? Защититься от шипов и увеличивать количество прыжков.
Всё просто, так и поступим. Первый бонус это барьер, с ним всё максимально понятно.
Защищает игрока, поглощая урон от шипов и прыжков, пропорционально уменьшая своё значение, которое изначально равняется ста единицам, рассеиваясь со временем.
Второй же бонус ещё проще, просто добавляет прыжков игроку, мелочь, а приятно,
не однократно будет внезапно вас спасать.
Внутриигровая валюта. Выбор дизайна, пал на одну из классик, звёздочки.
Было принято решение о случайном размещении звёзд по локации, с ограничение высоты.
Вроде нечего сложного, коснуться звёздочки и получить её себе в копилку. И тут нужно вспомнить, что по локации разбросаны шипы, на которые ты скорее всего и приземлишься, если не будешь осторожен или подведёт реакция. Процесс сразу становиться интересней.
Есть валюта! А на что её тратить?
Идея пришла, дать возможность игроку, потратить собранные им звёзды на покупку прямо в той же игре, в которой он их и собрал, на покупку барьера или прыжков. Но не забывая увеличивать на них цену после каждой покупки в одной игре. Далее, что бы разнообразить игровую экономику и не пугать игрока трёхзначными ценами в магазине модификаций, о нём далее. После проигрыша, звёзды конвертируются в монетки, по курсу: десять звёзд, равны одной монете. Как пример 157 звёзд, будут приведены в 15 монеток.
Внутриигровой магазин модификаций персонажа!
С дизайном персонажа разобрались ещё в самом начале, а как можно его приукрасить?
Поменять цвет за внутриигровую валюту? Логично, так и поступил. Что дальше? А как насчёт шапок и очков? На этапе написания этого текста, я реализовал в игре некоторое количество модификаций покупаемых за внутриигровую валюту, к примеру такие как, три шляпы и глаза разного вида.
Больше размышлений о динамичности!
На этом этапе игра уже была достаточно динамичной и соответствовала критерием.
Но всплыла неожиданная проблема. Игра выглядела стерильно! И как это исправить?
Я стал думать, первое что пришло мне в голову, это то что каждая локация,
запрограммирована быть случайной формы со случайным расположением рельефа.
А почему бы мне тогда, не генерировать для каждой локации случайный цвет фона и платформ?
Работа с цветом. Я написал реализацию которая присваивала случайные цвета из определённого диапазона. И это сработало. Всё действительно начало выглядеть намного лучше. Но чего-то всё же не хватало. Решение как оживить локацию пришло довольно быстро.
Теперь бонусы и звёзды, начали медленно переливаться между двумя цветами, с разной скоростью, начиная с разного временного интервала своего состояния. А при их сборе, они стали рассыпаться на множество уменьшающихся своих копий. Так же претерпел изменение и игровой персонаж. Для обозначения своей траектории, теперь он стал оставлять затухающий след, своего цвета, по ходу движения. И игра заиграла новыми красками, в прямом и в переносном смысле!
Итоговая суть геймплея и социальная составляющая. Ну что же, вот мы и подошли к сути. Сталкиваясь с трудностями игрок, должен пройти,
а вернее про прыгать, как можно больше уровней и собрать как можно больше звёзд,
что бы иметь возможность модифицировать своего персонажа.
Социальная составляющая. По ходу игры спуститься всё ниже, становится всё сложнее.
Поэтому пришла идея добавить в игру таблицы лидеров, по количеству пройденных уровней и собранных звёзд за одну игру. Причём игрок сам решает, в чём хочет поставить рекорд, в пройденных уровнях или собранных звёздах, от этого выбора стиль игры будет сильно разниться, ведь будет очень трудно преуспеть в обоих случаях. Так же добавлена локальная таблица рекордов, когда игрок к примеру не имеет доступа в интернет или просто не хочет использовать игровые сервисы.
Завершение. Ещё немного о том, что реализовано в игре. Дизайн меню игры выполнил в основном в двух цветах, синем и белом, у таких элементов как кнопки и окна сделал скруглённые края. В игре есть возможность сохранить свой прогресс в облако и восстановить его с другого устройства или после удаления и установки игры. Так же в игру я посчитал не лишним добавить достижения, которые игрок может получать по ходу игры, в основном за прохождения определённого количества локаций и сбора определённого большого количества звёзд, так же к примеру за изменения внешнего вида персонажа.
На этом всё! Спасибо, что были со мной!
Кто хочет опробовать игру, название игры Leap Step, игра доступна на телефоны с Android.
Ссылка на скачивание игры в Google Play: play.google.com/store/apps/details?id=com.Rufer.LeapStep
Ниже привожу пару пару скриншотов и видео, хоть и в плохом качестве, но с краткой нарезкой демонстрации игры!
- 15 февраля 2020, 01:22
Не фанат мобилок, особенно таких, но как минимум могу посоветовать по стилистике:
Обычно современные мобильные настолько простые игры не используют лайнарт (обводку),
но если она есть, то попробуйте сделать так чтобы линия была везде одной толщины,
это добавит очков стилистике. А то пока какой-то хаос из разной толщины линий.
И в этом моя проблема, кто = x => x == дизайнер; bool я = кто(Я); Возвращает False
Идея шикарная! Игрок должен прыгать и у него ограниченное число прыжков, которые расходуются, если прыгаешь вверх, и прибавляются, если вниз! Да еще надо уворачиваться от шипов! Единственное, я не понял, как Вы отслеживаете текущую высоту и положение игрока, по акселерометру? Если телефон падает (вместе с игроком) - это прыжок вниз? А ускорение вбок позволяет мячику пройти мимо шипов? Оч.круто, заставляет заниматься спортом) Только что делать, если ты, например, поднялся из метро и прыгнуть вниз не можешь? Или подъем и спуск без ускорения игнорируется? Знаете, лучше, чтобы игрок прыгал вверх, это труднее) А бонусы лучше ставить в таких местах, чтобы было похоже на охоту на покемонов)
Upd.
Перечитал пост. Ааа... прыгает мячик... на экране... ааа. Не, это уже не так интересно.
барометр
А, погодите, так я все правильно понял, игрок должен прыгать?
В этой игре нужно прыгать вниз, а значит - это глубокая игра
В мобильном гейминге вообще нужно прыгать вниз и пробивать дно. Так все делают =)