Новогодняя мини-игра за 30 дней и 3 сорванных дэдлайна. Как это было. Работа над ошибками.

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

Планирование

Первые результаты разработки
Первые результаты разработки

Всего за пару дней я набросал свое видение будущей игры и краткий дизайн-документ. Было решено сделать игру с top-down камерой, про мальчика, который уклоняется от снежков, как в детской игре «Вышибалы». Конечно же, здесь не обойдется без увеличивающейся сложности, доски лидеров и бонусов в виде мандаринок. Реализовать игру решил на Unity3D (больше же никак не умею 😀 ). Сроки я прописал четко — 29 декабря релиз! Все этапы разработки прописаны по дням с небольшим запасом во времени.

25% игры готово
25% игры готово

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

Выбор стиля

Функционал стартового экрана набросан
Функционал стартового экрана набросан

В диздоке было указано, что графическая часть должна быть выполнена стиле pixel-art. Хоть мы и допускали возможность некого «кистевого» стиля мультяшной рисовки, но многое зависело от художника, «отрисовавшего» бы нам проект. Которого, кстати, в нашей команде не было. Нас всего-то двое в оркестре 😀 .  В итоге решили поискать по форумам энтузиаста для этой задачи. К этому вопросу мы подошли не серьезно, что и является нашей первой и основной ошибкой в реализации этого проекта. Подробнее о визуализации — дальше.

Начало работ

45% игры готово
45% игры готово

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

Проблемы с поиском художника

Первый вариант экрана поражения
Первый вариант экрана поражения

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

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

Стартовый экран уже похож на то, что нужно
Стартовый экран уже похож на то, что нужно

Здесь может возникнуть закономерный вопрос — почему не отказались от pixel-art стилистики и не взяли первого кандидата? На самом деле мы просто побоялись, что если этот человек вдруг пропадет, то мы не сможем продолжить рисовать в том же стиле и хоть на сколько-нибудь похожем уровне. А пиксель-арт можно нарисовать почти с любым уровнем «криворукости», если это не высоко-детализированный арт. Здесь главное — время и терпение.

Есть мнение, что в игре с графикой, красивая картинка — это 80% успеха. Если вам не нравится, как игра выглядит, то какой бы она не была гениальной, вы там надолго не задержитесь. И наоборот, бывают игры, где геймплей максимально не замысловат, но картинка просто сногсшибательна! Это может не всегда задерживает игрока, но однозначно привлекает попробовать. Конечно, есть исключения из правил, но тенденция именно такова.

Поэтому мы хотели сделать ее, как минимум, не отталкивающей визуально.

Время близилось к дэдлайну. Игра была готова по функционалу на 90%. А художника все не было. Нам ничего не оставалось, кроме как начать рисовать самим.

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

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

В общем, на данной стадии проекта мы были вынуждены взять на себя эту работу, ведь еще была надежда успеть до дэдлайна!

Проблемы с пиксель-артом на Unity3D

Вот, что такое pixel perfect
Вот, что такое pixel perfect

Когда мы добавили первые пару спрайтов в игру, мы сразу же узнали что такое «pixel perfect» 😀 . Пиксели наших изображений постоянно менялись в размерах при любом «чихе»! Они не были квадратными — вытянутыми либо по ширине, либо по высоте. Оказалось, что размер пикселей на игровой камере не равен количеству пикселей спрайта на экране. То есть, чтобы отрендерить изображение, движку постоянно приходится его подстраивать под размеры экрана. Это, в принципе, логично, но в пилотном проекте об этом совсем не задумываешься :D.

Настройка опции Pixel Perfect для холста интерфейса

Дальше мы узнали, что для интерфейса эту проблему можно решить одной галочкой в настройках Canvas. Но как это обойти для обычных игровых объектов в сцене, мы так и не разобрались. В интернете есть ряд решений на эту тему, связанных с плагинами или скриптингом. Мы примеряли на свой проект почти десяток разных вариантов. Но ни один из вариантов нам так и не подошел.

В итоге, мы решили этот вопрос банально — просто забили 😀 . На самом деле, перфекционизм — дело опасное. Здесь можно погрузиться на много дней. У нас не было такой роскоши. По крайней мере мы себя поставили в такие рамки. К тому же, в условиях динамичного геймплея, большинству игроков будет совсем не до идеальных форм наших пикселей.

