Стать игровым разработчиком (Unreal Engine / C++)
С момента достижения мною предыдущей похожей цели прошло почти 6 лет... С тех пор много воды утекло, и, наконец, пришло время брать новую высоту: стать разработчиком игровой логики на Unreal Engine! В рамках данной цели, я буду отписываться о проделанной работе и своих достижениях.
Если вдруг интересно как и почему я докатился до жизни такой, можно почитать мою историю провалов предысторию данной цели, которая находится ниже и содержит много букаф.
Общее описание цели
Теория
Проанализировав рынок труда, я пришел к выводу, что усредненные требования работодателей на позицию, в которую я мечу, следующие:
- Хорошее/Отличное знание UE и Blueprints;
- Хорошее знание C++ в контексте UE;
- Опыт разработки мультиплеерной составляющей;
- Опыт разработки UI;
- Умение работать с AnimBP;
- Опыт создания AI (BehaviorTree и EQS);
- Профайлинг и оптимизация проектов на уровне кода;
- Опыт написания плагинов для UE;
- Знание основ линейной алгебры и тригонометрии;
- Знание базовых алгоритмов;
- Наличие завершенных коммерческих/собственных проектов и опыт работы в команде.
План
На ближайшую перспективу план-капкан такой:
- Довести свой уже имеющийся сырой учебный проект до более-менее удобоваримого уровня и добавить в него фичи, коррелирующие с вышеизложенным списком требований. Судя по этому списку, работодатель хочет видеть в портфолио игру, по механикам похожую на PUBG - чтож, значит будем пытаться сделать что-то такое..
- Подтянуть знания по линалу, тригонометрии и более менее въехать в базовые алгоритмы - с этими пунктами думаю будет самая жопа, но вроде я знаю где искать подходящие мне по стилю изложения учебные материалы.
- Поработать в команде. Это просто: идём на геймдев.ру, бросаем там клич и врываемся в любую откликнувшуюся команду. Да, вероятность получить там готовый проект для портфолио практически нулевая, но мне это и не то чтобы важно.
Формат моих постов на Smartprogress
Пока будет так: в конце каждой недели я пишу о том, что планирую сделать на следующей неделе и, само собой, отписываюсь о результатах работы за прошедшею неделю.
В процессе формат и частота постов естественно скорее всего изменятся.
Играбельные WIP-билды моего проекта будут лежать тут.
Предыстория данной цели
(много текста, к прочтению не обязательно)
Несколько лет я проработал в должности Rigger/3D Animator, в том числе в игровой студии, где приходилось соприкасаться с игровым движком Unreal Engine, а так же писать скрипты и небольшие инструменты для повышения скорости и удобства работы.
Пройдя несколько курсов по анимации, чтобы повысить свой скилл, я, как ни странно, внезапно перегорел к этой самой анимации и осознал, что мне больше нравится писать код. Задачи по моей специальности, которые я выполнял на работе, стали интересовать меня всё меньше и меньше и, через какое-то время, я осознал что просто выгорел, выполняя их.
Это случилось весной 2021-го. Я понял, что срочно нужно что-то делать, иначе, скорее всего, наступят не самые приятные последствия в виде хронической депрессии, например. Принял решение уволиться с работы и посвятить несколько месяцев (а возможно даже и лет) поиску себя в мире программирования - благо средства позволяли.
Первые полгода после увольнения я не прилагал особых усилий, чтобы двигаться в каком-то конкретном направлении - скорее просто отдыхал и восстанавливался после выгорания, попутно изучая различные смежные с программированием темы, которые меня интересовали - Linux, школьная математика, C++ и прочее.
Спустя полгода, почувствовал, что пресловутое выгорание меня наконец отпустило, и наступила пора решать куда двигаться дальше. Из всех направлений в разработке я выбрал для себя два возможных варианта: Backend Web Development и Game Development. Не буду подробно расписывать почему я отсеял всё остальное, скажу только, что даже эти два варианта меня устраивали не полностью. Решил выбрать Web, т.к. в геймдеве уже побывал и +- представлял как там всё устроенно, а сайтостроение для меня тогда было целым новым миром.
Не буду вдаваться в подробности процесса обучения, скажу только, что учился я в размеренном темпе, дабы снова не перегореть, и это была Java (язык программирования). Внезапно, после 4 или 5 месяцев обучения, я снова ощутил то самое знакомое чувство приближающегося выгорания. Снова взял перерыв, дабы не усугублять ситуацию, и наслаждался всеми прелестями наступившего тогда жаркого лета.
К обучению вернулся в начале осени. Помня, как меня бесила Java обилием устаревших языковых конструкций, которые необходимо было знать для поддержки существующей кодовой базы, я решил попробовать зайти с Python, тем более что его синтаксис я знал благодаря прошлой работе. Тут уже к самому языку у меня вопросов не было, и я даже написал собственный полноценный небольшой проект. Но спустя всего два месяца чувство выгорания снова замаячило на горизонте :-(((
Тут уже я совсем отчаялся и просто целый месяц пинал балду, ни на что особо не надеясь.
В одно прекрасное утро я проснулся и вдруг вспомнил: у меня же есть еще геймдев с С++ и UE (ого!), основы которых я уже знаю! В этот же день составил программу обучения и приступил к занятиям.
И вот, по прошествии 3-ёх месяцев обучения-практики, могу сказать, что вроде как ощущаю себя вполне нормально. Да, конечно, бывают дни, когда не хочется заниматься, но это просто лень и само по себе в пределах нормы.
Имея за плечами вышеописанный опыт, не возьмусь утверждать, что опять не словлю симптомы выгорания и не заброшу и эту ветку развития, но пока вроде полёт нормальный, и, будем надеяться, так оно и останется...
Учебные материалы, по которым я учился
На всякий случай оставлю список хороших, по моему мнению, курсов и источников, которые лично прошел и считаю, что они реально полезны для изучения Unreal Engine и С++:
- Курс Unreal Engine 5 C++ Developer: Learn C++ & Make Video Games (Английский)
- Youtube-плейлист Основы C++. Программирование для начинающих. (Русский)
- Курс Unreal Engine — полное руководство по разработке на С++ (Русский)
- Youtube-плейлист Math For Game Devs (2020) (Английский)
- Книга Грокаем Алгоритмы (Русский)
------------------------------------------------------------------------------------------------------------------
P.S.:
Мой гитхаб с исходниками проекта (просто хз куда его еще воткнуть)
Критерий завершения
Пройден испытательный срок на позиции UE Developer в любой игровой студии
Личные ресурсы
Много свободного времени;
Знания в смежных областях;
Предыдущий релевантный опыт;
Экологичность цели
Методом неоднократных проб и ошибок, я пришел к тому, что хочу достичь именно этой цели.
Её достижение на 80% из 100% зависит только от моих приложенных усилий (остальные 20% - от ситуации на рынке труда).
-
Докрутить существующие фичи в учебном проекте и сделать его доступным для пользователей Smartprogress
Пока, то, что есть в моём учебном проекте, нельзя показать даже в качестве WIP пользователям смартпрогресс: нужно пофиксить вылеты и подкрутить различные параметры, которые сейчас установлены в тестовых значениях. Как только в демку можно будет хоть как-то играть простому пользователю, я залью сборку на какой-нибудь яндекс-диск, чтобы любой любопытствующий мог лично ознакомиться с тем, что на текущий момент реализованно в игре.
-
Пройти курс Math for Devs 2022 от Freya Holmér
По идее данный курс покрывает всю необходимую для геймдева линейную алгебру и тригонометрию. Плюс мне очень нравится как Фрея подаёт материал.
-
Довести до ума боевую систему
Хотелось бы видеть в проекте большинство шаблонных для всех шутеров механик, типа возможности подбирать новое оружие в процессе игры, ставить хедшоты противникам, драться на ножах и т.п.
-
Добавить в игру новое оружие: дробовик, граната, нож
-
Ограничить боезапас каждого оружия и добавить пикапы патронов
-
Добавить механику хедшота
-
Добавить возможность подбирать оружие во время боя
-
Добавить анимации перезарядки и переключения оружия
-
-
Вспомнить школьную алгебру и геометрию
К сожалению, без уверенных знаний по математике настоящим игровым разработчиком стать нельзя :(
Буду понемногу поднимать школьные знания, проходя русскоязычные курсы на ютубе. Критерий выполнения данного подпункта - успешное прохождение теста ЕГЭ по математике хотя бы на 60+ баллов.
-
Настроить анимации для персонажей
Довести анимации передвижения персонажей и их взаимодействия с объектами до более-менее приемлемого уровня.
-
Конкретезировать планы по основным механикам игры
Пока что я точно не знаю какие конкретно механики буду добавлять в игру: решать буду по ходу обучения, в зависимости от освоенных навыков и интереса.
Этот пункт представляет собой список того, что нужно будет обдумать и распланировать.
-
Боевые механики (различное оружие, хедшоты, конечные патроны)
-
Механики инвентаря (одежда, рюкзак?)
-
Логика матча (сужающийся круг смерти?)
-
ИИ
-
Мультиплеер
-
-
Добавить мультиплеер в учебный проект
В рамках данного пункта нужно реализовать мультиплеер (хотя бы только LAN). Планирую убить сразу двух зайцев: реализовать функцию мультиплеера в виде подключаемого к проекту плагина. Т.е. и мультиплеер научусь делать, и плагин для UE напишу.
Учебные материалы возьму из курса Stephen Ulibarri.
-
Алгоритмы
Скажу честно: пока не представляю как буду их изучать.
Книгу Грокаем Алгоритмы я уже прочитал, но в ней даётся слишком поверхностная информация, которая закладывает просто базовое представление об алгоритмах. К чему-то более серьёзному подступаться пока страшно: говорят там полная жесть.
В любом случае, алгоритмы я начну ковырять не раньше, чем разберусь с линалом и тригонометрией, так что пока данный пункт останется не конкретизированным.
-
Вписаться в существующую команду энтузиастов и поработать в месте с ними над игрой
Просто напишу на форуме геймдев.ру - наверняка кто-нибудь да возьмет к себе. Предполагаю, что к этому времени я уже закончу работу над своим демо-проектом, так что с ребятами буду сидеть вплоть до момента, пока не найду работу.
- 1022
- 02 марта 2023, 12:32
Не пропустите новые записи!
Подпишитесь на цель и следите за ее достижением