Инди
LensFlare
490

DTF Indie Jam. Луч-9. Вместо постмортема

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

В закладки

Что получилось

А получился квест типа Myst (по крайней мере, мне так хочется думать), в котором ключевой головоломкой является командная строка типа DOS.

Трейлер под композицию "Чужое место" группы 2-й СОРТ. Получилось на любителя, но как же надоели однообразные трейлеры под заунывный дарк амбиент.

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

  • Улучшена производительность
  • Добавлен пункт Настройки-> Уровень графики. Можно выбрать Низкий (что-то уровня GTX 770), Средний (GTX 970), Высокий (GTX 1070)
  • Добавлено несколько звуковых эффектов
  • Исправлен баг с исчезновением курсора в главном меню после прохождения игры

Скачать игру можно по ссылкам:

или посмотреть прохождение на Youtube :

Прохождение игры

Как шла разработка

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

Далее ход разработки понедельно, где можно отследить, как градус неадекватности растет с каждой неделей.

Первая неделя

Была сделана первая версия консоли и набросок файловой системы. Выглядело это вот так:

Первая версия консоли

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

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

Вторая неделя

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

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

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

Тизер

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

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

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

Визуальное повествование требовало создания интро, катсцен и всей территории склада для свободного исследования. За оставшиеся 2 недели это сделать было нереально, но мы до конца не верили, что вообще что-то сдадим к дедлайну и решили попробовать. Хотя уже сейчас стало понятно, что игра по размеру и наполнению получалась уже совсем не для джема...

Кстати в самом тизере есть маленькие подсказки по теме, которые вряд ли кто-то будет разбирать. Например, морзянка, которую слышно из радио, когда запускается программа, отбивает на латыни:

HIC HOMO EST INANIS

что приблизительно переводится как "ЭТОТ ЧЕЛОВЕК ПУСТ". А планета-глаз, которая появляется на экране, это отсылка к Ницше.

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

Фри́дрих Ви́льгельм Ни́цше
немецкий философ

Третья неделя

Всю третью неделю делалось интро. Параллельно допиливалась функциональность консоли, но основные силы ушли на интро. О каком-то адекватном распределении времени речи уже не идет.

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

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

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

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

Четвертая неделя

Работа идет в страшном цейтноте. Последовательность событий восстановить уже сложно, все делается впопыхах.

Так за день появляется окружение склада, по периметру которого высаживаются деревья, прикрывающие край мира, которые при неправильно выставленном LOD выжирают весь GPU.

Вот они, пожиратели fps

На следующей день появляется сам склад и настраивается динамическое освещение, а для создания драматического эффекта принято решение постепенно менять время суток. Выглядит, конечно, красиво, но вкупе с Volumetric lighting доедает остатки GPU. Еще и Precomputed GI (дрянь та ещё) в Unity постоянно грузит CPU, вызывая продергивания при смене времени суток.

Volumetric lighting

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

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

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

Ошибка с Reflection probe вызывает аномальное свечение отражающих поверхностей

Шестой день. С утра пофиксили баг с Reflection Probe. Пишем скрипты. К концу дня закончена где-то половина. С концовкой ничего не ясно. Начались проблемы со сном...

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

Что будет дальше

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

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

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

{ "author_name": "LensFlare", "author_type": "self", "tags": ["\u043b\u0443\u04479","\u0438\u043d\u0434\u0438\u0434\u0436\u0435\u043c","\u0438\u043d\u0434\u0438"], "comments": 6, "likes": 24, "favorites": 13, "is_advertisement": false, "subsite_label": "indie", "id": 60677, "is_wide": false, "is_ugc": true, "date": "Fri, 26 Jul 2019 21:56:11 +0300", "is_special": false }
Объявление на DTF
0
6 комментариев
Популярные
По порядку
Написать комментарий...
4

Думал что это история про Beware :(

Ответить
1

Комментарий удален по просьбе пользователя

Ответить
0

Комментарий удален по просьбе пользователя

Ответить
0

Жаль, что "завис" проект. Следил за вами.
Хочется верить, что это начало пути в большой геймдев :)

Ответить
0

Вы ребят, для меня победители всё-равно, идея очень классная. Жаль конечно, что мой старый комп выдал 5fps от той демки, пришлось выключить, но сама задумка замечательная. Мне бы хватило вообще комнаты и рыться в файловой системе. Так что не бросайте, доведите до ума, но не переусердствуйте. Очень рад, что уже для трейлера поставили шрифт хороший в название.

Ответить
0

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

Ответить
{ "jsPath": "/static/build/dtf.ru/specials/DeliveryCheats/js/all.min.js?v=05.02.2020", "cssPath": "/static/build/dtf.ru/specials/DeliveryCheats/styles/all.min.css?v=05.02.2020", "fontsPath": "https://fonts.googleapis.com/css?family=Roboto+Mono:400,700,700i&subset=cyrillic" }