Срыв первого срока

Добавили ёлочек
Добавили ёлочек

Конечно, совсем не удивительно, что из-за проблем с подбором художника и возросшей нагрузки на всех участников команды разработки (двоих основных разработчиков и основного художника в лице моей жены 😀 ), мы не вложились в срок. 29 декабря игра была готова, ориентировочно, на 70% от общего процесса. Боевой дух был немного подорван, но впереди маячил неслабый стимул — закончить разработку хотя бы к Рождеству! Так и было решено, мы перенесли дэдлайн на 6-ое января.

Срыв второго срока

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

Половину новогодних праздников мы честно занимались разработкой. В процессе отрисовки спрайтов между нами возникали жаркие споры и разногласия по тем или иным элементам дизайна и срокам работ. Нам откровенно не нравилось то, что у нас получается! Это было закономерно, когда у вас уровень перфекционизма завышен, а руки похожи на клешни крабика. Так случилось и с нами. Работы по рисованию заняли уйму времени, и мы были вынуждены перенести дэдлайн на 13е января. Уже на этом этапе мы перестали позиционировать игру как «новогоднюю». Теперь наша новогодняя игра стала скорее «зимней» 😀 .

Неудачное гейм-дизайн решение

Рисуем анимацию для бросающего ребенка в photoshop
Рисуем анимацию для бросающего ребенка в photoshop

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

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

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

Срыв третьего срока

Новый вариант экрана поражения. 90% игры готово
Новый вариант экрана поражения. 90% игры готово

Время близилось к третьему дэдлайну, а прогресс разработки игры был приблизительно в состоянии 95%. Здесь мы столкнулись с новой проблемой при билдинге проекта. На различных разрешениях экрана игровая зона отображалась некорректно. Мы даже не думали об этом нюансе и в связи с этим нам пришлось реализовать функционал адаптивности камеры под разные разрешения экрана, но без фанатизма под мобильные устройства. Всплывающие при тестировании баги и новые, не запланированные задачи, не дали нам закончить игру к 13-му января. С этого момента уже не было смысла устанавливать новые сроки. Работы оставалось совсем чуть-чуть, но сколько часов/дней на это потребуется мы уже спрогнозировать не могли.

Почти всё готово. Осталось несколько штрихов
Почти всё готово. Осталось несколько штрихов. Художник комментатора сказала, что его зовут Франческо. Кто мы такие, чтобы с ней спорить?

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

Релиз

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

Результаты нашего труда вы можете оценить, перейдя по этой ссылке: https://nooby-games.ru/untouchable-max .

P.S. Еще оказалось, что WebGL Unity плеер не показывает никакого индикатора загрузки и имеет фиксированную ширину, что нам очень не нравится. Так что, по-хорошему, в нормальном развертывании Unity проекта на веб нам еще разбираться и разбираться, но уже не хочется, чтобы этот проект был бесконечным.

Выводы

Резюмируем наши ошибки и пообещаем больше их не допускать 😀 :

  1. Отсутствие художника. Не стоит начинать проект, если у вас не запланированы исполнители под какие-либо задачи. Поиск исполнителей впопыхах снижает качество конечного продукта и затягивает сроки реализации.
  2. Бесполезный комментатор. В играх с очень динамичным геймплеем не стоит выводить на экран много текста. Чем его меньше и чем больше шрифт (без фанатизма), тем лучше.
  3. Постоянные срывы сроков. Не хорошо ставить сроки задач, если вы не знаете сколько приблизительно потребуется времени на их выполнение. А еще хуже, надеяться на четкое следование графику в данных условиях. Рассчитать время работ с точностью 100% невозможно! Но можно с высокой точностью спрогнозировать, если рабочая группа знакома с большинством подводных камней.

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

Похожие записи

Notice: compact(): Undefined variable: limits in /home/a/an147/nooby-games.ru/public_html/wp-includes/class-wp-comment-query.php on line 853 Notice: compact(): Undefined variable: groupby in /home/a/an147/nooby-games.ru/public_html/wp-includes/class-wp-comment-query.php on line 853

Оставить комментарий

Отправляя данную форму Вы соглашаетесь с нашей Политикой Конфиденциальности.