Разработка головоломки с оригинальным геймплеем и минималистичным (двухкнопочным) управлением

В закладки

Приветствую читателей, интересующихся разработкой игр. В данной статье я хотел бы рассказать о создании небольшой игры-головоломки “Up and Down”, особое внимание уделив непосредственно работе над геймдизайном данного проекта.

Идея создания своей собственной игры посетила меня еще в далеком 2006 году. Первый свой проект я начал создавать в редакторе GameMaker`а. Но, к сожалению, довольно быстро столкнулся с проблемой отсутствия графики. Разрабатывать игру, двигая в редакторе абстрактные кубики, было совсем не интересно, а рисовать мне для нее красивые спрайты никто не спешил. Кроме того, на тот момент я проживал в относительно небольшом городе, и сама его атмосфера отнюдь не располагала к игрострою. Сложно было найти даже не единомышленников, а просто интересовавшихся видеоиграми людей.

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

Вторая моя попытка влиться в разработку видеоигр (уже в качестве художника) произошла в 2010 году. Это был обычный платформер, который разрабатывался силами одного программиста. Поначалу все шло более-менее гладко. Пару месяцев я отрисовывал спрайты и делал к ним несложные анимации. Программист был достаточно квалифицированным в плане написания кода и геймдизайна. Однако, как позднее оказалось, плохо понимал принципы грамотного ведения проекта. Достаточно большие объемы сделанной графики забраковывались на финальном этапе, причем уже в подготовленном к добавлению в проект виде. После нескольких неудачных попыток объяснить нерациональность такого подхода к разработке графического контента, наше сотрудничество, к сожалению, закончилось.

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

В 2014 году я снова взялся за разработку своей игры. К этому времени я набрался уже достаточно опыта, повидал немало историй с развалом команд, обиженными художниками, убегающими программистами и инвесторами, потратившими n-ые суммы на разработку не понятно чего.

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

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

Здесь я хотел бы перейти к непосредственному описанию своей игры. В качестве своего первого проекта я выбрал относительно несложный в плане реализации жанр - динамическую головоломку. Это был верный выбор для начинающего инди-разработчика, так как данный жанр игр не слишком трудозатратен в плане разработки. И вероятность доведения его до релиза силами разработчика без опыта создания игр - достаточно высока. Однако мне не хотелось приносить в мир очередную инкарнацию арканоида или тетриса. Хотелось создать нечто, пусть простое по исполнению, но оригинальное по сути. Это опрометчивое желание в итоге растянуло разработку относительно простой в плане реализации игры почти на 3 года, но об этом чуть позже.

В качестве ближайших аналогов нашего проекта я бы назвал, наверное, древний спектрумовский Frogger (более современный Crossy Road) и Аudiosurf. От первой игры заимствовано принудительное смещение игрока в сторону при попадании на некоторые объекты. От второй - двухкнопочная механика смещения по линиям.

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

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

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

Попытка постепенно усложнить геймплей увеличением разнообразия типов драгоценных камней тоже себя не оправдала. Слишком маленькое игровое поле с ограниченным количеством объектов для сбора, чтобы выстраивать геймплей только вокруг этого. Добавление на уровень вновь появляющихся камней (взамен уже подобранных), позволяло искусственно растянуть прохождение одного уровня с 1-2 минут до 5-6 и могло в итоге уменьшить количество создаваемых уровней без уменьшения общей продолжительности игры. Однако уводило геймплей совсем уже в сторону аркады со странным управлением и от него в итоге было решено отказаться.

Пришлось вводить в игру достаточно большое количество новых объектов (вспомогательных и ловушек). И довольно долгое время просто заниматься их тестированием, как по отдельности, так и в разных сочетаниях друг с другом. С целью выявления новых геймплейных механик в рамках существующей концепции игры. Причем базовая простота геймплея накладывала на процесс разработки достаточно жесткие ограничения и, по сути, представляла собой основную сложность в создании данного проекта. Опять же, не было возможности заимствовать готовые геймплейные решения из аналогичных игр (ввиду их отсутствия) - создавать нечто новое путем компиляции. Что было бы возможно при выборе таких жанров, как, например, “три в ряд” или платформер. Приходилось действовать методом перебора всех доступных вариантов. Новые уровни буквально "высасывались" из пальца, многократно перерабатывались и шлифовались до приемлемого состояния. В итоге создание уровней для игры (тестирование различных объектов, ловушек и игровых ситуаций, сборка уровней и выстраивание их по возрастанию сложности) растянулось более чем на 2 года.

В результате получилась игра, состоящая из 125 уровней, с общим временем прохождения в 10-12 часов. Уровни можно условно разбить на несколько типовых групп, рассчитанных на поиск пути, реакцию, хороший тайминг или запоминание последовательностей. Сложность игры возрастает волнообразно, за особенно сложным уровнем обычно следуют несколько относительно простых. Начальные уровни достаточно "медитативны", последние же могут потребовать на свое прохождение не один десяток попыток. Если описывать получившийся геймплей, то в какой-то мере он схож с геймплеем обычного раннера. Однако имеет некоторую занимательную специфику. Типовой раннер зачастую рассчитан на хорошую скорость реакции на внезапно появляющиеся объекты (бонусы или ловушки). Здесь же напротив - геймплей довольно нетороплив и размерен, а все игровые объекты постоянно на виду у игрока. Но в процессе прохождения уровня происходит частая смена направления движения на прямо противоположное, от чего игрок начинает испытывать что-то вроде чувства головокружения. Игровой процесс зачастую превращается в борьбу со своим собственным вестибулярным аппаратом на небольшом плоском поле из квадратных клеток. Как бы странно это не звучало.

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

Также в игре немало тайминговых уровней. Например, уровень 91 содержит в качестве ловушек - периодически приоткрывающиеся, стационарно размещенные плитки с лавой, и шаровые молнии, движущиеся по замкнутой траектории. Данный уровень возможно пройти двумя различными способами. Можно точно подгадать момент (понадобится не один десяток попыток) и исхитриться забрать "сложные" центральные камни сразу в начале уровня. Или же начать с более простых - периферийных, постепенно подбираясь к центральным. В этом случае задача игрока несколько упрощается, но резко возрастает цена ошибки на финальном этапе прохождения. Основная же сложность данного уровня заключается в том, что нужно отслеживать одновременно сразу два типа угроз, действующих по разному принципу и с разной периодичностью. Не забывая при этом поддерживать нужный ритм собственного движения. Игра заставляет игрока думать "многозадачно", а не "последовательно". Оставаясь при этом крайне незамысловатой в плане базовой концепции и не прибегая к помощи дополнительных геймплейных механик.

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

В данный момент игра доступна к покупке в магазинах стима и гуглплея:

Небольшое видео геймплея мобильной версии:

Спасибо за внимание!

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Константин Пилипака", "author_type": "self", "tags": [], "comments": 19, "likes": 11, "favorites": 14, "is_advertisement": false, "subsite_label": "indie", "id": 27972, "is_wide": false, "is_ugc": true, "date": "Wed, 26 Sep 2018 17:21:38 +0300" }
{ "id": 27972, "author_id": 90387, "diff_limit": 1000, "urls": {"diff":"\/comments\/27972\/get","add":"\/comments\/27972\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/27972"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64960 }

19 комментариев 19 комм.

Популярные

По порядку

Написать комментарий...
2

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

Ответить
1

Вывел картинку, спасибо за совет)

Ответить
2

Механики довольно интересная и меня могла бы захватить на некоторый период времени (хотя все прохождение я бы точно не совершил).
Графика довольно тусклая. Лично я предпочел бы больше ярких цветов.
Также колорит и вид уровней меня наталкивает на некое чувство одиночества: игрок бродит по локации; он один из живых существ (могу ошибаться, но на видео никого движущегося больше нет); вокруг одни ловушки. Как будто герой попал в ад.
Купил/куплю ли я такую? Может быть. Скорее всего если увижу ее по скидке - купить со сдачи от другой игры. Подумаю. Оставлю в сохраненных.
Удачи.

Ответить
0

Графика делалась под олдскул игры 25-летней давности. Не хотелось обманывать игроков казуальной графикой - ближе к концу встречаются довольно хардкорные уровни, не прощающие ошибок (совсем как в суровых играх 90-х). Heretic, кстати, был одной из моих самых любимых игр - возможно я невольно перенес ощущения от его прохождения и в свой проект)

Ответить
1

Пригляделся и заметил сходство с олдскулом) Сама по себе графика достаточно хороша. Просто я отвык от нее по той причине, что на мобилки чаще выпускают игры с казуальной, яркой, векторной (предпочитаемое подчеркнуть) графикой. Однако уверен, что немало людей кайфуют от такого.

Ответить
2

делюсь опытом бутстреппинга для 2D игр

1. OpenGameArt.org - бесплатные ресурсы для игр - достойных артов мало, но в целом артов много и можно найти интересные фишки для логических игр. Кроме того, это хаб, в котором публикуются многие другие художники и магазины ассетов

2. https://graphicriver.net/game-assets?sort=rating
Небесплатные арты. Но за 5 баксов можно взять хороший набор иконок для небольшой игры. За 10-12 - большой выбор. Есть хорошие мега-паки от 20 и до 50 баксов. В основном я беру не дороже 15 баксов, мне пока хватает.

3. https://itch.io/game-assets
Вот тут можно за бесплатно найти даже достойный арт для 2D-рогалика. Но можно и заплатить, цены божеские - до 10 баксов. Основная ориентация - пиксел-арт и рпг, но есть и куча других тем.

4. ассет-сторы от игровых движков - можно начать с Unity. Там есть и бесплатные, и дешевые. Иногда потребуется сам игровой редактор, чтобы выкачать ассет, а потом вручную надо будет скопировать нужные себе файлы. Впрочем, я пока не проверял.

Ответить
1

Почему не на русском?!

Ответить
0

Изначально планировалось обойтись минимумом игрового текста - 10-15 общепонятных слов (start, options и т.п.), не больше. Делать под них отдельную локализацию (вводить дополнительный пункт меню), было не очень рационально. Поэтому был подготовлен только английский шрифт. На этапе релиза в стиме все-таки пришлось добавить еще несколько строк описания управления, но отрисовывать под них русский шрифт, к сожалению, уже не было времени. Да, и еще - текст был набран из отдельных букв в фотошопе и добавлен в проект в виде отдельных спрайтов (которые еще нужно было подгонять), а не выводился программно. Повторить такой "подвиг" еще и с русским шрифтом я бы уже не смог)

Ответить
1

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

я использую bmfont
максимум 2 дня на привыкания, затем за 5 минут генерация любого набора символов

Ответить
0

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

Ответить
1

Чёт вот вообще не понял. Дизайн тосклив и не дружит с игрой. Если бы вы сделали сделали в стиле Two Dots (возьмите на заметку), то цены бы не было.

Ответить
0

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

Ответить
1

Возьмите за основу концепцию минимализма. У вас, всё же, не натужная фэнтези игра которая требует тяжёлого визуала, а лёгкая логическая аркада. Лёгкий визуал расширит аудиторию. Если что могу подсказать.

Ответить
0

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

Ответить
1

подвиг

русским

не смог

Это очень печально.

Ответить
1

Змейка без роста и одной оси управления.
Есть стрелки, меняющие своё направление?

Ответить
0

Есть уровни ближе к концу игры, на которых встречаются стрелки направленные вертикально (вверх и вниз). Меняющие свое направление по времени тоже хотели сделать, но сейчас и так продолжительность игры уже довольно длинная. Возможно , позже сделаем уровни и с ними.

Ответить
0

Извините за бестактность, сколько выручили с игры?

Ответить
0

Меньше $1500 на данный момент.

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
Узнавайте новости о мостах
Санкт-Петербурга первыми
Подписаться на push-уведомления