Как я сделал игру за неделю: проблемы, решения, фичи

Как я сделал игру за неделю: проблемы, решения, фичи

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

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

Siberian Game Jam

В начале мая я набил пару шишек на Сибирском геймджеме. Что я вынес оттуда:

  • Не делать в соло контент-зависимые игры!

  • Делать то, что в пределах твоих умственных способностей. И движка.

  • Заранее сделать страничку для игры.

Игру я худо-пополам сделал. Но из классной первоначальной идеи ритм-нарративного раннера я состряпал… пиксельный платформер.И выложить вовремя я не успел: преждевременно напился певом и не понял, что надо загрузить именно zip. Дурак. А оказывается там все просто, если обойтись без красивого оформления. Эту игру я покажу как-нибудь в другой раз.

Big Gdevelop Game Jam: тема и идея

Как я сделал игру за неделю: проблемы, решения, фичи

Заявленная тема: Overpowered. Типа, слишком сильный? Чересчур прокачанный?

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

На этот раз хотелось сделать что-то максимально ленивое. Легко масштабируемое. С минимумом графики. Обыденное и понятное.

И тут я вспомнил отпуск во Вьетнаме: загаженный отель, балкон 1×1 метр, пиво, закат... и легионы муравьёв, которые таскали мои закуски 24/7. Они же — чемпионы по соотношению вес/переносимый груз! Идеально для «Overpowered». Кор-механику я составил быстро

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

Технические детали:

  • Ограниченное поле: широкий экран без прокрутки;
  • Муравьи, которые двигаются по заранее отмеченной и сложной траектории;
  • Игроку надо нарисовать маршрут;
  • Разбросанная по полю еда;

Сворованная еда дает бонусные очки, за которые игрок прокачивает муравьев

  • Сила. Чем больше сила - тем более громоздкую еду могут поднять муравьи. Вплоть до коров.
  • Скорость
  • Количество. Одно очко - один дополнительный муравей. Больше еды. Один муравей может взять только одну еду.

Реализация: от костылей к костылям

С самого начала я осознал две ключевые проблемы:

  1. Механика рисования — как дать игроку возможность рисовать путь.
  2. Движение муравьёв — как заставить их двигаться по сложной траектории.

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

Я решил не позориться и поискать нормальные решения. Вариантов было несколько:

1. Рисовашку украсть из демонстрационных материалов Paint GDevelop. Берем оттуда рисование свободной линии. Затем используется кастомное расширение, которое преобразует нарисованную линию в SVG, затем загружается обратно в движок. И муравьи двигаются по этой векторной линии. Насколько я понял, юниты используют данные из SVG (векторный рисунок). Муторно и слишком много подводных камней.

2. Тоже Paint, но без конвертации в вектор. Другое кастомное расширение "Распознавание пикселей". Муравьи будут отбирать определенные пиксели и идти по ним. Потыкал демо и понял, что оно работает через пень колоду.

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

Что поделать. Я надел колпак "Долбоеб" и вернулся к первоначальному возмутительному решению. Звучит она так.

Как я сделал игру за неделю: проблемы, решения, фичи

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

Решение: завалить все поле непроходимыми клетками 32х32. Когда игрок строит маршрут, он создает кружочки. А если эти кружочки соприкасаются с клетками, то их непроходимость отключается.

То есть. Игрок не рисует маршрут. А создает лабиринт. А юнитам ничего не остается, кроме как его проходить.

Плюсы: просто и быстро. Если маршрут неверен, то игра проигрывается автоматически.

Минусы:

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

- Клетки 32*32 довольно большие, и разнообразить поле другими объектами затруднительно. Клетки меньшей площади сильно нагружают систему.

Решение проблемы:

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

- Разнообразил поле тарелками, машинами, деревьями, бочками с токсическими отходами (ну а откуда еще могли взяться такие могучие муравьи). Эти объекты снижают скорость муравьев, и не блокируют поле.

Игра почти готова - это ловушка!

Первый рекламный ролик: видео на ватсапп сестре

Прототип на уровне клеток без графики был готов спустя 9 ч. Из них 8 ч. я курил форумы как сделать норм. механику чтобы не выглядеть долбоебом. Как видите, я не нашел

Ассеты я надергал в векторных стоках, и перерисовал как мне нужно. В принципе, рисовать с 0 пришлось только муравьев, скатерть для пикника и разную траву по мелочи. Ну и весь UI.

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

Первый вариант иконки на итч. Тогда я не знал, что это именно иконка, а не внутренний постер страницы. В принципе, тут вся графика на первое время.
Первый вариант иконки на итч. Тогда я не знал, что это именно иконка, а не внутренний постер страницы. В принципе, тут вся графика на первое время.

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

Приятный глазу билд и первый уровень я сделал на второй день. И тут словил фрустрацию. А что дальше-то?

