Ludum Dare 42 или как мы за 3 дня сделали «3D-тетрис»
Первоначально в этом тексте было немного о том, что такое Ludum Dare и с чем его едят, но потом я увидел этот пост и понял, что интересующимся лучше прочитать его - там всё написано настолько хорошо, что лучше у меня не получится.
Но если вкратце, LD - это конкурс, в котором за 3 дня (или 2, если ты делаешь всё в одиночку) нужно сделать игру на заданную тему, притом все компоненты - код, графика, идея должны быть придуманы в этот период времени. В этот раз темой стала фраза "Running out of space".
Формирование идеи
Если честно, несмотря на все крики про "неинтересную тему", она мне понравилась сразу: во-первых, несколько возможных ее трактовок - игра будет про космос, и оттуда надо убегать? Или может быть, там надо будет часто нажимать на пробел (чтобы убегать из космоса)? Может быть, вообще, интерпретировать ее буквально, как нехватку места? Во-вторых, тема не накладывала никаких жестких ограничений на геймплей, как бывало, например, прежде.
В итоге, перебрав несколько неплохих идей, мы решили остановитсься на идее "компоновщика" мебели. Нам сразу понравился и концепт, и юмор, который можно вставить в игру (одной из идей был помощник, который восторженно комментирует каждое действие: "Вау, аквариум вверх ногами, что за прекрасное решение!"). Но самыми главными причинами были понятный геймплей, который реально сделать за 3 дня и который не будет обрастать новыми механиками в процессе, и возможность сделать так, чтобы большая часть графики и моделей непосредственно участвовали в геймплее, что визуально разнообразило бы игру.
Геймплей
Для того, чтобы сделать игру реиграбельной, но в то же время иметь возможность сделать всё быстро, мы придумали добавить к каждому уровню определенные условия - этакие "звезды"из мобильных игр. Таким образом, каждый игрок мог пройти игру на одну звезду достаточно легко (немного наперед: оказалось, что и это достаточно сложно), но чтобы получить все три звезды ему пришлось бы попотеть. В итоге, мы придумал три условия для каждого уровня: первая звезда - поставить необходимый минимум предметов, вторая звезда - поставить ВСЕ предметы , третья звезда - выполнить условия "соседства" (например, полка рядом с телевизором).
В итоге, было составлено 10 уровней, два из которых обучающие. Можно было бы, составить, конечно, больше, но большая часть времени ушла на перенос уровней в редактор (это всё еще не так сложно, как их придумать: забалансить всё это дело - та еще задача).
Программирование
Основные функции, которые должны быть доступны игроку, мы ограничили несколькими действиями: ставить предметы, вращать их вдоль двух осей и регулировать высоту. Со стороны внутриигровой механики оставалось "всего лишь" сделать воксельный мини-движок, который бы позволял настраивать размеры каждый модели, рассчитывал бы коллизии и позволял определять соседние клетки (это оказалось нужным для определения условий для второй звезды). В качестве среды разработки мы решили использовать Unity.
Также, непростой задачей стало создание удобной схемы управления. Мы смогли прийти к более-менее удобному варианту, но он всё еще вызывает некоторые неудобства.
Графика
Прежде чем приступать к созданию моделей, мы должны были решить какой они будут формы и в каком стиле. Со стилем проблем не возникло, мы сразу решили, что попытаемся сделать что-то в духе "Quantum Conundrum приехал в Икею". Исходя из этого создавался так же UI и общее оформление.
Что касается формы объектов, то мы решили использовать бесплатную программу MagicVoxel. Она позволяет достаточно быстро и просто набросать основные формы и помогает понять дизайнеру, как вписать в эту форму модель.
В итоге в Blender было создано 36 моделей мебели (а ведь есть еще стены/двери/окна/полы, которые не участвуют в геймплее).
Музыка
Музыкальное сопровождене игры было записано с помощью живых инструментов. Забавно, что из-за отсутствия студии и нормально звукоизоляции, пришлось накрывать композитора и инструмент тяжелым халатом и полотенцами. Было создано несколько вариантов музыкального сопровождения, в итоге мы остановились на двух - для главного меню и основного процесса игры. Звуки же были взяты с бесплатных библиотек.
Прием игры
Огромный плюс LD в том, что твою игру посмотрит достаточно большое количество людей, которые при этом сами являются разрабочиками. Очень часто из их комментариев к игре можно получить полезные подсказки, которые сделают игру интереснее (у нас всего после 4 дней уже составлен большой документ с улучшениями, которые мы собираемся добавить в пост-ЛД версию). Также, многие стримеры проводят LD-week, где играют в игры с этого конкурса и дают комментарий по поводу нее - иногда очень полезно посмотреть, как другой человек проходит твою игру и послушать его мысли по этому поводу в "прямом эфире" (особенно крики в духе КУДА ПОСТАВИТЬ ЭТОТ ФОНТАН?!).
Радует, что большинству, похоже, наша игра кажется интересной.
Так а поиграть-то можно?
Да поиграть можно, зайдя на профиль нашей игры на LD. Там можно прочитать "коммерческое" описание, а в самом низу будут ссылка на веб-версию и ссылка для скачивания. На данный момент, лучше всё-таки скачать игру, потому что некоторые шейдеры, по какой-то неясной для нас причине, ведут себя странно в браузере. Советую читать описания к каждому уровню, там часто можно встретить подсказки.
Управление:
Левая кнопка мыши: поставить объект
A и D: повернуть комнату
Правая кнопка мыши или R: повернуть объект по оси X
Средняя кнопка мыши или F: повернуть объект по оси Y
Колесико: регулировать высоту объекта
К сожалению, голосовать за проект могут только учасники Ludum Dare, но мы были бы очень благодарны за обратную связь - что понравилось / что нет / куда можно развиваться.
Авторы или минутка самолюбования
Программист: Шишов Борис Vk Github
3D художник: Шишов Глеб VK VK(группа) Twitсh Artstation
Музыка: Шишова Екатерина VK
Гейм-дизайн (и эта статья): Фролов Артемий VK Github