Ludum Dare 42 или как мы за 3 дня сделали «3D-тетрис»

TL; DR: Мы сделали игру для конкурса Ludum Dare. Основной идеей было добавить к тетрамино ограничение по времени и 3D перспективу. С тем как мы справились, можно посмотреть здесь (а еще поиграть в веб- и полную версию). За подробностями - добро пожаловать в статью!

Небольшой кусочек геймплея для затравки

Первоначально в этом тексте было немного о том, что такое Ludum Dare и с чем его едят, но потом я увидел этот пост и понял, что интересующимся лучше прочитать его - там всё написано настолько хорошо, что лучше у меня не получится.

Но если вкратце, LD - это конкурс, в котором за 3 дня (или 2, если ты делаешь всё в одиночку) нужно сделать игру на заданную тему, притом все компоненты - код, графика, идея должны быть придуманы в этот период времени. В этот раз темой стала фраза "Running out of space".

Формирование идеи

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

Ludum Dare 42 или как мы за 3 дня сделали «3D-тетрис»

В итоге, перебрав несколько неплохих идей, мы решили остановитсься на идее "компоновщика" мебели. Нам сразу понравился и концепт, и юмор, который можно вставить в игру (одной из идей был помощник, который восторженно комментирует каждое действие: "Вау, аквариум вверх ногами, что за прекрасное решение!"). Но самыми главными причинами были понятный геймплей, который реально сделать за 3 дня и который не будет обрастать новыми механиками в процессе, и возможность сделать так, чтобы большая часть графики и моделей непосредственно участвовали в геймплее, что визуально разнообразило бы игру.

Геймплей

Для того, чтобы сделать игру реиграбельной, но в то же время иметь возможность сделать всё быстро, мы придумали добавить к каждому уровню определенные условия - этакие "звезды"из мобильных игр. Таким образом, каждый игрок мог пройти игру на одну звезду достаточно легко (немного наперед: оказалось, что и это достаточно сложно), но чтобы получить все три звезды ему пришлось бы попотеть. В итоге, мы придумал три условия для каждого уровня: первая звезда - поставить необходимый минимум предметов, вторая звезда - поставить ВСЕ предметы , третья звезда - выполнить условия "соседства" (например, полка рядом с телевизором).

Даже я, как гейм-дизайнер игры, не всегда могу поставить всё на 3 звезды. Таки хардкор.
Даже я, как гейм-дизайнер игры, не всегда могу поставить всё на 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

Ludum Dare 42 или как мы за 3 дня сделали «3D-тетрис»
6666
17 комментариев

Фролов, подмигни, если тебя шишовская мафия держат взаперти и заставляет геймдезигнить

14
Ответить

;)

12
Ответить

Стоит прочитать как минимум из за списка разработчиков)))

10
Ответить

Прошёл первые 3 уровня на 3 звезды. Дальше не стал. Мой перфекционизм загнулся. Пару советов от обывателя:
1. Уберите ограничение по времени. Музыка медитативная, а вот геймплей очень быстрый. Не успеваешь насладиться.
2. Не хотите убирать? Тогда другой момент. Когда начинается уровень, время уже бежит, а деталь нельзя двигать в течение 2,5-3 секунд. Непорядок!
3. Опять же, не хотите убирать время? В списке есть элементы, которые можно не использовать при прохождении. Можно добавить кнопку для пропуска элемента, которому нет места или не хочешь ставить.
3. Добавьте настройки управления в саму игру. Для удобства.
4. Добавьте визуальное отображение использованных и оставшихся деталей. То есть те белые и желтые иконки, которые в брифинге высвечиваются, пусть в информационном HUD где-нибудь висят. Элемент рандома пусть останется, так даже интереснее.
5. Можно, как вариант, изменить управление. Ставить мебель левой кнопкой удобно, как и вращать комнату на "A" и "D". Опускать-поднимать мебель колёсиком мыши - тоже. А вот вращать элементы мышью - нет. То есть по оси X можно только в одну сторону на правую клавишу, а по оси Y левой клавишей не очень удобно и опять же только в одну сторону. Предлагаю более удобный вариант. Пусть постановка мебели так и останется на левую кнопку. А вот с правой можно сделать так: при удерживании правой кнопки просто двигать мышь влево-вправо для вращения по оси X по часовой или против и при движении мышью вверх-вниз - для вращения по оси Y по часовой или против часовой. Попробуйте. Мне кажется, так будет удобнее и практичнее.
Игра довольна занимательная, но нуждается в доработке. Но идея классная, зачёт!

4
Ответить

Ого, спасибо большое за такой подробный комментарий!
Это правда очень поможет, занес идеи в табличку нашу =)

3
Ответить

круто расписал, но в разработчики берут только с другими фамилиями :D

Ответить

Выглядит хорошо и управляется неплохо, но играть практически невозможно. Из-за неизменного порядка выдачи предметов пазловая составляющая полностью ломается - игрок не знает, что будет дальше и не имеет возможности отменить предыдущее действие
Один уровень "прошёл", а мне написали, что я должен был расставить все жёлтые предметы - видимо, я должен запоминать, номера жёлтых предметов в начале уровня (waaaat)

1
Ответить