CGAleksey

CGAleksey

Делаю 3D - головоломку от первого лица, публикую результаты работы. Сайт: torshock.com Тележка: @CGAleksey -
Пикабушник
Дата рождения: 01 января 1990
поставил 1256 плюсов и 96 минусов
отредактировал 0 постов
проголосовал за 0 редактирований
5314 рейтинг 27 подписчиков 23 подписки 71 пост 23 в горячем

Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления

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


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


<<Для начала в игре существует только одна core-механика. И для ее реализации, поверьте, придется уйти в работу с головой. Создавать нексолько механик = создавать несколько разных игр. А это равносильно усложнению своей жизни. Вместо шлифовки одной механики вы должны распылиться на 10, а потом оставить из них только одну, а остальные выкинуть. Печально выкидывать результаты работы, правда?>>


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


Вот рассмотрим очень простой пример такой механики на мобильной игре.

Допустим у нас есть персонаж в мобильной игре и наша задача управлять им. Мы видим персонажа сверху (2D). Как бы в сделали его управление?

Это очень щепетильный вопрос. Управление - это задача задач, которую решают в процессе разработки.

(1) Если вы будете приказывать персонажу идти за пальцем, когда он опущен на экран, то ваша рука будет перекрывать экран и вы будете смотреть на свою руку;

(2) А если персонаж будет идти в противоположную о пальца сторону, то будет ли удобно такое интвертирование управления?

(3) Если персонаж будет идти в точку, которую вы кликнули, то сможет ли он увернуться от летящей ракеты? Не перекроется ли экран рукой, когда вы смените направляение движения персонажа? Это управление точно удобно?

(4) А если просто... Джойстик и все тут! Не перекроет ли джойстик экран? Сколько экранного пространства он занимает (допустимо ли это)? Удобен ли он? Функционален? Позволяет ли он погрузиться в атмосферу игры?


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

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


Оптыный дизайнер (опытный кладоискатель) способен быстро оценить все "за" и "против" каждого из пунктов [1-4]. Новичок же, очень вероятно, будет экспериментировать и постигать тайны управления с нуля :)



Надеюсь теперь стало очевидней, что разработка новой механики - это работа.
Это работа и она не всегда увенчивается успехом. Не всегда даже опытному дизайнеру удается создать новую механику. И это часто зависит не только от дизайнера, но и от команды, от возможностей платформы для которой все разрабатывается.
Дизайнер создает тех. задание, отдает ее на реализацию дизайнерам и программистам, через какое-то время получает результат. Если результат устраивает, то это успех. Если результат не устраивает, то процесс повторяется до того момента, пока инвестору все это не надоест или пока команда не замучается "пробовать". Да, людям не нравится работать, а потом выкидывать свою работу. Особенно, когда ты старательно работаешь и не один месяц. Да, ты получаешь зарплату, но где удовлетворение от проделанной работы? Так и свихнуться недолго, если каждый день все рабочее время выкапываешь, а потом закапываешь выкопанную яму.


Вот потому-то все и идут на ухищрения. Зачем пидумывать что-то новое, когда старое хорошо работает? Возможно нужно немного изменить старое и все будет хорошо?


То, что я написал, касается многих вещей. Не только core-механики. Другие вещи могут быть подвержены этому.


//===


В процессе работы над персонажем всплыло множество моментов, которые требовали такой хорошей  и основательной проработки как со стороны дизайнера-программиста, так и со стороны дизайнера по механикам.



В процессе разаработки, было принято решение показыват игроку тело персонажа, чтобы он мог видеть себя своими глазами. Почему нет? Это добавляет атмосферы, смотрится круто.


Мы все фанаты крутого графона и в 21-м веке неприемлимо, когда твоя голова, руки, ноги или пушка влазят в полы или стену или еще куда-то. Нужно было это учесть.


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

Мы справились с этой задачей, сбоку это выглядит так (скрины специально не содержат текстур, дабы не наспойлерить):

Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост

По части влияния смещения тела на механику движения: удалось добиться стабильности и минимизировать влияние анимации ног на перемещение игрока.


Ноги опускаются процедурно. Пришлось водключить инверсную кинематику и совместить ее с процедурной анимацией движения всего персонажа. О том как мы анимировали персонажа можно ознакомиться здесь: Процедурная анимация движения персонажа


