Песочница проектов. Nyctophilia — 2D психологический триллер

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

Трейлер:

Точное решение относительно того, какой должна быть игра, пришло незадолго до начала непосредственной разработки. Языком программирования стал Java. Это было логично, ведь до этого я разработал две игры на Android с помощью этого языка. Чтобы упростить процесс, был использован фреймворк libgdx. Он позволил избежать ненужной возни с низкоуровневыми вещами.

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

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

Геймплей:

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

Саундтрек:

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

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

В то время как основа для игры написана на Java, скрипты для уровней писались с помощью JavaScript. Редактор уровней встроен в игру, поэтому их можно легко редактировать и тестировать, не переключаясь между разными приложениями. Чтобы загрузить уровень, достаточно передать его название игре. Все ресурсы, скрипты и прочее будут загружены автоматически. Каждый объект на уровне может иметь собственный скрипт, срабатывающий при определенном событии. Скрипты запускаются в отдельном потоке, чтобы во время каких-нибудь сюжетных сцен сама игра не останавливалась. Это позволяет достаточно подробно прорабатывать взаимодействие с окружающим миром, но занимает время.

Также в игре присутствует простая система освещения. Она используется в темных локациях для создания атмосферы. В сочетании с эффектом «старого монитора» может получиться интересная картинка.

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

В планах исправить все оставшиеся небольшие доработки и выпустить игру в Steam. Она будет полностью бесплатной. Я уже прошел сервис Steam Greenlight и готовлюсь к релизу. Опыт показал, что основная часть трафика генерируется самим Steam в первые 2–3 дня. Дальше посещаемость автоматически падает до примерно 50 человек в день, поэтому судьба проекта решается в первые дни, если не привлекать стороннюю поддержку.

Проект в Steam Greenlight