Сегодня познакомим вас с презентацией проекта, которую мы показываем потенциальным членам нашей команды. Она не только дает представление о студии, но и передает общее настроение игры.
Сегодня мы показываем вам одного из самых жестоких и хитрых персонажей, которых вы встретите на просторах Пустоши. Знакомьтесь, глава кетчеров.
Ваш герой точно не захочет связываться с этим человеком, но Пустошь редко предоставляет такую роскошь, как право выбирать себе знакомых. Так что будьте уверены — с ним вы, скорее всего, встретитесь либо в час нужды, либо не по своей воле.
Всем привет! Сегодня мы показываем вам концепт создания канализации для игры "Технотьма".
Эта канализация — обходной путь, который позволит вашему персонажу избежать встречи с монстрами на поверхности. Его точно захотят изучить игроки, предпочитающие скрытный стиль прохождения.
Но не надо думать, что этот путь безопасен. Кто знает, какие сюрпризы спрятались среди этих склизких стен.
В процессе разработки игры мы часто сталкиваемся с проблемами, о которых на старте разработки не могли даже предположить. Забавно, что про многие специфичные вещи и подходы почти нигде не упоминают, а исправление ошибок часто требует уйму времени, которого всегда не хватает. Хочется хотя бы в качестве разнообразия (надеемся не только него) поделиться с вами какими-то моментами, встретившимися нам на пути. Собственно именно о них и будет данная серия постов.
И начнем мы с "лица" любой игры - графики. В этом посте мы бы хотели рассказать, почему нам пришлось перерабатывать все спрайт-листы и наглядно показать, как это изменило восприятие игровых локаций. В прошлом году начался активный этап проработки сцен, как раз в процессе которого мы и поняли, что в визуальной части сцен все чаще и чаще всплывают специфичные изъяны. Больше всего смущала разрозненность композиций по цвету и яркости, причиной чему стали как сами спрайт-листы, так и организация работы в рамках игрового движка.
Закономерным исходом стала практически полная переработка спрайт-листов, а именно: - Выравнивание спрайтов по тону (причем в силу специфики Unity пришлось делать спрайты гораздо ярче изначального варианта); - Избавление спрайтов от излишней черноты в местах оттенений; - Приведение всех спрайтов к более-менее единому уровню детализации; - Перенос работы с воздушной перспективой из спрайтов на уровень движка (в рамках Unity наконец получилось добиться нужного эффекта); - Правильное соотношение размеров спрайтов относительно персонажа и между друг другом;
В рамках же игрового движка тоже была осуществлена куча положительных изменений, связанных не только с инструментами разработки, но и самим подходом к выстраиванию графики. Упомянем только самые основные моменты, потому что перечислить все нюансы в рамках подобного формата весьма сложно: - Выстраивание иерархии объектов, которая позволила бы учесть специфику Unity в совокупности с большим кол-вом объектов и биением их по слоям параллакса (удивительно, что об это вообще никто не говорит, так как задача крайне не простая); - Проработка визуального стиля и общих правил выстраивания уровней с точки зрения графики; - Использование источников освещения в приоритете над конфигурацией конкретных спрайтов, что с одной стороны ускорило создание сцен, а с другой добавило гармонии в общую композицию и избавило ее от "эффекта пестрения", который часто резал нам глаза. - Активное использование шейдеров, компетенцию в создании которых пришлось значительно нарастить (на самом все еще наращиваем :D )
На самом деле про каждый из пунктов можно написать отдельный пост, но пока нет уверенности, что подобного рода технические нюансы действительно интересны большинству читающих этот пост. Так что... по крайней мере пока не будем углубляться в детали.
В заключении стоит сказать, что графика все еще не имеет финального вида, и в планах есть несколько значительных улучшений, которые будут сделаны перед релизом демо-версии. Однако даже в момент написания этого поста виден результат наших трудов - достаточно сравнить скриншоты до и после. Прикрепляем их к посту, чтобы вы своими глазами могли увидеть, что именно изменилось.
Как вам результат проделанной работы? Будем рады обратной связи!
Изначально думал что повесить гифку в юнити очень сложно, но потом понял что это достаточно просто сделать, если кому нужен туториал, пишите, запилю как можно скорее.
Я всегда, когда читал про фишинг, удивлялся как люди ведутся на такое. Это же дико подозрительно когда тебе пишет незнакомый человек и предлагает пройти по какой-то ссылке, что-то скачать, что-то установить.
Однако вот что произошло на днях:
Новый пользователь заходит на наш discord сервер Песни Копья. Совершенно обычный женский аккаунт со ссылками на разные ресурсы, twitch и т.д. Добавляется в друзья. Пишет о том, что она тоже разработчик и недавно она выложила игру на itch.io. Просит попробовать поиграть и дать обратную связь.
Что ж, думаю, надо помочь коллеге. Захожу на хорошо оформленную страницу официального itch.io. Скачиваю и запускаю. После того как показывается логотип Unity игра не запускается. В этот момент закрадывается подозрение, однако, решив, что уж слишком изощренный способ, закрываю на это глаза.
На следующий день пока я в магазине мне приходит код от Steam на попытку внесения изменений в сборках. Мы ничего не меняли, новых сборок в этот день не заливали.
Через 5 минут снова пишет в личку. Говорит, что я запустил вирус и скидывает часть моих логинов и паролей. Ему нужен мой аккаунт Steam. Временно. А потом я смогу вернуть его через поддержку, а он скажет как удалить вирус (какой добрый и честный вор).
Я потянул время, делая вид, что согласен на его условия. Выключил ПК, с ноутбука начал менять пароли. Ему это не понравилось, сказал что сливает мои пароли и попрощался (какой вежливый вор).
После этого, я запустил в безопасном режиме ПК, почистил его, поставил нормальный антивирус. Везде сменил пароли и поставил двухфакторную аутентификацию, где её не было. Благо она есть в steam, и это спасло. Вместо нашей сборки он пытался залить всю ту же инфицированную, на которую повёлся я.
Вывод 1: фишинг может быть очень узконаправленным. Будьте бдительны.
Да заболел, работать не получается, голова гудит как аэродинамическая труба. Ни спать, ни думать. Недавно закончил работу над мат.моделью черной дыры для нашей игры TOTAL RELOAD:
Кинематографичный раурс №1
Cкрин из нашей группы из нескольких разработчиков. Все интенсивно кидают результаты своих работ, наброски, идеи:
Скрины процесса разработки
В процессе разработки вдохновение черпал везде где только можно. В основном из Interstellar, референсы и матмодели других разработчиков. Сразу приведу некоторые ссылки: youtube.com/watch?v=g-iw2DDNDeY (реализация без когда, полезно чтобы понять в общих чертах как сделать черную дыру)
А вот этот парень большой молодец (на мой взгляд):
Он подробнее рассказал на пальцах как сделать черную дыру и с какими проблемами можно столкнуться. Да, в его версии черной дыры есть артефакты, но видео достаточно полезное. А еще он не забывл упомянуть "того лысого чувака", который очень подробно объясняет рейматчинг :)
А это мой вариант "Б" на случай если у меня не получилось бы сделать черну дыру приблизительно как в Интерстелларе. Такую версию дыры точно можно сделать:
Разработка
Процесс разработки начался с изучения того что из себя представляет черная дыра и того как она выглядит. Какие ожидания относительно внешнего вида имеются у игроков, как ее видят дизайнеры. То есть все началось с референсов дизайнеров и матнаработок других разработчиков.
Все что попадает (свет, материя) в область воздействия черной дыры, притягивается и сжимается в идеальную точку. Именно из-за этого черная дыра и выглядит так как ее показали в Интерстелларе:
Как оказалось, многие дизайнеры имеют свое видение черной дыры и оно часто рознится с описанием математиков. Привожу ниже разные референсы:
Некоторые рефренсы черной дыры, которые нашел в сети
Структура черной дыры, некотороые попытки воссоздания
В целом черная дыра состоит из ядра (то что находится в центре) и диска (его называют аккреционным диском).
Моей первой идеей была следующая: а что если сделать черну дыру в виде модели сферы и модели диска? Мой напарник Александр к тому времени уже сделал версию черной дыры в Blender, записал клип и он много месяцев лежал в папке, я попробовал воссоздать что-то похожее, но полностью в Unity.
Версия черной дыры Александра
Ортографическая камера, разная толщина линий обода, кольца вокруг черной дыры, плоский аккреционый диск с перетянутой(? или в блендере mipmap неверный задается) на краях ткустурой, звезды одного размера, цвета и яркости. Непонятно что с звездным небом. То и из-за распределения, то ли из-за одинаковой яркости небо какое-то странное. А может мне кажется? Ваше мнение? В итоге все это привело к тому что качество картинки сцен с черной дырой пришлось доработать.
Сразу отмечу, что звезды имеют разный размер (в том числе и из-за разной яркости свечения), цвет, неравномерное распределение на небе и ко всему к этому они еще и мигают (какие-то больше, а какие-то почти нет).
Пикабу не умеет вставлять форматированный код, потому прилагаю фото кода
После того как немного пошаманил, получилось создать процедурное небо:
Минимальное количество звезд
Увеличил яркость звезд
Уменьшил яркость звезд
Что мне нравится в компьютерной графике и к чему всегда стремлюсь - это автоматизация процесса. Взгляните, количество звезд, яркость, частота мигания и прочие параметры могут быть заданы через несколько ползунков. Можно в реальном времени настраивать параметры звезного неба и смотреть устраивает оно или нет... Круто, правда?
Черная дыра
Но а дальше пошли пляски с бубном. Мне категорический, крайне не хотелось возиться с рейматчингом. Потому что рейматчинг: - тяжел для графической карты - у меня небольшой опыт работы с ним - чтобы что-то сделать в рейматчинге - это нужно реально разобраться и сделать математически. То есть там реальная математика и если где-то будет проблема, то ты ее не найдешь отладкой. Нужно сидеть и разбираться что к чему.
В общем мой подход "ВСЕ ЧТО УГОДНО, НО НЕ РЕЙМАТЧИНГ" привел меня к таком результату:
ну хоть небо на небо похоже
Здесь две модели: диск и сфера. Ну поехали критиковать: - облака на диске плоские как лист бумаги - облака диска не похожи на облака - плавного перехода между облаками диска и космосом нет (в этой версии, но это не спасет все равно) - дыра не искажает пространство - облака с аккреционого диска не наползают на черную дыру и текстура там без перехода - текстура газов или что это там - одноцветная какая-то, серая что ли + слева есть засвет от энергии, это плюс, есть как бы намек на соответствие с матмоделью
Я еще долго игрался с моделью дыры пока не понял, что пора завязывать с этими убогими потугами что ничего дельного из этого не выйдет:
Попытка улучшить аккреционный диск
Какой-то объект на фоне предполагаемой черной дыры
Аккреционный диск, попытка улучшить №100500
Попытка настроить\сделать карты нормалей для кинематографичного искажения неба
Да, можно показать дыру под определенным ракурсом, на определенном расстоянии и на определенное время. Но тут слишком много слова "определенное". Нужно чтобы можно было показывать как хочешь, со всех сторон и с разного расстояния. Рейматч короче. Ну что, поехали, небольшое видео о том чего можно добиться рейматчингом:
Хотя облака диска у нас реализованы не на 100% так как показано на видео, посмотрел это видео чтобы погрустить на тему того, что придется много-много-много пробовать, экспериментировать.
Рейматч
Первым делом создал объемную сферу, тор и сжал тор по высоте чтобы выглядел как дск. Здесь одна из версий тора и сферы:
Одна из версий черной дыры
Далее работаем с диском, добавляем ему шум с помощью облаков, используем полярные координаты и видим артефакт:
Шов в области перехода облаков
Шов в области облаков устранен
Артефакт, в данном случае, - это как бы "шов" от замыкания облаков. Здесь показал изменение координат полярной системе. Шов находится в области резкого перехода красного в желтый. Если смажем переход (путем интерполяции), то шва не будет:
Полярные координаты в виде цветов
Скрина с текстурой облаков без шва не осталось. После этого нужно было разобраться с текстурой глубины. Обьекты, которые попадают в диск и дыру должны пересекаться корректно. Сделано, здесь показано как палка свеху не пересекается облаками, а снизу облака перекрывают палку. Делается это так: если значение буддера глубины больше чем глубина облака, то считаем, что объект находится за облаками и рисуем облака. Иначе рисуем обьект. Результат:
Облака без цвета (один сплошной красный)
Нужно менять прозрачность в зависимости расстояния между облаками и палкой. Это нужно для того чтобы облака были похожи на обака. В данном случае облако перекрывает палку, но мы дополнительно изучаем расстояние между облаком и палкой. И в зависимости от расстояния мы задаем прозрачность облака:
Палку (ее часть, которая в облаках) немного нужно было исказить. Для этого использовал GrabPass. То есть делается фото всего экрана, помещается в текстуру и в шейдре обрабатывается текстура (вернее область палки). Так же добавим искажение звездам:
Ну что, получили артефакт в виде второй палки, которая возникла из-за искажения текстуры GrabPass. Чтобы устранить этот артефакт используем текстуру глубины и обрабатываем ситуацию, когда палка не должна рисоваться. Позже отказался от использования искажения (его незаметно), то есть GrabPass не используется .
Результат
Кинематографичный раурс №2
Выводы
Рейматчинг довольно мощный инструмент. Да и в целом, как оказалось, математика - это достаточно мощная штука когда умеешь ее использовать :) Экспериментировать пришлось не так и много. Во всяком случае меньше чем люди, которые разрабатывали облака для мультиков пиксар.
В результате нам удалось сделать: + теперь облака на диске объемные и выглядят как обака с разных углов. Потому что они реальные математические облака :) + облака диска стали похожи на облака + сделан плавный переход между облаками диска и космосом + дыра очень хорошо искажает пространство и звезды + облака с аккреционого диска наползают на черную дыру, все как надо + текстура газов диска цветная, объемная (цвет и плотность облаков меняются в зависимости от расстояния до ядра) - убрал яркий засвет в правой части аккреционного диска, пока он не нужен + звезды похожи на звезды: разного размера, цвета, яркости, мигают
Ссылки на нас
У нас уже есть страничка в стим, трейлер, скрины из игры :)