Наша новая игра 8 сентября в раннем доступе на steam



о других важных навыках 3d-шника

Это не урок по программированию. Это не рассказ о создании приложения. Это не тутор по Unity.

Это история о том, как я пришёл к понимаю важности гибких навыков (soft skills) и о том, какие из этих навыков важны для трехмерщика, а о каких никто не говорит вообще (как к примеру, отсутствие критерия просирания времени).

1. Как я к этому пришёл

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

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

С одной мечтой – «хочу делать мультики», я уже, можно сказать, что наигрался. Ведь я побывал и винтиком (моделером) на производстве полнометражного мультика и был руководителем, принимающим решение каким именно должен быть короткометражный мультик Fairylanders (созданный с помощью Unreal Engine).

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

И судьба потихоньку, зачастую незаметно, толкала меня в эту сторону.

Я всегда верил, что продукт получится хорошим и полезным другим только тогда, когда будет решать реально существующую проблему (ну, либо проблему, которой не существовало до изобретения этого продукта). Мне представился именно такой случай: у моей дочери была реальная проблема – она буксовала по математике.

Дальше я расскажу вам успешную историю о том, как применяя гибкие навыки, я создал приложение, которое жёстко обламывает детей. Именно так и звучал один из многих комментариев под моим приложением Pocket money в Google Play маркете. С этой точки зрения приложение получилось очень успешным! Жаль, что оно задумывалось как приложение, которое не только поможет ребёнку усвоить лучше математику, но и позволит детям зарабатывать деньги своим умом.

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

2. Почему и как я выбрал Unity и язык программирования C#

До этого у меня был опыт разработки двух игр на Unity, а также я делал поздравительные приложения для своей жены (тесты на жадность и подобные). Также у меня был опыт работы с движком Unreal, но как-то я с ним не сильно сдружился.

Я мог бы конечно заморочиться ещё больше и писать приложение на Swift сразу в Xcode (это такая среда разработки под айфоны, айпеды, маки). Но поскольку опыта в разработке iOS приложений с нуля у меня не было, то я не стал идти сложным путём и просто выбрал Unity. Его прелесть в том, что один раз написал приложение/игру и она под всеми устройствами и платформами работает. И, как позже выяснилось, очень хорошо, что я это сделал. Ведь изначально я не планировал выпускать это приложение для других людей и тем более не планировал Андроид версию. А делал я его исключительно для дочери и исключительно под её iPod Touch.

Я знаю, что Unity часто ругают за низкий порог вхождения. Типа туда ломятся все новички и мол это плохо, поскольку растёт куча недопрограммистов (поскольку программировать под Unity намного проще, чем программировать без Unity). Но, как показывает практика, даже новички, начиная писать код на C#, создают более правильные (с точки зрения добавления фич и дальнейшего поддерживания) проекты, чем те же новички, которые будут создавать проект в UE4 на блупринтах/нодах (BluePrints).

В отличии от Unity, в UE4 любую задачу можно решить не только с помощью дописывания строчек кода на C++, но и с помощью функционального программирования - используя блупринты.

И хотя, в Unreal можно написать полноценную игру, как на блупринтах, так и на C++, но если вы не мазохист, то лучше выбрать программирование на C++.

В общем, Unity и C# я выбрал по следующим причинам:

  • У меня уже был опыт работы с Unity и UE4 и мне больше нравился принцип работы в Unity (в UE4 я так и не подружился с C++ подходом, хотя блупринты мне очень нравились, особенно при создании материалов, когда не нужно было писать шейдеры руками, а можно было просто создать всё что нужно нодами/функциями)
  • Низкий порог вхождения. Даже с почти нулевыми знаниями можно создать полноценную рабочую версию чего-то. Пример - история о создании игры в 9 лет.
  • Чтобы почувствовать себя программистом.
  • Чтобы иметь доступ к огромному сообществу не только Unity, но и C# (редко когда передо мной вставали задачи, которые нельзя было нагуглить уже решёнными хотя бы частично).
  • Зная C# можно не только писать игровую логику, но также улучшать сам движок Unity.
  • Многое уже есть готовенькое под Unity и даже бесплатное (куски кода, фукнциональность вроде процедурной анимации элементов интерфейса, контент).
  • У меня есть друг C# программист и я надеялся на его помощь.

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

3. Порог на входе: с одной стороны легко, а с другой – очень тяжело

Раз уж я затронул тему порога вхождения, то я её немного раздую.

При обучении чему-то новому порог составляет 20 часов эффективной практики. Главное - пережить эти 20 часов и вы станете наслаждаться тем, что учили. Вы поймёте, как оно работает. Так было у меня с программированием, когда я вникал в новые тонкости, к примеру модификация редактора Unity. Так было у меня с обучением игры на укулеле (реально 20 часов практики и я смог играть в своё удовольствие).

