Как я сделал игру-портфолио, чтобы попасть в gamedev

Как я сделал игру-портфолио, чтобы попасть в gamedev

Начнём со знакомства. Меня зовут Павел, я около 10 лет проработал в разных игровых медиа в основном над трансляциями (Games-TV, Игромания, DTF, Wylsacom), а после начала ковидной эпидемии потерял работу и решил податься в gamedev. Около двух лет ковырял Blender, потом Unreal Engine 4, делал модельки, и даже поучаствовал в двух Epic MegaJam 2021 и 2022 года. Для первого проекта делал level-дизайн, модели и генерировал идеи вместе с командой:

Помесь Road Rash и Clustertruck

Для второго проекта делал анимации и немного крутил механики. В итоге так накрутил, что на его основе сделал quake-jump игру в духе Jump King и Getting Over It with Bennett Foddy:

Бери лопату и прыгай вверх

Изучение программ я начал с YouTube туториалов и желания сделать игру, вдохновлённую проектом Ex Machina. Тогда мне казалось, что это достаточно просто. Мне и сейчас так кажется, но только просто это для того, кто что-то понимает в разработке. Я даже успел сделать карту и первый транспорт, но именно участие в Epic MegaJam заложило в мою голову большую дозу базовых знаний о том, как весь этот gamedev работает. И поэтому первый совет — не игнорьте Джемы.

Gazelka of War

Начало

В середине февраля 2022 года мне пришла идея сделать шутер, но не простой, а с самыми крутыми и недооценёнными механиками: возможностью пинать врагов, прибивать их штырями к стенам и забавным рэгдолом. К тому моменту я уже знал some shit в блюпринтах и модельках, а так же изучал YouTube на предмет туториалов, и на мой взгляд, по шутерам их было больше всего. Правда, в итоге у меня получилась другая игра и это второй совет — умейте отпускать идеи, они не все могут дойти до релиза.

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

Детская радость от знакомства с физикой

Оружие

Я довольно долго не хотел добавлять в игру огнестрельное оружие, моделировал какую-то наручную гравипушку с кольями, игрался с ней, но всё же сдался и сделал первый ствол, взяв за основу Glock17. На самом деле, как и любому маленькому 30-ти летнему мальчику 3D-артисту — мне просто очень хотелось замоделить оружие. Примерно так же в игре появились MAC Ingram (просто обожаю этот странный квадратный пистолет-пулемёт), автомат и дробовик.

Say hello to my crazy little friend!

Про автомат упомяну отдельно, потому что я знал, что мне нужна какая-то винтовка, но она должна быть как брутальной, так и небольшой в размерах. В итоге я решил совместить короб АК-12 (угловатый и современный вид) и АКСУ (укороченный вариант калаша). Согласен, что стоило бы добавить какую-то насадку на ствол, а то он выглядит, как труба, но так как я изначально понимал, что ничего дальше lowpoly делать не буду, то решил оставить как есть. Совет номер три — трезво оценивайте свои силы и способности.

РАТАТАТА

Концепция

Примерно тогда было найдено окончательное направление и жанр игры: это будет шутер от первого лица, вдохновлённый Джоном Уиком и логикой Hotline Miami. Все в игре умирают от одного ранения, будь то противник или игрок, а ставка делается на скорость прицеливания и точность стрельбы. Так же — никаких перезарядок и бездонных карманов с кучей стволов — персонажу доступно лишь оружие врага, выпавшее после смерти, с оставшимся там количеством патронов. Довольно странно, как я пришёл к такой концепции, учитывая, что не люблю очень потные игры, но оно получилось само, просто в процессе тестирования геймплея. Кстати, Джон Уик — не единственная отсылка в игре.

Стоп, какой ещё Джон Уик? Это Вон Джик!
Стоп, какой ещё Джон Уик? Это Вон Джик!

Разработка

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

Огромный-мега-чел долго был финалом уровня, а потом появился второй этаж

Наверное, сильнее всего загорелся идеей «доделать» проект, после создания первой катсцены. Тогда я решил, что сделать целую игру (будучи безработным) я не смогу, а вот один уровень — вполне. Так я не только покажу будущему работодателю, что умею, но и получу законченный продукт, за который не стыдно. Плюс к этому, тогда для общего доступа открыли Unreal Engine 5 — отличный повод попробовать Lumen и чуть упростить себе жизнь. Кстати, совет номер четыре — никто не любит что-то сделанное не до конца, или на половину. Даже если вы делаете маленькую игру — добейте её до какого-то логического конца.

Здесь пока не Lumen, но освещение уже получше

Сильно легче от внутренней системы рейтрейсинга не стало, и появилась вторая проблема — освещение. Если вы в каком-нибудь Discord или Telegram-чате спросите о том, как сделать нормальное освещение в UE, то со 100% вероятностью вам скинут гайд от Уильяма Фаучера — Lighting in Unreal Engine 5 for Beginners. К сожалению, мне он только всё испортил. Пришлось всё переделывать, а вернуться в начало не вышло и как итог — я не очень доволен светом в своей игре, но точно сделал всё что мог. Нет, я не утверждаю, что видео плохое, просто всё зависит от специфики проекта. И это пятый совет — не все гайды одинаково полезны, но из них можно брать лишь часть нужной вам информации.

