Вам когда-нибудь снились кошмары? Нам, трём студенткам ФИИТ, — да. Именно они привели нас к идее проекта в рамках проектного обучения в университете. Так мы два семестра работали над игрой DreamWard — 2D-платформером на движке Unity. В центре ее сюжета — черный кот, который помогает ребенку (своему хозяину) побороть ночные кошмары, оказавшись внутри его снов.
Игра состоит из девяти уровней. Каждый уровень — отдельный сон, имеет свою механику, связанную с борьбой с каким-то страхом, фобией. Условия победы и способности кота также зависят от уровня.
Если вам уже захотелось поиграть в DreamWard — вы можете прямо сейчас скачать игру на itch.io.
А если вам интересно, как мы создавали DreamWard, — читайте статью.
Почему вообще игра?
У нас был выбор из проектов по разным направлениям, но мы остановились именно на разработке игры. Мы уже пробовали делать игры на первом и втором курсах в рамках других предметов (Основы программирования, Веб-разработка). Тогда нам понравился и результат, и сам процесс. Хотелось узнать, как делать игры «по науке», а заказчиками и кураторами этого проекта были как раз сотрудники Targem Games.
Плюс у нас уже был опыт работы с Unity: игру «ХешКот» — платформер про кота, который учится на матмехе — мы делали на первом курсе как раз на этом движке. Билд игры можно найти на портале Ulearn, в играх первокурсников 2019 года. Её оценили и эксперты, и преподаватели (один даже сказал, что купил бы игру в стиме).
Как родилась идея
В начале семестра весь курс собрался на «Стартовом марафоне» – мероприятии, на котором мы знакомились с кураторами и заказчиками, погружались в предметную область, мозгоштурмили идеи реализации и планировали дальнейшую работу в семестре. Именно там и родилась идея игры DreamWard.
Ребята из Targem Games посоветовали нам вспомнить игры, которые нам нравятся, и поискать среди них референсы. Нам хотелось чего-то атмосферного, мистического и, конечно, про котов. Мы нашли около 10 возможных игр для вдохновения. Три из них – Hollow Knight, Braid и Limbo – особенно нам понравились и стали референсами для многих наших идей и деталей DreamWard.
Как мы работали (и как должны были)
Работа над проектами у всего ФИИТ должна была быть распределена по двухнедельным спринтам. То есть раз в две недели мы оценивали свой текущий прогресс, планировали и распределяли между собой задачи на следующие две недели.
Мы честно пытались работать по спринтам, но не всегда точно рассчитывали силы. Поэтому порой задачи «перетекали» из одного спринта в другой. Ну и, конечно, самая продуктивная часть работы была в промежуток между последним спринтом и защитой проекта.
В организации работы нам помогал геймдизайн-документ (его ещё называют диздок), который мы начали вести, как только приступили к работе над проектом. Это такой документ, в котором детально описывается разрабатываемая игра: концепция, сюжет, игровые механики и объекты на разных уровнях и т.д. По сути, это документация на игру. Диздок помогал нам не распыляться, фиксировать идеи и договоренности и всегда четко представлять, что именно мы делаем.
От десяти разных механик к двум
Работу над механиками игры мы начали с основного: сделали бег, прыжок, двойной прыжок, следование камеры за игроком в пределах уровня. Вместе с этим стали думать над ключевыми механиками уровней.
На первом мозгоштурме игры мы набросали больше десятка возможных фобий и завязанных на них игровых механик. Были и головоломки с преломлением света, связанные со страхом темноты, и идеи про боязнь большой толпы людей, и даже механики с изменением гравитации. Конечно, этот список пришлось сильно сократить. Что-то не ложилось в концепцию таинственной атмосферы сна, что-то было слишком сложным в реализации. Например, так получилось с уровнем про пауков.
Мы решили, что наш общий страх — это пауки, и что нам нужен уровень с головоломкой для борьбы с ними. Начали придумывать, какими должны быть пауки и их паутина, как игрок может с ними взаимодействовать. Но по окончании первого спринта поняли, что потратили две недели на то, что совсем не получается реализовать. Куратор посоветовал нам отложить нашу идею и воплотить в жизнь что-то попроще, чтобы не потратить целый семестр на единственный уровень вместо полноценной игры.
Так первой идеей, которую мы реализовали, стал уровень о страхе воды, боязни утонуть. Суть проста: котик должен забраться по платформам на самый верх уровня. Но некоторые платформы ненадежны и падают при касании, а снизу постоянно поднимается вода, которая вот-вот настигнет кота, если он не успеет перекрыть вентиль наверху.
Сначала всё было просто: платформы и вода, поднимающаяся снизу, — прямоугольные блоки, главное меню — тоже прямоугольные кнопки и ничего лишнего. Затем добавилась графика, анимации, звуки, меню победы и поражения.
Следующая механика (и уровень) посвящена страху темноты. Кот оказывается в темном лабиринте, не видя практически ничего вокруг себя. Ему нужно собрать и принести всех светлячков на уровне в волшебную лампу, чтобы наконец стало светло. На уровне разные части лабиринта имеют свои отличительные черты, чтобы игроку было проще ориентироваться, был здесь кот или еще нет. Светляки тоже двигаются и перемещаются около заданной позиции.
Продолжаем развивать игру
«Я бы выделил основную конкурентную составляющую — это атмосферность и погружение», – Денис Ершов, инди-разработчик, об игре DreamWard.
На защите в первом семестре эксперты и жюри дали нам классные отзывы и подкинули идеи на будущее. Мы послушали их и решили продолжать развивать игру в следующем семестре. Теперь перед нами встала задача доработки прототипа до готовой к публикации версии.
Нужно было обновить дизайн-меню, добавить больше уровней, а вместе с ними — отдельное меню-карту для перехода к разным уровням. Кроме того, стоило позаботиться о реиграбельности и сделать хотя бы оценку пройденных уровней, чтобы игрок мог улучшать свой результат. И всё это —оформить так, чтобы вписывалось в атмосферу игры. Ведь она с самого начала была одной из самых важных составляющих.
Поначалу казалось, что добавление карты уровней пойдёт против атмосферы и будет совсем не к месту, но решение нашлось — дневник сновидений. Меню оформили в виде книги, где перед каждой ночью появляются новые рисунки о событиях, которые беспокоили ребенка, и каждую ночь именно эти волнения превращаются в кошмар. Так игрок может без текстовых подсказок догадаться, о чем будет следующий уровень. А после прохождения он увидит впечатления от сна, зарисованные на соседней страничке. Чем лучше результат игрока, тем спокойнее сон ребёнка.
Ещё с первого семестра появилась идея разделять внешний вид происходящего в реальности и во снах — стилистика вводной кат-сцены отличается от стилистики уровней. Эта идея продолжилась и в оформлении меню. На уровнях-снах все элементы — однотонные, за исключением только светящихся глаз, но силуэты разноцветные. Изображения реальности же монохромные, состоят из сочетаний света и теней, как будто это тёмная комната, в которой только на отдельные черты предметов падает свет из окна.
Из готовых двух уровней нам нужно было сделать в несколько раз больше. Мы вернулись к самой первой придуманной механике — паукам и паутине — и стали думать, как её переделать, чтобы она стала выполнимой за не такой уж большой срок (к тому же, нам нужно было сделать несколько уровней с каждой механикой). Мы оставили пауков и то, что их надо сбросить, но вместо сложных многоугольников посадили их на ниточки-паутинки, крепящиеся к листьям. Когда кот встаёт на такой лист, он отламывается, падая вместе с пауком. Зато добавили дополнительную опасность — огромные паучьи лапы, надвигающиеся слева.
Когда все три основные механики были готовы, мы сделали по три уровня для каждой из них, используя уже готовые спрайты первых уровней. Часть этих новых уровней проще — меньше тупиков, проще прыжки, меньше светляков нужно привести к лампе и меньше пауков скинуть с листьев. Но часть уровней, наоборот, стала сложнее и встала в конец дневника сновидений. Например, в пещере поселились пауки, а лес стал настоящим лабиринтом, в котором не так-то просто успеть обойти все листья.
Проблемы и проблемища
Решения о том, как превратить механики и функционал во что-то сказочное приходилось искать постоянно. Интересно было придумывать, как оформить победу над страхом. Это должно было быть действие, которое уберёт источник — ведь мы спасаем чужой сон.
Это должно было быть что-то простое, что легко понять из образов и без слов. Что-то не обязательно реалистичное, ведь мы играем во снах, но понятное. Если это поднимающаяся вода с готовыми проглотить волнами, надо найти кран и выключить его. В тёмной пещере, где не разглядеть, что таится в двух шагах — собрать светлячков в лампу, чтобы вместе они осветили всё вокруг. В полном пауков лесу — сбросить их с листьев.
Для атмосферы важны визуальный и звуковой дизайн. С самого начала в планах были различные визуальные эффекты:подсветка главного героя и затенение экрана по краям, размытие фона и параллакс для создания эффекта глубины. И если с параллаксом оказалось несложно, то с размытием Юнити подвел. Оказалось, многие фильтры, эффекты постобработки не работают в 2D-проектах, а некоторые решения не работали для фона, ломая внешний вид объектов переднего плана. В итоге эффектом размытия тоже пришлось пожертвовать — искать решение было долго, а горящих задач хватало.
Ещё было сложно придумать, как оценивать уровни с разными механиками (всего в игре три типа уровней). В итоге решили остановиться на времени, как на самом понятном критерии.
Проектирование уровней — ещё одна сложность. Тут мы прибегали к поиску референсов из других игр-платформеров и лабиринтов, рисовали на бумажках и обсуждали коллективным разумом
Мы старались делать минимум текстовых объяснений, чтобы игрок как можно больше понимал из других подсказок. Но иногда придумать достаточно очевидную и выполнимую замену словам не получалось и приходилось идти на компромисс. Например, таймер на уровнях с темнотой и счётчик оставшихся пауков остались видимыми текстовыми элементами.
Тестирование
Когда новая версия DreamWard была готова, мы решили протестировать её «в поле» – скинули игру нашим друзьям и знакомым и попросили дать обратную связь. Это оказалось очень полезным по ряду причин.
Во-первых, наши тестировщики помогли нам отловить не замеченные нами баги. Во-вторых, мы оценили проходимость игры в целом, сложность отдельных уровней и мест на карте. Для оценки результата мы решили подсчитывать время прохождения, а для этого надо было определить, какое время считать на три звезды, а какое только на одну — для этого тоже пригодилось тестирование. Правда, на защитах нам всё равно сказали, что первый уровень получился слишком сложным.
А ещё мы получили приятную обратную связь о продуманности и атмосферности игры, которая очень вдохновила нас перед защитой проектов.
Что сейчас и что дальше
После успешной защиты проекта в конце третьего курса мы горели идеей продолжить работу над DreamWard. В игре ещё много чего можно развить. И, конечно, было бы здорово сделать полноценную мобильную версию и разместить её в популярных сторах.
Но из-за работы и учебы у нас так и не дошли руки до развития игры и проект остался «пылиться на полке». Надеемся, что это не навсегда и когда-нибудь вы увидите продолжение приключений отважного черного кота :)