Absylon 7 - Дневник разработки. Часть 1: Общие концепции и работа с дизайном
Всем доброго времени суток.
Уже совсем скоро закончится прием работ на IndieCup S'21, в котором мы решил принимать участие, и я решил рассказать о том, как велась и ведется разработка нашего проекта.
Сегодня хотелось бы рассказать об общей концепции игры, а также поделиться аспектами работы над уровнями и геймплеем. Поскольку это наш первый проект для PC (раньше мы занимался в основном мобильными и социальными играми), для нас это весьма интересный опыт, которым я хотел бы поделиться в этой серии статей.
Начнем с идеи
Изначально, нам казалось прикольным и простым начать погружение в мир разработки PC-игр с хоррора, но чем больше мы погружались в работу над проектом, тем больше понимали, что это далеко не самый простой жанр, но от того, работа была только интереснее.
Сначала мы начали с проработки сюжета и базовых механик, а потом пришли к тому, что нужно сильно погрузиться в работу со звуком, освещением и окружением, поскольку оно так же важно (если не важнее), чем базовая концепция игры.
Сюжет игры в двух словах очень прост:
Главный герой - бывший бизнесмен Сергей Валин. Лишившись своего капитала, он решил продать имущество и заняться сельским хозяйством в отдаленных европейских деревушках. Переехав в деревню Абстон, по началу все шло прекрасно, и нашему герою даже удалось сдружиться с местными и наладить небольшой бизнес. Но однажды ночью он просыпается от стука в дверь и дальше все идет совсем не так, как он ожидал.
В его доме твориться какая-то чертовщина. Лампы гаснут, стекла бьются, повсюду какие-то странные звуки. До того, как покинуть свою спальню, герой заметил странное существо, и (решив, что ему привиделось), решил проследовать за ним, а заодно посмотреть, что же все таки происходит. Поднявшись на чердак - он замечает пауко-образное существо, но никак не может до него добраться, поскольку то постоянно куда-то исчезает.
Решив, что стоит все же спросить у соседей, что здесь происходит, а также как часто в таких местах люди видели странные вещи - герой спускается на улицу, но и там происходит абсолютно то же самое. Дойдя до дома одного из соседей, Сергей замечает, что они мертвы, а в соседнем амбаре загорается свет и кто-то блуждает.
Таким образом, герою предстоит изучать деревню, встречаясь со все более странными вещами и осознавая, что он попал в какое-то адское место.
Покинув свой родной дом, попутно убегая и сражаясь с неизвестными существами, герой доходит до входа в церковь, где обнаруживает открытый подвал из которого доносятся крики о помощи. Спустившись в этот подвал он понимает, что попал в странную лабораторию, в которой ученные проводили эксперименты над животными и другими людьми, чтобы разработать вакцину от вируса KDJ-23, но видимо что-то пошло не так.
Герою предстоит разобраться, что же происходило в этой лаборатории и как выбраться из этого места, чтобы уехать от него как можно дальше.
Работа над локациями
Работа над локациями, как и вся работа над игрой ведется на движке Unity. Для более качественного и управляемого рендера мы используем HDRP.
Локации в игре разбиты на карты. В некоторых местах они линейны, а где-то дают больше свободы. Карты в свое время разбиты на Чанки (части), что позволяет выгружать/загружать объекты в памяти.
На примере первой локации видно, что дом главного героя это определенный чанк (часть) локации, которая будет выгружена, когда игрок покинет это место и подгружена обратно, когда он вернется. За подгрузку отвечает специальный триггер (Segment Loader). Также для ускорения работы мы просчитываем Occlusion Culling и создаем для каждого объекта свои LOD.
Так выглядит подгруженный сегмент:
А так, выгруженный из памяти:
При помощи системы с подгрузкой сегментов, LOD и Occlusion Culling, мы можем создавать открытые локации с бесшовной загрузкой для переходов интерьера / экстерьера. Что дает нам больший полет для творчества.
Освещение и динамика
Пожалуй, одна из важных частей в работе над проектом - это работа над его освещением. Для этого, мы прорабатываем где и как будет стоять источник света, будет ли он динамическим или статическим, что может выключить его (возможно, какое-то событие или выключатель на стене, а может и все вместе).
Но помимо этого, нужно и учитывать окружение. Также проводить для него настройки статичности или динамичности, настраивать качество теней и их отбрасываемость, а также десятки других параметров, чтобы добиться более-менее хороших результатов. В этом также отлично помогают Light Probes и Reflection Probes (пробы света и отражений).
Ну и финальное - это запекание LightMap (карт освещения), работа с пост-обработкой и финальными штрихами (подключением скрипта выключателя, к примеру).
Контроллер персонажа
Вообще, контроллер состоит из множества маленьких деталей, которые работают достаточно по-разному и могут зависеть от многих параметров. Но я просто опишу вкратце, что умеет главный герой.
1) Бегать (с затратами энергии), ходить, красться;
2) Подобрав оружие (которое найти очень тяжело), может стрелять;
3) Может поднимать различные физические предметы и перемещать их (к примеру, для решения головоломок);
4) Приближать / отдалять камеру, чтобы искать мелкие предметы (например, ключи в куче мусора);
5) Взаимодействовать с интерактивными предметами (выключатели, двери, кнопки и многое другое);
6) Издавать звуки (шаги, голос), в зависимости от ситуации;
7) Включать / выключать фонарик;
Да, это достаточно простой контроллер, но большего нам и не нужно.
Звуковое сопровождение
Одна из самых тяжелых, но и важных частей в игре - работа над звуком. Чтобы добиться хорошего результата нам пришлось учитывать и разработать несколько систем.
1) Музыка (может микшироваться в зависимости от ситуации на сцене);
2) Звуки физических объектов при столкновении / падении в разных вариациях для каждого объекта;
3) Звуки интерактива (выключатели, ключи, ламы и прочее);
4) Заскриптованные звуки и триггер-зоны (когда звук включается при определенном условии, например для испуга игрока);
5) Звуки шагов по разным поверхностям. Каждая поверхность в игре имеет свой физический материал, от которого подстраивается свой звук хотьбы / бега.
Все это создает более полную картину погружения, и может между собой сочетаться, создавая не предусмотренные ситуации (игрок случайно задел топорик на подоконнике, когда проходил мимо, тот упал, издав звук и испугал игрока).
Триггеры и события
Для прогресса в игре, включения света, заскриптованных сцен, звуков, физических явлений и систем частиц, была создана система триггеров. Каждый из них дает нам невидимый рычажок, может строиться в последовательность или же случаться рандомно, что также повышает некую внезапность для игрока.
Первый геймплейный трейлер
На данный момент у нас имеется демо-версия, которая будет доступна в рамках Indie Cup S'21, а также первый геймплейный трейлер, который я оставлю здесь на обсуждение.
Буду ждать вашего фидбека, пожеланий и предложений. Увидимся в следующей статье!
И конечно, нам будет приятно, если вы будете вступать к нам в сообщество:
Люблю хоррора. Сил вам довести дело до конца.
На сколько я понял причина монстров это неудачный поиск вакцины. Лаборатория в подвалах церкви звучит интересно. Не совсем понятно, почему в доме происходят глюки с вещами. Учёные под церковью работали с сатаной? Или это чисто глюки героя, после вакцинации?
Пока раскрывать все детали не стал, иначе будет не интересно 🤣
Комментарий недоступен
молодцы, пилите дальше. Юнити с HDRP та еще попаболь. Но вы не унывайте.
Ну Unity впринципе может отдавать болью, если не знать некоторых нюансов, но в целом, терпимо)
Выглядит круто, желаю успехов! На мой взгляд делать подъем камеры сразу в начале движения - не самый удачный вариант, потому что когда герой делает маленький шаг и останавливается камера все равно делает подъем, получается если игроку страшно, и он проходит комнату маленькими шажками и шарахается от каждого звука - то камера у него будет трястись знатно
Интересное замечание. Можно попробовать учитывать дистанцию. Спасибо