Игра "Дверь" (The Door)

Общая информация

Игра в жанре текстовый квест (Choose Your Own Adventure) с интерактивными 3D паззлами, разработанная на конкурс "Зимняя Олимпиада Квестов 2021". Разрабатывал я её в одиночку, на движке Godot.

Скачать и поиграть можно по ссылке. Имеются сборки для следующих платформ: Windows 32/64, Linux 32/64, или версия с пониженной графикой под Windows 32-Bit.

История разработки

Делать игру я начал 3 января 2021 года, а завершил работу 7 февраля, за суммарное время в 33 дня. Это был мой первый опыт в жанре Interactive Fiction, хотя GameDev'ом занимаюсь далеко не первый год. Игра получилась короткой, но тому есть ряд причин, о которых я хочу рассказать более подробно.

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


Итоговый вариант редактора.

Разработка этого инструмента была "закончена" седьмого февраля, т. е. она продолжалась на протяжении всей работы над игрой. Время от времени я переключался на другие задачи – моделировал куб и коридор в 3D, рисовал текстуры и иконки, сочинял сюжет, создавал персонажей, делал черновые наброски текста в блокноте, и конечно же программировал сами паззлы и текстовый интерфейс будущей игры.


Небольшая видео-демонстрация.

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


Так выглядит этот куб.

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


Монстро пати.

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


На полпути от дома.

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

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

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


Я уже хотел сливаться с конкурса, ибо не понимал в чем причина, и сильно устал за все это время, но данное в начале слово о том что я сделаю игру на собственном редакторе графов, подстегивало и не давало мне покоя. 

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

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

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

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

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

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

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

P. S.

Возможно что я еще вернусь к этой игре, и доделаю её в соответствии с изначальной идеей, и в задуманном объеме. На этом все. Пока!

Комментарии

Популярные сообщения из этого блога

Судьба Редактора Графов

Сказка доктора или как в средние века боролись с корона вирусом