Как пересобрать себя и не сойти с ума
Привет! Пришло время продолжить историю о моем пути в геймдев.
Сразу сделаю уточнение, что этот текст является продолжением прошлой статьи, и тем, кто хочет полноценно погрузиться, рекомендую сначала прочитать предыдущий лонг. Для тех, у кого нет такого желания, максимально краткий пересказ: меня зовут Дима, сейчас мне 31, с детства мечтал разрабатывать игры. Закончил школу, бездельничал пару лет, в 20 благодаря своей женщине полюбил программу 3ds Max и в итоге стал архитектурным визуализатором. Несмотря на хороший заработок, настолько нагрузил себя работой, что превратил некогда любое занятие в завод, выгорел дотла и просто стал люто ненавидеть свое ремесло. Однако, в страхе стать бомжом, продолжал покорно брать заказы, и так все было до 24 февраля 2022 года, когда в одно мгновение изменилась моя жизнь и все ценности. Поблагодарив 3D за все и обняв напоследок, я начал свою дорогу в геймдев. Продолжим.
Не имея никаких идей для будущей игры, я понимал, что главное — начать обучение, а со всем остальным буду разбираться по ходу дела. Для поиска нужных уроков, первое с чем нужно определиться — это игровой движок. Выделив два лидера на сегодняшний день — Unreal Engine и Unity, мой окончательный выбор пал на Unreal, так как он больше заточен под 3D (в котором у меня большой опыт) + у нас уже было небольшое знакомство — я переносил несколько своих архитектурных 3D проектов в интерактивные сцены на UE4.
Еще был очень весомый аргумент — визуальное программирование. Кто не знает, на Unreal Engine можно сделать игру любой сложности, не напечатав ни одной строчки кода. За это отвечает нодовая система визуального программирования Blueprints (далее блупринты) и вместо того, чтобы писать руками код для передвижения героя из точки А в точку Б, ты просто ставишь ноду движения и вписываешь координаты, откуда и куда нужно добраться персонажу. Да, их тоже нужно уметь грамотно применять, но это всяко лучше, чем куча непонятных букв и цифр на экране. Смотря на код своих друзей программистов, у меня всегда было отторжение, будто меня заставляют читать египетские письмена. Так что блупринты были спасением.
Скачав целую кучу уроков и UE5 Beta, я начал изучать как от кружка, нарисованного на бумаге, дойти до шарообразного игрового персонажа; что такое игровая логика, как через пробел научить героя прыгать, почему физику нужно умножать на дельта секунды и как можно случайно попасть в бесконечный цикл и нужно будет завершать процесс в диспетчере задач. Полностью посвящая себя изучению 24/7, слушая разные подкасты про разработку игр, смотря видео на youtube от других разработчиков и читая инди раздел на DTF я чувствовал свое ментальное перерождение. Мысли и идеи кипели в моей голове. Вспоминая последние годы рабской рутины, я снова почувствовал себя живым. К тому же, каждый день приближал меня к своей собственной игре. Но…
В жизни часто возникает свое "но", и в моем случае, чем больше я вникал в игровую тематику, тем больше я понимал, что на первую разработку я потрачу три, а то и больше лет. Смотрите, в мои планы не входило выучить Unreal и пойти в контору делать 3 в ряд, начиная как старший помощник младшего конюха; я не хотел открывать свой Blizzard, так как у меня пока нет таких амбиций и финансов, чтобы платить людям зарплату; ну и еще вариант найти себе подобных инди разработчиков и начать создавать проект своей мечты. Возможно последнее — это то, что нужно, но желания делать подобное у меня отсутствовало. Вы спросите почему, но я снова (как и в прошлой статье) не смогу ответить на некоторые вопросы. Возможно, хочу, чтобы мой продукт игрался и выглядел так, как только я хочу, не знаю… В общем, перспектива одиночного долгостроя меня не привлекала, но и в команду мне не хотелось.
Продолжая изучать UE, я задавался этим вопросом каждый день, и вот однажды у меня искрой проскользнул выход из данной ситуации, который я молниеносно отогнал от себя. Но чем больше времени проходило, тем чаще и чаще эта мысль посещала меня и будучи моей внутренней занозой, она добилась своего и я перешел на новый этап принятия неизбежности. Буду с вами честен, протаптывая тропинку геймдева, я не думал, что через 3 месяца она свернет в эту сторону. Но чтобы окончательно сложить все в голове, мне нужно было поговорить с еще одним человеком. Я встал с кресла, подошел к своей женщине и начал диалог:
- Лена, у тебя есть минутка? Мне нужно с тобой серьезно поговорить.
- Ты меня пугаешь. Что такое?
-Нет, нет, успокойся, все хорошо. Мне всегда нравились твои художественные работы. Ты же училась на дизайнера, у тебя было много уроков по рисунку, да?
- Ну, когда-то было, да, нравилось рисовать, но это все было так давно. А что такое?
- Слушай, ты знаешь, что такое пиксель-арт?
- Нуууу… это стиль как на старых приставках?
- Да-да-да.
- И что?
- Слушай… Мне нужна твоя помощь. Я сам не верю, что это говорю, но по всей видимости, у меня нет другого выхода. Как смотришь на то, чтобы ты взяла на себя всю графику моей… или уже нашей игры, а я займусь всем остальным?
- Ну покажи/расскажи мне все подробно, а там будет видно, я в целом не против попробовать.
- Хорошо, я сейчас тебе скину примеры и попробую найти уроки по твоей теме.
- А в твоем “Анреале” можно и 2D игры делать?
- Ой, не спрашивай… Нет, UE4 не был приспособлен делать 2D игры, а в пятой версии вообще вырезали все, что связывало Unreal с 2D.
- Так, а что теперь делать?
- Unity… Мне нужно выучить Unity…
После разговора мне хотелось панически смеяться. Я просто не мог поверить, что моя когда-то там будущая игра из 3D превратилась в 2D, что теперь за весь дизайн отвечает моя жена, что мне нужно с нуля учить Unity и писать код! Последнее меня «веселило» больше всего. Но (сегодня будет много но, но что поделать) все это в перспективе должно принести свои плоды, и мне не придется делать первый проект до старости (я надеюсь).
Что касается моей женщины, Лены, то сомнений в ней у меня никаких не было. Не хочу бросаться красивыми словами, но на данном этапе жизни она мой верный партнер и единомышленник. Несмотря на не самый большой игровой опыт, эта индустрия ее всегда интересовала, а прошлые навыки рисования пригодятся сейчас как никогда (диплом дизайнера до сегодняшнего дня, так ни разу ей и не понадобился) . Я накидал ей кучу примеров игр в стилистике пиксель арт, уроков; попытался объяснить, что мне в будущем будет нужно и сказал, что время на обучение есть, так как мне предстоит разобраться с Unity…
Все “прелести” Unity можно почувствовать уже на этапе скачки/настройки. Для начала нужно определиться, какая версия тебе нужна — свежая или LTS? В чем ты будешь писать код, обычный Visual Studio, например, или Visual Studio Code? А какого года выбрать — 2019 или 2022? Сейчас ответить на все эти вопросы я могу за минуту, но тогда в голове была такая каша, а руки так и тянулись запустить родной Unreal Engine. Но решение принято и дороги назад нет.
Когда все было настроено, а многочасовой курс с 95% положительных отзывов скачан, я впервые запустил Unity. Изучаем интерфейс, создаем квадрат, физика, коллайдеры и вот момент, когда я должен написать свой первый в жизни код. Сказать, что я был в шоке, это ничего не сказать!
В смысле, я должен все это сам писать? Я что, должен все это запомнить? Вот это гигантское предложение из непонятной белеберды, я должен запомнить? Прям обязательно точка с запятой в конце? Какие еще фигурные скобки, как в школе, что ли? Почему на новой строке? В смысле, опять ошибка? Где? Я что, должен все это запомнить?
Цитата ежедневных мыслей в первый месяц изучения программирования для Unity
В общем, стадия принятия — гнев, во всей красе. Приступы тихой ярости одолевали меня каждые пару минут, и это повторялось изо дня в день. Написание кода, по сравнению с блупринтами в UE, казалось прошлым веком. Мозг воспринимал "переезд" как пытку и на отрез отказывался перестраиваться с Unreal’а на другой движок. К тому же, вот с чем мне пришлось столкнуться — если по началу у меня получалось написать хоть какой-то код и я мог выводить “Hello, world!”, то через время я дошел до урока, в котором абсолютно ничего не понимал. С одной стороны, это не мешало двигаться дальше, просто проскочить непонятный урок, но в чем смысл? Если я даже с обучением основ не справился. Я раз за разом проходил данный урок и все так же ничего не понимал. Даже начинание всего курса с нуля не принесло никаких результатов. А потом ко мне пришла гениальная мысль, что это курс плохой, и мне нужен другой, хороший! Логично?
Новый курс скачан: урок 1, 2, 3 и ступор, преподаватель что-то требует, но я не понимаю что. Повторяю все по видео, но этого мало. Помимо повторения, нужно еще и понимать, что ты делаешь, а с этим проблемы. Как вы поняли, этот урок тоже плохой!
Открываю новый, на определенном этапе все снова повторяется. И так 5 или 6 разных курсов подряд, после чего приходит осознание, что я тупой и писать код не способен. Но перед тем, как бросить Unity, я зачем-то решаю открыть самый первый курс и попробовать пройти его еще раз, и Эврика! А теперь-то я все понимаю! Это странно (хотя ничего странного) , но у каждого преподавателя я учился чему-то новому и полученные знания, например, в четвертом курсе помогли мне пройти первый, а потом уже опыт первого решал все проблемы третьего (извините если запутал).
С тех пор все пошло как по маслу. Я проходил курс за курсом, в которых учился делать разные простенькие игры, записывал любые идеи, приходящие мне в голову, бесконечно мечтал во время принятия пищи и продолжал кодить в голове, после выключения компьютера, находясь в кровати. Что касается Лены, ее жизнь была похожа на мою, тоже все свободное время на обучение, только в ее случае — рисованию и анимации пиксель-арта.
Вот так прошли примерно 6 месяцев нашей жизни. Не знаю, много это или мало, но пришел день, когда все уроки, которые я находил, для меня были примитивны, а найти что-то для среднего уровня оказалось крайне тяжело. И тогда я начал осознавать, что мое обучение по курсам подошло к концу.
Далее я решил еще немного “потренироваться на кошках” и написать своими руками механики из игровой классики. Так появились свои вариации “змейки”, “бомбермена”, “танчиков” и других игр. Конечно, без видео с ответом под рукой было не так легко, но главная причина, почему я выбрал Unity, а не например Godot (который сейчас набирает дикую популярность), это то, что на 95% твоих вопросов уже дали ответ в интернете, и почти любая проблема, скорее всего, кем-то решена. Вообще я понял — главное научиться мыслить как программа, и писать код станет легко. Даже в повседневной жизни этот навык может помочь (привет дурдом).
Однажды, копируя механику из очередной старой игры, я задумался — зачем я вообще сижу и повторяю что-то чужое, если можно придумать свое и пытаться это написать? И, о черт! Неужели этот момент пришел? Неужели с учебой покончено? Я что, начинаю делать свою игру…!?!
Как-то так проходило мое обучение. А сейчас я покажу вам, чему будет посвящена будущая статья. Моя первая игра сейчас находится в активной разработке, и я прошу вас добавить ее в желаемое (в Steam) , это очень поможет в ее продвижении. В следующий раз, я расскажу как искал идеи для игры, делал прототип, десятки раз перерисовывал одни и те же карты и многое, многое другое.
Большое спасибо за прочтение и добавление игры в желаемое, вы большие молодцы! Подписывайтесь и пишите комментарии, до встречи.
PS Сделаю небольшое отступление, чтобы ответить на возможные вопросы, которые у вас могли возникнуть, читая эту статью.
Дима, неужели все может быть так легко, по-детски в 30 лет?
И да, и нет. Пожалуйста, не забывайте, что мне понадобилось почти 20 лет, чтобы прийти к себе и то событие, которое сломало мою прошлую жизнь.
Тебе очень повезло с Леной.
Да, наверное да.
Лене заняться больше нечем? Она что, не работала?
Работала, но обстоятельства поставили ее работу на паузу. Она мой друг, а игры часто делаются с друзяшками.
Мужик, прошло 7 месяцев, ты что по слову в день писал?
Сразу после написания прошлого лонгрида я решил, что выложу продолжение после того как игра будет в играбельном состоянии (впереди еще очень много работы) + будет готова страница в Steam. Вчера Steam одобрил игру в магазине, сегодня статья выложена в сеть.
Да Димон, первая статья то покруче была.
Читать рефлексию по нескольким десяткам лет интереснее, не спорю; я сам это понимал. Но пихать данный текст в первую часть не было смысла, а начинать этим сочинением будущий лонг тоже не вариант. В итоге, имеем две готовые публикации — дорога в геймдев, обучение; а вскоре напишу, как стартовала разработка, и о всех этапах до сегодняшнего дня.
Почему не выбрал визуальное програмирование в Unity (Bolt, Playmaker)?
Я это рассматривал, но по нему не так много уроков, как по c#; он не такой гибкий и удобный как в UE (как мне показалось, может я не прав) и самое главное - я решил, что если уже учу Unity буду как взрослый, исключительно через программирование, чтоб делать абсолютно все что в голову придет.
Очередной пиксель-арт, ты с дуба рухнул?
Понимаю и, возможно, соглашусь с вами, но для меня важно придумать, сделать и выпустить игру, а пиксель-арт — это инструмент, который поможет воплотить все это в жизнь, не растягивая разработку двух человек на годы.
И что думаешь, ты в будущем выпустишь свой Minecraft и все побегут его покупать?
Хммм… хотелось бы конечно, но сейчас самое главное для меня то, что я получаю огромное удовольствие от того, чем занимаюсь, а что будет дальше, время покажет.
Я пришел за ответом, как пересобрать себя и не сойти с ума, а не читать скудоумный рассказ ноунейма!
Тут каждый должен сам решать, я не психотерапевт. В моем случае это максимальный выход из зоны комфорта, просто начать делать то, о чем мечтал много лет. Далее понимаешь, что менять жизнь не так уж страшно. Задаешься вопросом: "Какого черта так долго тянул и не сделал этого раньше?" Потом приходит удовольствие от процесса познания чего-то нового.
Правда ли, что дикие лошади спят стоя?
Да, как и многие другие дикие животные. Это связано с вероятностью нападения хищных зверей; секундное промедление, которое потребуется, чтобы занять вертикальное положение, может стоить жизни.