Богомерзкий UI

или как я два дня воевал с кнопками

Тут я в очередной раз попал в просак. Дело в том, что в движке есть некоторые решения из-под коробки. Как в поведении Pathfinder. Но как они работают - остается тайной. В GDevelop можно создать кнопку автоматически, и прописать только функции.

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

Покумекав, я решил что мне нужно всего два окна: когда игрок проиграл и когда выиграл. И для этого нужны две кнопки. Это “Переиграть” и “Играть дальше” (перейти на следующий уровень). Позже я добавил еще одно окно проигрыша, когда муравьи не знают куда идти. А меню с прокачкой сделать позже

И закономерно получил баг

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

А в моих кастомных кнопках нельзя было прописать что это именно кнопка и есть. По сути это такой же объект, по которому можно кликать.

Что ж, я снова нацепил колпак “Дурак” и таки использовал коробочное решение с кнопками. Кое-какие баги я словил, но в принципе не критично. Главное, баг с преждевременным началом игры был устранен.

Как я сделал игру за неделю: проблемы, решения, фичи

Разработать играбельный прототип - 2 часа. Делать кнопки - 2 дня

Казуальный геймдизайнер

Для оправдания скажу, что основная масса времени ушла на фичу, которую я потом пустил под нож.

У меня для прокачки есть 3 параметра: сила, скорость и количество муравьев. И каждый имел прогресс-бар. Игрок нажимает “+” на силу и шкала силы растет. Очень нужная фича:

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

От прогресс-бара по параметрам пришлось отказаться. Я перенес прогресс-бар к прокачке муравьиной колонии. Чем больше очков тратишь на муравьев, тем колония разрастается (меняется спрайт замка). Но, кажется, эти фича осталась не такой заметной как хотелось бы.

Но у меня стояла еще одна фундаментальная проблема: у меня готов только первый уровень.

Масштабирование

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

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

Когда по ГДД и планам у тебя все в порядке, но на 6-й день в редакторе видишь всего одну сцену и полторы страницы событий (код в no-code). Это напрягает. Тем более у меня не абстрактная головоломка.

Предполагалось, что игра будет состоять из нескольких этапов:

  • Муравьи очень маленькие и слабые. Воруют разные крошки и дольки.
  • Муравьи растут. Они крадут еду покрупнее: пончики, картошку и т.д.
  • Большие муравьи: крадут блюда, мелких животных
  • Муравьи утаскивают людей, машин, коров. С ними начинается война. Если не успеть, по вам ударят ракетой вместо огромной ноги. Это реализовано в итоге. Правда вместо ядерной итоге небольшой пук, но и так сойдет. Лучше чем ничего
  • Муравьи уносят здания.

Мне повезло с сеттингом и логикой игры. По сути, единственное что я менял - это добавлял к спрайтам еды людей, коров и тд. И одна добавочная функция, что последние могут убегать. В итоге я за пару часов наклепал 20 уровней.

Хотелось, чтобы потом по муравьям стреляли. Но тогда надо было бы менять игровую сущность муравьев (добавлять поведение, здоровье и проч.) что могло сломать и без того костыльную работу по поиску пути. И это единственная фича, которую я вырезал (вообще не делал).

Допущенные ошибки

Неэффективный туториал.

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

Но плейтестеры (дяди, тети и друзья) не восприняли лапу за руку. К тому же муравьи не двигаются в реальном времени. Или вообще не двигается, если маршрут составлен неправильно.

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

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

Ошибка масштабирования

У меня в игре только один глобальный объект (который не зависит от уровня). Надо было весь интерфейс перенести в глобал.

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

Если бы я изначально прописал интерфейс как глобальный объект, игра получилась бы лучше.

Игра ощущается плоской

Это я понимал с самого начала. Но тени я так и не сделал. В некоторых артах они есть изначально, но они неправильные. В других теней нет вообще.

Весь использованный арт - флэт стайл. Что тоже не придает глубины.

Я добавил тень человека, которая медленно движется по полю. Но этого мало. К тому же, муравьи не всю игру маленькие.

Планы на будущее

Из нишевой инди-игры для двух с половиной человека сделать донатную помойку. Но пока я хз что продавать. Очки прокачки? Скины? Бустеры? Рекламы, скорее всего, не будет.

Переделать механику рисования. Чтобы игра не зависела от производительности.

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

Что в итоге-то?

Да, я понимаю, что это не самая приятная и интересная игра на свете, но чтобы никто...

Пожалуйста, сыграйте в игру. Поставьте лайк. Оставьте коммент на ичте, фидбек что еще можно улучшить.

Кто поиграл - молодец, а кто нет - селедка.

Как я сделал игру за неделю: проблемы, решения, фичи
6
1
2 комментария