Получилось весьма недурно :)



Руки.

C руками, как и со всем остальным, отдельная история. И она длинная.

Что требуется от рук? Чтобы они не пересекали стены, чтобы держали пушку. И чтобы это все выглядело нормально. Бывшый мой босс всегда ставил задачу примерно так. Он перечислял все требования до мельчайших и в конце добавлял: "И да, сделайте все это так, чтобы выглядело круто. Просто сделайте так, чтобы все было круто и не заставляйте меня говорить что получился отстой."


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

Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост
Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост

Подключенные первые варианты рук/манипуляторов выглядел примерно так:

Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост

Здесь один из вариантов ранних анимаций. Главное не внешний вид, а принцип работы:

Пробовали такие варианты:

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

Как мы разрабатывали части персонажа. Персонаж : правдоподобие против удобства управления Анимация, 3D анимация, Процедурная анимация, Gamedev, Руки, Робот, Дрон, Модели, Скетч, Инди, Инди игра, Видеоигра, Игры, Программирование, Дизайн, Game Art, Создание персонажа, Компьютерные игры, Дневник разработки, Cgi VFX, Видео, Длиннопост

Тесты инверсной кинематики. Чисто математика:

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

Инверсная кинематика  в чистом виде (IK):

Еще немного инверсной кинематики для тех кому понравились видео:

Здесь эксперименты того как смотрится перемещение обьекта манипуляторами (как манипуляторы ведут себя при перемещении аюстрактного куба):

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

Манипулятор мы разделили, условно, на руку (манипулятор) и пушку. Пушка выполняет свои функции, а рука дополняет пушку. Не в воздухе же ей висеть.


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

Так же рука может быть и без пушки. Для этого случая мы научили кисть немног взаимодействовать с окружением: если игрок вплотную подходит к стене, то рука как бы занимает промежуточную позицию между стеной и телом игрока. не дает игроку лицом воткнуться в стену. Классно, правда? Так же рука может огибать предметы, если игрок захочет как-то повести себя нестандартно и влезть рукой во что-то.


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


Некоторые скетчи из процесса разработки игры выкладываю здесь:

https://twitter.com/CGAleksey

https://www.instagram.com/cgaleksey/



--

Надеюсь статья понравилась и вы почерпнули из нее что-то новое.

На сегодня у меня все.

Спасибо за внимание!

Показать полностью 17 8

Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа

Набрасываю потихоньку разные варианты персонажа для игры, которую мы с другом делаем :)

Кто-то в одном из предыдущих постов отметил: "Я никогда не понимал этих скетчей, ранних дизайнов и арт-буков. Уж извините. Давайте готовый проект".



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

Все равно что сказать: я никогда не понимал ваших набросков от руки, трейлеров к играм. Чувствуете разницу?



Наброски, скетчи, технические рисунки и все что рисуется "быстро" и в основном "для себя".

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

Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост
Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост
Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост

Или такое:

Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост
Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост
Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост

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


Ранние дизайны. Арт-буки.

Если у вас в команде есть люди, даже 1 человек, то им нужно совместно работать над внешним видом игры. Эта работа сопровождается созданием набросков. Они могут быть цифровыми или еще какими-то. Главное, чтобы команда увидела что они делают и к чему идут, какую атмосферу передают.


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


Арт-буки - это набор зарисовок, которые были сделаны в процессе разработки. Зачем нужны? В процессе создания игры, арт-буки полезны для дизайнера. Он всегда может заглянуть и проанализировать/сравнить разные идеи из предыдущих наработок. В конце они могут использоваться для маркетинга.


На текущий момент удалось вот что набросать по персонажу. Здесь один из вариантов персонажа.

Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост

Здесь вариант персонажа и разные варианты его головы:

Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост
Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост

Еще один вариант песронажа. Кого-то он мне напоминает:

Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост

Варианты рук:

Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост
Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост

Варианты кисти. Немного экспериментировал с соединениями/суставами :)

Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост
Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост
Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост
Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост
Зачем нужны скетчи, арт-буки, ранние дизайны. Скетчи персонажа Скетч, Создание персонажа, Gamedev, Инди, Инди игра, Видеоигра, Игры, Дизайн, Дневник разработки, Компьютерные игры, Артбук, Персонажи, Научная фантастика, Робот, Дрон, Набросок, Длиннопост

