Создание инди-хоррора: опыт авторов Uventa

Советы начинающим разработчикам.

В закладки
Аудио

Uventa — хоррор от российской инди-команды Black Rat. В нём простой сторож попадает заброшенную советскую школу, в которой происходит какая-то чертовщина. По словам авторов, история основана на реальных событиях.

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

Всем привет! Мы команда Black Rat, наша первая игра Uventa буквально только что вышла в Steam. Среди инди-разработчиков много профессионалов, которые просто решили создать что-то своё. Но это не наш случай. В игровой индустрии из нас никто и никогда не работал. Мы подумали, что вам будет интересно узнать взгляд на геймдев с точки зрения совсем зелёных новичков. Возможно, наши ошибки помогут другим таким же энтузиастам избежать многих подводных камней.

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

  • Главной целью мы поставили именно сделать полноценную игру, а не просто демо, так как хотели пройти все этапы производства — от идеи до релиза.
  • Бюджета у нас не было, поэтому мы решили немного умерить амбиции и сделать игру относительно короткой.
  • Установили ограниченные сроки, так как хотели закончить проект меньше, чем за год. Судя по опыту других команд, если тянуть, то проект может превратиться в долгострой, а команда просто разбежится раньше.
  • Несмотря на ограничения, мы хотели сделать атмосферную игру с закрученным сюжетом и реалистичной графикой, которая выглядела бы достойно в сравнении с «большими» тайтлами. С этой целью выбрали движок UE4.

Сценарий

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

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

Создание уровней

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

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

Работа с 3D-ассетами

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

И, хотя у нас и было свыше двух тысяч фото, порой этого было недостаточно, чтобы суметь сделать полноценную модель предмета или окружения. Поэтому мы специально выезжали на заброшенные участки и в заброшенные здания, чтобы можно было всё сфотографировать и посмотреть, как это выглядит в живую. Отдельный плюс таких выездов в том, что ты ещё можешь взять рулетку и измерить модель по всем координатам и не терять время на угадывания размеров тех или иных деталей. Со временем, конечно, опыт работы с пропорциями приходит, но нам, как новичкам, было тяжело всё определять на глаз. Для создания моделей мы использовали 3ds Max, ZBrush, Substance Painter.

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

Интерфейс

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

Анимация

Тут мы столкнулись с проблемой. У аниматора не было возможно проверить свою работу сразу в движке Unreal Engine. Это приводило к тому, что анимация выглядела в игре иначе, либо неправильно взаимодействовала с окружением. Мы использовали Blender, но для UE мы бы порекомендовали Maya.

Например, нам нужно было, чтобы персонаж оставался на том месте, где заканчивается анимация, параллельно крутясь на 180 градусов. Обычная анимация даёт просто визуализацию того, как персонаж двигается, но капсула твоего персонажа останется на месте. Решением было использование Root Motion. Оно позволяло двигать капсулу вместе с анимацией.

Свет

Пожалуй, это была самая проблемная часть. У нас сменилось пять разных специалистов, а идеала достичь всё равно не получалось. Изначально мы хотели сделать свет динамичным, чтобы в процессе игры ночь сменялась на день, но для новичков это оказалось слишком сложно. Тогда мы остановились на полной темноте, где увидеть окружение можно только с помощью фонарика. Но даже для хоррора это оказалось перебором, игроки не могли совсем ничего разглядеть, а в некоторые сцены, где требовались действия на скорость, стало вообще невозможно попасть. Мы добавили искусственный свет и оставили фонарик. Финальный вариант получился намного лучше того, что было раньше, но всё равно отличался от изначальной задумки.

Основной совет здесь в том, чтобы не откладывать работу со светом на последний момент. Добавьте к этому, что у нас не было концептов помещений (что облегчило бы задачу) и то, что тестирование требовало немало времени. Если у вас слабый ПК, то «запекание» света для всего проекта может занимать от нескольких часов до целого дня.

Оптимизация

Сейчас геймеры часто критикуют, если на средних настройках игра не выдаёт 60 FPS. Это огромная проблема для инди-разработчиков. Обязательно следите за количеством полигонов, которые присутствуют на карте одновременно и разделяйте вашу карту на Level Streaming (мы не сразу стали этим стали заниматься и потеряли немало времени). Чем больше индивидуальных материалов — тем больше нагрузка. Тоже самое касается и ваших карт света, чем меньше — тем лучше.

Мы постоянно искали какие-то сбалансированные решения — использовали текстуры с меньшим разрешением, смотрели, не вредит ли это внешнему виду нашего объекта. Словом, старайтесь поддерживать баланс между красотой и оптимизацией.

Отдельно стоит упомянуть Level Streaming. В процессе его использования у нас постоянно возникал вопрос: как делить карту и какие дополнительные уровни нужны для комфортной работы в проекте. К сожалению, мы не смогли воспользоваться всеми его возможностями в Uventa, но зато неплохо его освоили. С помощью Level Streaming вы делите свой уровень на куски, причём некоторые из них могут содержать только код или только звуки, что очень полезно.