Так-то мужик шарит и у него много полезных видео

Level-дизайн

Работая над level-дизайном, я вдохновлялся серией Dark Souls, а именно некоторыми её замками (ну не болота же). Меня всегда впечатляли уровни, где ты вроде много ходишь, то вверх, то вниз, а по факту — локация не очень большая, просто сделана в виде вертикального лабиринта. Да ещё и пройдя её, ты открываешь какую-нибудь дверь и оказываешься в самом начале. Эта компактность в сочетании с комплексностью — отлично подошла для моей игры. Забавно, что основой так и остался базовый шаблон, а вот из его геометрии уцелели разве что пару стен.

В этой версии у врагов был ещё и слух, но от него пришлось отказаться

Модели

Все модели я делал в Blender и использовал упрощённую систему окраски через атлас. Это когда у вас есть одна небольшая картинка-палитра и с помощью UV-развертки вы расставляете полигоны модели на нужные кусочки этой картинки. Но где-то в июле я узнал о существовании программы Substance Painter. Точнее, знал я о ней и раньше, но тут решил, что мне точно надо провернуть через неё мои модели оружия. Даже если мне не понравится, я хотя бы научусь и пойму, как это всё работает. И знаете, я не разочаровался. Не скажу, что было просто, или что я достиг заоблачного результата, но вот, например мой AK44 до и после и другие стволы:

После я планировал использовать SP ещё для персонажей и транспорта, но остановился только на последнем, да и то в пол силы. Остальное поправила пост-обработка, до которой я добрался уже в конце. Сел-шейдинг, лёгкая пикселизация, толстые границы — я понимал, что lowpoly-графику лучше сделать ещё немного low, иначе она так и будет смотреться, как прототип.

Анимации

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

Привет от рига

Но ближе к концу разработки мне надоело вечно переимпортировать анимации из-за мелких исправлений и я освоил анимирование прямо в Unreal Engine. Больше того, в нём оказался более удобный инструмент плавности хода анимации. Ну и будем честны, я тут не мультфильмы Pixar анимирую — для моих задач его вполне хватало.

Топорному мужику - топорные анимации

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

На приятную перезарядку можно смотреть вечно

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

Колдунство движущихся материалов

Релиз

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

Изначально планируя выпустить игру где-то в сентябре, релиз пришёлся на вторую половину ноября. Для публикации я выбрал сервис itch. io, потому что публиковаться в Steam с одним уровнем игры, которая возможно никогда не выйдет — не уважать игроков, которым сам и являюсь. Так же как и стричь деньги за неготовый проект — по этому игра бесплатная. Ну и потому что это портфолио :)

Всё хорошо в Shotcut, только качество пожатое

Ссылка на игру:

Ну и какая разработка без багов и исправлений? Собрав немного отзывов, исправил некоторые довольно досадные вещи: например, игра плодила огромные логи, которые могли увеличить размер папки игры до 10 гб. Что-то исправить так и не удалось — иногда в игре пропадает возможность включать slow-mo, а так как это не завязано на других механиках и баг случается редко, вычислить его мне пока не удаётся. А ещё после отзывов добавил в игру таймер (кнопка T) для тех, кто решил поиграть в спидранеров. И даже добавил тайный уровень-арену.

Эксперименты с Physical Animation

Итоги

Я делал эту игру с нуля в одиночку около 8-ми месяцев. Я сделал для неё модели, звуки, музыку и логику не пользуясь готовыми ассетами или аутсорсом. Да, некоторые звуки я нашёл в интернете, вроде выстрелов или шагов, но их всё равно пришлось изменить и обработать под свои нужды: программы iZotope и Audicity для настройки и обрезки, и FL Studio c ACiD Pro для музыки. А ещё (чего не стоит говорить работодателю, если собрался стать игровым программистом) всё это функционирует исключительно на блюпринтах, то есть я не использовал ни одной строчки кода. Хотя нет, использовал — 5 строчек отвечают за смену цветов одежды врагов.

Так нашёл ли я работу в gamedev? Пока нет, но кто знает, может этот текст мне в этом поможет, ведь сделать игру — пол дела, надо чтобы о ней узнали. Да и цель этой игры — не только показать, чему я научился, но и подарить игрокам какие-то впечатления и эмоции, иначе зачем вообще делать игры. А ещё передаю привет всем тем, кто говорит, что вы не будете делать игры, которые вам нравятся и стоит начинать с чего-то очень простого — это зависит от вашего желания и умения находить информацию — и это моё последнее напутствие. Я знаю, что моя игра не идеальна и не делает прорывов в жанре, но она прикольная, сделана недурно и с душой. Очень надеюсь, что она понравится и вам — удачной игры!

Танцующий челик напоследок

P. S. Уровень проходится примерно за 3 минуты, но только при условии если:
- Вы самый меткий и быстрый стрелок на DTF
- Вы траили уровень около часа. Или больше — на высокой сложности
- Вы разрабатывали его 8 месяцев и знаете здесь каждый уголок (правда, даже в этом случае не всегда выходит с первой попытки)

261261 показ
16K16K открытий
1212 репостов