Больше скетчей из процесса разработки выкладываю здесь:

https://twitter.com/CGAleksey

https://www.instagram.com/cgaleksey



На сегодня все, спасибо за внимание!

Всем хороших выходных.

Показать полностью 17

Немного технические скетчи игры

Собираем с товарищем игру на коленке (3D-головоломку от первого лица).

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

Справа(рядом текст "Wall concr") фильтр - барьер. Понятно, что сейчас это никому ни о чем не говорит, но все же интереснее разглядывать скетчи, когда есть хоть какое-то обьяснение.
Здесь наброски опор и немного монтажа этого фильтра в раму на которой держится игровой мир.

Немного технические скетчи игры Gamedev, Скетч, Дизайн, Дизайн интерьера, Уровень, Инди игра, Инди, Компьютерные игры, Дневник разработки, Длиннопост

Варианты стен. Вариант стены с отражающей поверхностью(зеркало) от которой отразился лазерный луч (ПВ). Монолитная стена (ЛП). "Забор" (ЛН). Ряд опор и уходящий вдаль провод (ПН).

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

Немного технические скетчи игры Gamedev, Скетч, Дизайн, Дизайн интерьера, Уровень, Инди игра, Инди, Компьютерные игры, Дневник разработки, Длиннопост

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

Немного технические скетчи игры Gamedev, Скетч, Дизайн, Дизайн интерьера, Уровень, Инди игра, Инди, Компьютерные игры, Дневник разработки, Длиннопост

Пол, приемники лазерных лучей, снова опоры:

Немного технические скетчи игры Gamedev, Скетч, Дизайн, Дизайн интерьера, Уровень, Инди игра, Инди, Компьютерные игры, Дневник разработки, Длиннопост


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

Немного технические скетчи игры Gamedev, Скетч, Дизайн, Дизайн интерьера, Уровень, Инди игра, Инди, Компьютерные игры, Дневник разработки, Длиннопост

Монтаж "сайдинга на бетонной стене". Некоторые варианты бетонных стен:

Немного технические скетчи игры Gamedev, Скетч, Дизайн, Дизайн интерьера, Уровень, Инди игра, Инди, Компьютерные игры, Дневник разработки, Длиннопост

Варианты приемников энергии. Они используются в игре, что это... Это будет ясно из игры :)

Немного технические скетчи игры Gamedev, Скетч, Дизайн, Дизайн интерьера, Уровень, Инди игра, Инди, Компьютерные игры, Дневник разработки, Длиннопост

Некоорые варианты потолочных конструкций.

Немного технические скетчи игры Gamedev, Скетч, Дизайн, Дизайн интерьера, Уровень, Инди игра, Инди, Компьютерные игры, Дневник разработки, Длиннопост

Больше скетчей по нашему проекту вы можете найти здесь:
https://twitter.com/CGAleksey

https://www.instagram.com/cgaleksey


На сегодня все, спасибо за внимание :)

Показать полностью 8

Эксперименты с персонажем для игры (скетчи)

Немного экспериментировал с формами персонажа для игры, которую делаю с товарищем на коленке в гараже :) Не судите строго, ненастоящий художник.

Финальный набросок:

Эксперименты с персонажем для игры (скетчи) Инди игра, Инди, Видеоигра, Игры, Gamedev, Скетч, Прототип, Робот, 3D моделирование, Длиннопост

Некоторые попытки/эксперименты:

Эксперименты с персонажем для игры (скетчи) Инди игра, Инди, Видеоигра, Игры, Gamedev, Скетч, Прототип, Робот, 3D моделирование, Длиннопост
Эксперименты с персонажем для игры (скетчи) Инди игра, Инди, Видеоигра, Игры, Gamedev, Скетч, Прототип, Робот, 3D моделирование, Длиннопост

Здесь ещё пробовал экспериментировать с формой головы-корпуса. Немного менял принцип работы дрона:

Эксперименты с персонажем для игры (скетчи) Инди игра, Инди, Видеоигра, Игры, Gamedev, Скетч, Прототип, Робот, 3D моделирование, Длиннопост
Эксперименты с персонажем для игры (скетчи) Инди игра, Инди, Видеоигра, Игры, Gamedev, Скетч, Прототип, Робот, 3D моделирование, Длиннопост
Эксперименты с персонажем для игры (скетчи) Инди игра, Инди, Видеоигра, Игры, Gamedev, Скетч, Прототип, Робот, 3D моделирование, Длиннопост

