
Всем привет!
Это Денис Вебер и какое-то время назад мне пришла в голову идея создать уровень из культовой игры Battletoads / Double Dragon в 3д. Эта серия стала интересна достаточно большому количеству людей, поэтому я решил продолжить создавать уровни из Battletoads в 3д.
Если вам больше нравится формат видео, ссылка на ролик я, как и всегда, оставлю в конце статьи.

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

Сегодня я полностью повторю весь уровень, создам модельки врагов, мотоциклов и главного босса Big Blag или как я всегда его называл - Крыса. Именно создание крысы мне понравилось больше всего, но обо всём по порядку.

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

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

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

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

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

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

Иногда мне кажется, что главный враг в таких играх типа Battletoads или той же Streets of Rage сам игрок. Персонажи игры спокойно ходят по уровню, а игрок догоняет их и пытается всех перебить.
Я добавил стрелки и чуть позже подсветил их с помощью анимации и ключевых кадров, изменяя силу свечения.

На стенах висят сетки разных цветов. Для них достаточно было создать плоскость с ячейками, развернуть под нужным углом и применить модификатор Wireframe. А для труб вокруг я использовал обычную кривую, увеличив ей диаметр и добавив несколько промежуточных вершин. Я скопировал уже созданную сетку, слегка поменял её геометрию и покрасил в зелёный цвет. А для ещё одной сетки, выгнул трубу с помощью инструмента Spin.

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

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

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

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

Вы можете помнить ещё одного врага на уровне. Если верить дословному переводу, его зовут Швейцар Судьбы. Этот тот самый персонаж, которого нужно убивать его же оружием. Игрок подбирает выброшенную динамитную шашку и бросает швейцару в будку. Дверь у него открыта, шашки взрываются не сразу, не знаю на что он вообще рассчитывает. Для будки врага я взял готовую панельку с дверями лифта и вырезал в ней окно, куда потом посадил Швейцара. Я создал для него целую комнату, откуда он будет выпрыгивать, когда поймёт, что игрок не оставил ему никаких шансов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ещё один враг уровня - Гидо. Честно сказать, он напоминает мне какого-то опухшего бомжа, но если отогнать от себя эти мысли - Гидо в прекрасной физической форме. Его моделирование было чем-то похоже на создание Абобо из первого уровня. Достаточно добавить геометрию, похожую по форме на его тело и накинуть модификаторы, которые её сгладят. Маленький лайфхак. Когда вы видите модельку в штанах, необязательно создавать под ними ноги. Если вы не планируете потом менять одежду, достаточно просто создать штаны.

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

И последний по счёту, но не по значимости враг второго уровня - Швейцар Судьбы или в оригинале Doorman of Doom. Для него я уже создавал будку и пришло время его туда посадить. Швейцар чем-то похож на Гидо поэтому не буду врать, я просто взял модельку Гидо и немного поменял её. У этого врага чуть более вытянутое лицо, видимо он успел убежать от пчёл, поэтому выглядит не таким опухшим, другая форма обуви и штанов и подтяжки, как у босса Крысы.

Я по быстрому накидал скелет для всех врагов, ещё раз проверил геометрию моделек и расставил их по уровню. Цаплю и Гидо поставил на пути главного героя, а Швейцара засунул в его каморку.

Мне оставалось расставить свет, камеры и настроить их перемещение. А вы скорее смотрите то, что получилось в итоге.

Battletoads по-прежнему остаётся одной из моих самых любимых игр на приставках. Не знаю, почему, но видимо в детстве воспоминания воспринимаются более ярко и остаются с нами такими на всю жизнь.
С каждым новым проектом я набираюсь опыта в 3д. И этот не был исключением.
Если вам понравилась статья и видео и вы хотите посмотреть на то, как Рэш будет раскидывать врагов, а потом выживать в адской гонке на космических мотоциклах, обязательно пишите об этом в комментариях. Так я пойму, что эта тема вам интересна и сделаю ещё один проект с анимацией геймплея.
Оригинальное видео:
LeshaRB
Поиграть бы... =)
vvviperrr
в чем проблема? как раз analogie mega sg снова в продаже появилась.
Ommonick
Он имеет в виду поиграть в 3д версию автора.
DinSmol
В онлайне всё есть)