Есть ещё одна вещь, которую бы я отнёс к проблеме порога входа. Сейчас принцип работы с 3D-пакетами реально выглядит так: «нажал одну кнопку - получил красиво». Рендереры стремятся уменьшать количество кнопочек и можно нормально рендерить вообще ни разу не погрузившись в настройки. Текстурирование в Substance Painter: нажал кнопку, применил smart material, получай модель с потёртостями в нужных местах и реалистичным (а не стерильным) материалом. В моделировании: отфоткал объект – создал 3D копию, да ещё и с текстурой сразу.

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

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

Просматривая последние журналы Render.ru я вижу, что авард за просто фотореалистичный рендер уже давно никто не получает.

Поэтому, чтобы тебя заметили нужно делать что-то другое. К примеру, вот что делают другие: афишируют свой грандиозный задум (создают hype) и по чуть-чуть дразнят аудиторию маленькими порциями информации. Или создают не просто портфолио из картинок, но портфолио, которое состоит из ОДНОГО законченного продукта: игра, приложение, мультик/трейлер к мультику, VR-комикс или видео, видео со встроенными VFX - как Bruce Branit находит у себя в ухе паука. Просто взрыв на чёрном фоне уже никому не интересен (такое даже не советуют в рил класть).

Даже моделька персонажа на Sketchfab-е выглядит куда лучше, чем 2D картинка в Т-позе. Ведь её можно повращать, посмотреть с разных сторон, попереключать режимы с/без сетки и т.д. Т.е. по сути – это такой малюсенький микро-проект, с которым можно ПОИГРАТЬСЯ. А всем разработчикам игр известно, что увлечь пользователя получается ЛУЧШЕ, если он провёл в вашей игре времени БОЛЬШЕ. Чем больше люди играются с вашими мини-проектиками, тем более лояльны они к вам.

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

Взять хотя бы ту историю со студентом, который захотел сделать 100 игр за 5 лет (и сделал). То, что он делал даже играми назвать сложно, а смотреть на некоторые без брызг крови из глаз вообще невозможно. Но факт остаётся фактом – сейчас я рассказываю именно об этом парне. Именно этот парень неоднократно получал многочисленные награды за лучший геймплей, за лучшую игру. Он получал финансирование от универа на этот его замысел. Это именно пример такого проекта, которым ты можешь выделится из толпы, из всего количества информационного мусора вокруг.

Другими словами, если вы только становитесь тридешником, то сразу задумывайтесь о том, как вы выделитесь из общего информационного шума.

4. Раньше о таком количестве информации мечтали, а теперь это проклятье

Раз уж я заговорил об информационном мусоре, то попробую его немного рассортировать.

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

Причём выглядит это сейчас больше как квест со всевозможными искушениями:

  • Не залипнуть на youtube за ПРОСТО просмотром уроков. Если не слышали, то обязательно почитайте о кривой забывания (в середине статьи).
  • Не свернуть с дороги и не начать смотреть всевозможные вдохновляющие видео с voiceover-ом от самого Шварценегера или Вила Смита.

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

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

Однажды я посмотрел офигенный доклад о scriptable objects (SO) в Unity. Я сразу же подумал, что было бы очень круто использовать SO и в моём проекте. Но как-то сразу до этого руки не дошли. Где-то через месяц я снова смотрел YouTube и наткнулся на шикарное видео по Unity. Какое же было моё удивление, когда я захотел поставить пальчик вверх, но обнаружил, что я уже лайкал это видео! Оказалось, что спустя всего месяц, я напрочь забыл тот доклад о SO. Именно тогда я нагуглил кривую забывания. Именно после этого случая я не только перестал смотреть уроки  на всякий случай (авось пригодится в будущем), но и вообще стал подходить к обучению с совершенно новой стороны.

Особенно сложно устоять таким соблазнам (смотреть такие полезные видео и уроки), если ты делаешь СВОЙ проект. Когда нет моментального индикатора того, что ты просираешь время. Ты не лишишься проекта, тебя не оставят без денег, не выгонят с работы, тебя не внесут в какой-то чёрный список, ты не увидишь, как ты моментально забываешь то, что посмотрел. Т.е. индикатором того, что ты просрал время, будет только твоя скверная, никому не нужная, бедная старость. А сейчас-то всё прекрасно!

Иметь силу воли сесть и ДЕЛАТЬ что-то непрерывно на протяжении больше, чем 15 минут (в идеале часа 3) – это сейчас крутой навык! Ведь микро-перерывы на фейсбук и месенджеры очень подрывают нашу эффективность.

Уже давно доказано, что человек не многофункционален. Одновременно вы можете делать только что-то связанное с вашей привычкой. К примеру, можно идти и читать книгу. Но нельзя слушать подкаст и читать книгу.

Другими словами, учить нужно не впрок, а вовремя и учить нужно правильно.