Больше работ и прогресса по игре можете увидеть здесь:

https://twitter.com/CGAleksey
https://www.instagram.com/cgaleksey/


На этом все, всем хороших выходных!

Показать полностью 6

Работа над интерьером в игре

Привет всем!
Вот мои некоторые попытки представить интерьер внутри игры, которую мы с товарищем делаем в гараже и на коленке 😂

Здесь часть потолка:

Работа над интерьером в игре Gamedev, Инди, Арт, Скетч, Интерьер, Инди игра, Видеоигра, Game Art, Длиннопост

А это часть стены:

Работа над интерьером в игре Gamedev, Инди, Арт, Скетч, Интерьер, Инди игра, Видеоигра, Game Art, Длиннопост

Немного работал над полом, креплениями стекла и монтажом игровых объектов в пол:

Работа над интерьером в игре Gamedev, Инди, Арт, Скетч, Интерьер, Инди игра, Видеоигра, Game Art, Длиннопост
Работа над интерьером в игре Gamedev, Инди, Арт, Скетч, Интерьер, Инди игра, Видеоигра, Game Art, Длиннопост

Здесь наброски соединительных коробок и электропроводки 😉 Ну и немного спойлеров об игре

Работа над интерьером в игре Gamedev, Инди, Арт, Скетч, Интерьер, Инди игра, Видеоигра, Game Art, Длиннопост
Работа над интерьером в игре Gamedev, Инди, Арт, Скетч, Интерьер, Инди игра, Видеоигра, Game Art, Длиннопост

Модули, которые формируют логические задачи-головоломки. Ещё не закончили экспериментировать с ними.

Работа над интерьером в игре Gamedev, Инди, Арт, Скетч, Интерьер, Инди игра, Видеоигра, Game Art, Длиннопост

Воздушная шахта, вернее решетка. И пара эскизов логических модулей.

Работа над интерьером в игре Gamedev, Инди, Арт, Скетч, Интерьер, Инди игра, Видеоигра, Game Art, Длиннопост

Здесь больше эскизов / набросков / схем уровней и вообще всего по нашей игре:
http://twitter.com/cgaleksey
http://instagram.com/cgaleksey

Спасибо зза внимание, всем хороших выходных :)

Показать полностью 8

Как артист делал оптимальные лазерные лучи

Как артист делал оптимальные лазерные лучи Арт, Художник, VFX, Cgi VFX, Программист, Инди, Gamedev, Прототип, Прототипирование, Лазер, 3D моделирование, Скетч, Инди игра, Игры, Видеоигра, Видео, Длиннопост

Настало время оптимизации нашей иры-головоломки от первого лица. В посте будет много картинок, видео и НЕ БУДЕТ математики / программирования. Вся "математика" будет описана на пальцах, показаны только общие идеи. Итак, под оптимизацию попали лазерные лучи.
До этого в grayBox мы использовали юнитевский LineRendere.

Достоинства:

- берется из коробки

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


Недостатки:

- работает неоптимально.


Неоптимальность незаметна на одном, 2-х и даже на десяти лучах. Но вот если у вас в игре лазер, который отражается от зеркал, делится на несколько лучей при прохождении через призму, имеет несколько цветов... то тут уже стоит прикинуть сколько +drawCalls накинут сверху только лучи. Ну, у нас могло набегать 4, 8 и даже 30 drawCalls.


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


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


3/4, сбоку, вразрезе, чтобы моделлер лучше понял конструкцию:

Как артист делал оптимальные лазерные лучи Арт, Художник, VFX, Cgi VFX, Программист, Инди, Gamedev, Прототип, Прототипирование, Лазер, 3D моделирование, Скетч, Инди игра, Игры, Видеоигра, Видео, Длиннопост

Первые наброски:

Как артист делал оптимальные лазерные лучи Арт, Художник, VFX, Cgi VFX, Программист, Инди, Gamedev, Прототип, Прототипирование, Лазер, 3D моделирование, Скетч, Инди игра, Игры, Видеоигра, Видео, Длиннопост