К примеру, вы хотите в какой-то момент выключить всю бэкграундовую музыку. Если она на другом левеле, то всё, что вам нужно — это выгрузить левел и загрузить его опять, когда это необходимо. Или вы хотите походить по карте, не затрагивая какие-то триггеры или эвенты, то просто распихиваете логику по отдельным картам. Бывает ведь такое, что одна и та же комната проходится два раза за игру. А что делать, если там триггеры, которые используются в разные моменты времени? Их вы тоже можете поделить по стадиям прохождения игры на разные уровни.

Итого

Не будем вдаваться в детали, хотя их ещё было немало, например, о том, как некоторые механики нам пришлось писать сразу кодом (на C++) вместо использования блюпринтов, потому что они просто не справлялись с нагрузкой и крашились.

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

#опыт

{ "author_name": "Алексей Сигабатулин", "author_type": "editor", "tags": ["\u043e\u043f\u044b\u0442"], "comments": 27, "likes": 28, "favorites": 25, "is_advertisement": false, "subsite_label": "indie", "id": 25631, "is_wide": true }
{ "id": 25631, "author_id": 3240, "diff_limit": 1000, "urls": {"diff":"\/comments\/25631\/get","add":"\/comments\/25631\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/25631"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64960 }

27 комментариев 27 комм.

Популярные

По порядку

Написать комментарий...
10

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

Ответить
2

Ага, платные ассеты старых механических весов или советских плакатов. Их специально индусы рисовали и выкладывали в магазин, ведь очень востребованный товар!
Нет, ну серьезно, я вот не вижу платных ассетов. Как научиться видеть ассеты, научи, Мио-сэмпай.

Ответить
2

Специально для тебя от индусов.

Ответить
4

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

Ответить
1

А что общего то? Названия? Тебя не смущает, что все модели разные по форме и по текстуре? Если бы все могли так качать модели с маркета и лепить под себя их потом, то разработка игр может быть и реально проще была бы.

Ответить
1

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

Ответить
–1

По общему стилю если только. А так никак.

Ответить
2

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

Ответить
0

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

Ответить
2

Отвечу от имени разработчиков. Абсолютно большая часть моделей сделана нами, какие то ассеты конечно покупали, но это меньше 10% от общего количества.
На фото можете сравнить наш ассет и из того пака, что вы представили. Если считаете, что это одно и тоже или "слегка" переделанное, то мне тут нечего добавить :).

Ответить
0

У вас в игре есть возможность поскакать на этом "козле" или оседлать его? Нету. Козел - просто предмет, на который игрок секунду посмотрит и забудет. Зачем тогда было трудиться и моделлить "козла"? Похоже, только для того, чтобы Максим (или кто-то другой) не обвинил игру в использовании платных ассетов. А он все равно взял и обвинил, в темноте показалось.
Зачем тогда было трудиться над козлом?

Ответить
3

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

Ну а такие Максимы все равно найдутся и будут критиковать игру, если не за ассеты (которые якобы куплены), так за что-нибудь другое.

Ответить
0

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

Ответить
2

Погоди, но твой "пруф" только что опровергли разработчики...

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

Ответить
0

Как тебе угодно.

Ответить

Комментарий удален

19

Какое же токсичное комьюнити... Ловите-ка вы минус. Разработчики решили написать мини пост-мортем, а тут как всегда кто-то желчью брызжет. Фу таким быть

Ответить
0

На dtf уже есть один любитель писать пост мортемы для своих "игр для взрослых" каждый месяц.

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

Ответить
8

Я только ради пост мортемов и захожу на dtf. А что еще читать?
Как звезду Голливуда обвинили в сексуальных домогательствах и случился скандал? Сколько стоит новая видеокарта от нвидиа? Не интересно же.

Ответить
1

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

Ответить
0

оу ее токсик камьюнити ее
как я ждал этого

Ответить
6

Понятно что большинство тем в этом разделе создавались с целью пропиарить свой проект.

Думаю редакция DTF прекрасно это понимает и не запрещает в рамках "поддержки отечественного инди", за что ей и спасибо.

То что постят в других группах (кино, игры и т д) мне например не нравится, но я не высказываю своё фи, а просто отписался от этих групп.

Ответить
7

Спасибо за статью!

Ответить
8

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

Ответить
0

Ну у них нет каких ошибок пару тыщ баксов они заработают, не знаю мало это для них или норм.

Ответить
1

Ребят, как с вами связаться?

Ответить
0

А это правда, что теперь вы, или кто-то из вашей команды, работает над "Выживалкой в концлагере Освенцим"?

P.S.:
И да, не в полигонах дело в большинстве случаях, а в материалах.

Ответить
0

Если конечно, идет речь не о трех-четырех лимонов на кадр. Материалы самые главные засранцы в оптимизации.

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
Игру с лучшим стелсом никто не заметил
Подписаться на push-уведомления