И если курсов по техническим навыкам сейчас невероятное количество (почитайте, к примеру, отзывы о курсах в Скиллбокс), то о курсах soft skills как-то никто не задумывается.

5. Основное отличие профи от новичка – глубокое понимание основ

Пока я делал приложение и параллельно ходил на собеседования в качестве Unity программиста (чтобы проверять на что я реально гожусь в этой роли), вот что я понял: как это ни странно, но знание и глубокое понимание основ – это то, что отличает профи от новичков.

Все новички (и я в том числе) думают, что вот те профи, которые работают над Звёздными Войнами или написали свой искусственный интеллект (ИИ), вот они знают какой-то мега сложный секрет, который позволяет им делать все те крутые штуки. Но чем больше я живу и чем больше я движусь в направлении профи, тем больше понимаю, что никаких секретов нет. И что все крутые вещи и приёмы – на самом деле очень простые и находятся на базовом уровне. Т.е. такие, которые нужно было бы освоить в самом начале пути, но я почему-то не обратил на них внимание.

Именно поэтому я люблю читать уроки не о том, как написать свой ИИ за пять минут, а что-то типа «Основы языка Python», а ещё лучше «основы языка C++», осознав которые, я потом ещё глубже понял основы Python.

Последняя книга, которую я читал о программировании (Чистый код, Боба Мартина) начиналась с очень большой главы… сроду не поверите о чём. Попробуйте угадать! Вот как вы думаете, какая самая базовая вещь для программиста? Что нужно знать/уметь программисту в первую очередь? Ну-ну? Попытались? Первая глава была о том, как правильно придумывать названия для переменных и функций.

Другими словами, учите основы и не брезгуйте читать самые первые вводные страницы официального help-а.

Читайте продолжение тут о страхе, церкви, решение проблем, неважности опыта, здоровье, везении и других soft skills важных для VFX-специалиста и 3D-художника.

P.S. Пьющего Тириона, отрендерённого в реальном времени, я взял отсюда.



Подпишитесь на обновление блога (вот 3 причины для этого).
Введите ваш e-mail:





Вам понравилась статья? Хотите отблагодарить автора? Расскажите о ней друзьям.
Или подпишитесь на обновление блога по E-Mail.

Введите ваш e-mail (используется только для отправления обновлений блога):

комментариев 6 к статье “О гибких навыках 3D-шника (помимо технических и художественных), часть 1”

  1. Есть вариант, что вообще завяжете с 3D?)

    • О, это вряд ли :))) С одной стороны, не хочу выбрасывать более 10 лет опыта. А с другой, программирование и 3D очень тесно связаны: начиная с того, что любой 3D-редактор кем-то написан 😉 и заканчивая тем, что работая в Houdini постоянно приходится использовать VEX (внутренний язык программирования) или в Maya юзать Python, чтобы создавать риг и т.д.

  2. Всегда хотел научится программированию, но мои «девять классов образования, да и те в коридоре» давали мне понимание, что без заточенного под математику ума, у меня вряд ли получится. По этому мечты о собственной «инди игре» задвинул куда подальше, на верхней полке 🙂

    П.С. Спасибо за статью, как всегда интересно! Удачи Вам в вашем творчестве.

    • У меня похожее образование, но при этом я немного программирую на Python. Для создания игр (на готовом движке) не нужно знать продвинутой математики, уровень 6 класса будет достаточно. Важно просто понять логику, типа — если x или y то …, если z то …, потом еще освоить лупы, функции и всё. Самое сложное для меня было незнание с какой стороны подступиться, смотришь уроки — а в них все объясняют про синтаксис, но ведь это не программирование, как сделать следующий шаг от основ к делу? Мне помогло упрощение задачи до уровня, который мне посилен на данный момент времени. Например, написать простейшую консольную программу, которая спрашивает год рождения и выводит год в который человеку будет 100лет, таких задачек можно найти в интернете. Ну и важно понять что программист даже самый крутой половину времени тратит в поисковике или читает документацию, это нормально и не значит что ты ничего не умеешь.

      • Не надо искать задачки программирования в интернетах.
        Нужно искать такие задачки под свои конкретные нужды.
        РЕАЛЬНЫЕ задачи, а не видуманные кем-то и никому не нужные.
        Обо таких «выдуманных» задачках Вы тоже быстро забудете.
        Не надо учить основы ООП по созданию машинок и кошечек, а нужно создать проект для каждодневного использования, например разные данные в разных форматах.
        Используя свой продукт в каждодневных задачах появляются идеи что нужно усовершенствовать, дописать. Развивать свой продукт, возможно он в будущем будет популярным, как например язык программирования РНР.
        Good luck.

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

Извините, в данный момент комметарии закрыты.

© 2008 - 2018 3dyuriki.com
Для связи со мной 3dyuriki@gmail.com