Наброски приемника луча:

Как артист делал оптимальные лазерные лучи Арт, Художник, VFX, Cgi VFX, Программист, Инди, Gamedev, Прототип, Прототипирование, Лазер, 3D моделирование, Скетч, Инди игра, Игры, Видеоигра, Видео, Длиннопост
Как артист делал оптимальные лазерные лучи Арт, Художник, VFX, Cgi VFX, Программист, Инди, Gamedev, Прототип, Прототипирование, Лазер, 3D моделирование, Скетч, Инди игра, Игры, Видеоигра, Видео, Длиннопост
Как артист делал оптимальные лазерные лучи Арт, Художник, VFX, Cgi VFX, Программист, Инди, Gamedev, Прототип, Прототипирование, Лазер, 3D моделирование, Скетч, Инди игра, Игры, Видеоигра, Видео, Длиннопост
Как артист делал оптимальные лазерные лучи Арт, Художник, VFX, Cgi VFX, Программист, Инди, Gamedev, Прототип, Прототипирование, Лазер, 3D моделирование, Скетч, Инди игра, Игры, Видеоигра, Видео, Длиннопост
Как артист делал оптимальные лазерные лучи Арт, Художник, VFX, Cgi VFX, Программист, Инди, Gamedev, Прототип, Прототипирование, Лазер, 3D моделирование, Скетч, Инди игра, Игры, Видеоигра, Видео, Длиннопост

Работает в целом так: луч попадает в приемник и применик передает сигнал о том, что в него попали. На основе этого разворачивается одна из игровых механик.


Больше скетчей, если интересно, выкладываю сюда:

https://twitter.com/CGAleksey

https://www.instagram.com/cgaleksey/

На https://vk.com/dronesgame пока ничего не выкладываю, но если добавятся больше 1.5 человека XD, то и туда начну скидывать.


По коду.

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

Написал разработчику Vectosity чтобы узнать в чем проблема, когда исправит. С его слов это неисправимый косяк GPU. Короче нафиг-нафиг-нафиг... потом буду заикаться от него из-за того что будут вспоминать добрым словом.


Итак поехали. Что нужно:

- система рисования всех лучей на GPU за 1drawCall;

- возможность задавать разные текстуры и прочие параметры лучам.


Для решения этой задачи придется писать код не только на стороне процессора, но и на стороне GPU. Идея такая: рейкастим на пути луча все что видим, отражаем луч от предметов, которые отражаю. В итоге получаем набор координат. Этот набор координа - это начала и концы сегментов лазерного луча.

Этот набор параметров (array) мы подаем в шейдер при генерации меша на GPU.

Так же мы подаем на GPU набор параметров (тоже array): цвет, индек текстуры, толщина луча и всего чего вам еще вздумается.


И да, лучше чтобы эти параметры подавал какой-то менеджер. То есть в менеджер мы подаем какие лучи нарисовать, а он собирает данные и передает их на GPU.


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

1) на концах луч должен быть светлее так как это выглядит естественно. Используем grayscale-маск текстуру для этого;

2) переход от центра луча к перифирии (цвет и прозрачность) задаются grayscale-маской;

3) ну и добавим какой-нибудь шум, типа cloud и будем анимировать его, чтобы имитировать туман или движение воздуха.


И да, желательно склеить маски и все на свете в одну текстуру, не цари чтобы баиндами разбрасыватья.


Как по точкам на GPU нарисовать линию. Идея такая:

- в шейдере линия имеет вектор направления (начало-конец)

- есть доступ к позиции камеры.


Ну и все, делаем в шейдере сross(lineDir, camDir) и получаем направление вектора толщины линии. Передаем в шейдер параметром толщины и им можем регулировать толщину линии.

На словах все просто, на деле ушло много времени. Вот рисую линии на GPU по координатам:

Как видно, все ровненько и красиво и текстуру не колбасит как на предыдущем видео. И что там за проблемы с GPU у него были... Так можно отрисовать хз как много линий, зависит от того сколько вершин Unity разрешает использовать (если не ошибаюсь). Вроде 65к в последний раз было максималкой, а это куча линий, мне хватит :)



Версия сырого луча и приемника луча:

Как артист делал оптимальные лазерные лучи Арт, Художник, VFX, Cgi VFX, Программист, Инди, Gamedev, Прототип, Прототипирование, Лазер, 3D моделирование, Скетч, Инди игра, Игры, Видеоигра, Видео, Длиннопост



Это видео с грейбокс-тестов. Ну, бокс как видно, совсем не gray XD Еще здесь нет нормальной градиентной маски на луче. Луч сильно упрощен: (нет тумана, градиент подобран на скорую руку, концы луча не засветлены... короче, артист не занимался тогда еще этим)

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

В итоге линия (лазерный луч) выглядит так. Здесь уже все:

- градиенты настроены

- туман пост-процессом наложен поверх полупрозрачного луча

- концы засветлены

- есть немного анимации тумана

- вся отрисовка на стороне GPU за 1 drawCall, красота :)

Как артист делал оптимальные лазерные лучи Арт, Художник, VFX, Cgi VFX, Программист, Инди, Gamedev, Прототип, Прототипирование, Лазер, 3D моделирование, Скетч, Инди игра, Игры, Видеоигра, Видео, Длиннопост
Как артист делал оптимальные лазерные лучи Арт, Художник, VFX, Cgi VFX, Программист, Инди, Gamedev, Прототип, Прототипирование, Лазер, 3D моделирование, Скетч, Инди игра, Игры, Видеоигра, Видео, Длиннопост

Надеюсь кому-то пост понравился и кто-то нашел что-то полезное для себя.

Еще раз ссылки на материалы по игре:
https://twitter.com/CGAleksey

https://www.instagram.com/cgaleksey/

На https://vk.com/dronesgame


Спасибо за внимание :)
Показать полностью 10 3

Как артист делал систему рисования линий для своей игры

Статья о том как художник/дизайнер бодался с системой рисования линий для игры и сделал ее :)

Кому будет интересна статья? Наверно всем, но не бывалым прогерам так как тут ничего нового для них нет. Читателя ждет МНОООГО видео, картинок и обьяснений "на пальцах".

Немного модного арта для затравки (который получился попутно и случайно в процессе тестов рисовалки):

Как артист делал систему рисования линий для своей игры Gamedev, Компьютерная графика, Cgi VFX, Игры, Инди, Арт, Видеоигра, Линейная алгебра, Видео, Длиннопост

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

Итак, поехали. Нужно было сделать систему рисования линий для игры. Линия должна рисоваться от лазерного луча на любой поверхности. Стал делать свою систему потому, что на AssetStore ничего такого нет. Есть одна система, но она:
1) рисование на каждом обьекте (static/dynamic) приводит к тому, что обьект вырывается из батчинга и создает +1 drawCall.
2) система рисует только точки. Ну типа как в Splatoon. Можно рисовать пятна, но не линии.
Очевидно, это мне не подходит, так что go делать что-то свое.

Это далеко неконечный вариант так как линии здесь не рисуются, рисуются "точки". За счет медленного движения мышки кисть рисуется часто и след выглядит как линия:

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

Требования к системе такие:
- линии должны рисоваться на статических обьектах, но не всех. Динамические обьекты должны не давать рисовать линию на полигонах, которые ЗА ними.
- работает максимально быстро
- работает на любом железе на котором работает Unity
- число линий неограничего
- число цветов линий - неограничено
- рисовать можно не только линии

Задача эта для меня новая, никогда такого еще не делал, пришлось повозиться.
Как рисуются линии в комп-графике? Есть модель и игрок проводит по модели лучем. На модели должен остаться след. Нужно найти в каком месте рисовать этот след.
1) очевидно, полигоны, которые смотрят ОТ начала рисования линии не будут содержать на себе след. Потому, что это полигоны с противоположной стороны модели. Их можно отбраковать.
2) есть полигоны, которые смотрят на игрока и которые попали в область рисования линии. На них предположительно будет след от линии.

Ну вот, для наглядности:

Как артист делал систему рисования линий для своей игры Gamedev, Компьютерная графика, Cgi VFX, Игры, Инди, Арт, Видеоигра, Линейная алгебра, Видео, Длиннопост

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

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

Вот фото работы этого алгоритма:

Как артист делал систему рисования линий для своей игры Gamedev, Компьютерная графика, Cgi VFX, Игры, Инди, Арт, Видеоигра, Линейная алгебра, Видео, Длиннопост

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

Здесь просто тесты алгоритма, смотрел как работает:

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

Здесь видно (подсвечиваю) полигоны на модели и какие полигоны секутся лучем (рисуют линию):

Здесь наглядно видно как работает рисование линий:

Удалось сечь обьект и рисовать на нем линию. Здорово!
Осталось сделат самую малость: найти обьекты, которые будут рисовать на себе линии.Вот водишь ты лучем в пространстве и нужно знать с чем луч пересечется. Для этого есть Оctree & BVH. Первый хорош для статики, второй для динамических обьектов. Спасибо GameDev.ru (а именно крутым парням foxes и kkolyan за подсказки).

Внедряем деревянные структуры, печем, запускаем. Работает!
Это не конечный вариант, но все же. Вот как смотрится след в действии:

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

Кому интересно, вот ссылки на меня. Здесь я выкладываю некоторые результаты по игре. Пока больше скетчами делюсь. Позже больше видео начну выкладывать ;) Подписывайтесь, это сильно стимулирует работать :)

https://twitter.com/CGAleksey
https://www.instagram.com/cgaleksey/

Показать полностью 3 6

Процедурная анимация движения персонажа

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


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

Ссыли на наработки по игре:

https://twitter.com/CGAleksey

https://www.instagram.com/cgaleksey


Чем не угодили mocap - анимации:

1) нужно искать наиболее подходящие анимации

2) нужно много анимаций

3) визуально анимации должны сочетаться


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


Можно брать готовые анимации с https://www.mixamo.com но есть НО:

1) анимации неуникальны

2) все же урезаный набор анимаций


Побираясь, как бездомный в чьем-то ведре, в поисках нужных анимаций в течении недели я собрал некого Франкенштейна. Именно Франкенштейна потому, что анимаций надыбал отовсюду. Ходил персонаж как офисный работник, крался как эльф 80-го уровня, приседал как человек-паук. Шучу, все было не так уж и ужасно, конечно, для обывателя может и пойдет, а вот меня все же неустраивало разношерстность анимаций. Хотя блендинг и прочие процедурные фишки сильно улучшали дело... Да и ноги не прилипали к земле как надо. Меня это жутко раздражает, когда анимация персонажа не на 100% соответствует тому, что он делает, ноги проходят сквозь пол, руки сквозь стены... ну вы поняли, 21-й век как никак.


Что важно для анимации персонажа: нужно передать ощущение того как персонаж передвигается с учетом физики. Короче, аимация нужна процедурная. Это крайне важно для нашего 3D паззла от первого лица.


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


Для реализации этого, нужно знать что есть инверсная кинематика и уметь ее. Погуглив и ознакомившись собрал простейшую IK, подключил пару костей. Работает. Добавили ограничения, чтобы локти не выворачивались в другие стороны и чтобы кости были похожи на кости. Сделано.


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


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

Отлично, цепляем все к боди, еще немного IK и получаем что-то типа (одно из приближений):

Внимание на лодыжку ^. C ней вечно были проблеммы. Дело в том, что наш робот сделан инженерами-конструкторами и соединения должны гнуться строго по оси и никак иначе. Хотя это далеко не последний вариант робота, но в целом все примерно так. (Спойлер: соединение ложыжки мы все же переделали. Инженеры поставили его на 3 гидропривода, что дало нужное число степеней свободы).



Далее используем наш ИИ для ноги. Не зря же нога у нас обучалась ходить сама по себе без тела XD


Подключаем ИИ к ногам и говорим им болтаться:

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

Ну вот все что сделано выглядит вроде и ничего, по отдельности. Когда я соединил все в одно тело, то понял: емое... Позиция ноги, руки, головы (короче, каждой части тела) должна вносить изменение в позицию всего тела и следовательно влиять на другие конечности. Иначе робот ходил как деревянный буратино. Ничего не поделаешь, видать именно так ходят "идеальные" машины лишенные уникальности (уровень робота "Вертер" достигнут!):

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

Здесь экспериментирую с тем как робота придавливает плита. Робот должен корректно анимировать позицию своего тела:

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


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

В тестах использовалась модель-аналог робота Федора. Извините, это неточная копия. Чертежей не было, собрали "на глаз" XD

Показать полностью 6
Отличная работа, все прочитано!