Памятка для тех, кто хочет изучать Unity

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

0. Лучшее время начать учиться — прямо сегодня

Банально, но правда. Лучше учиться хоть по 15 минут в день, чем ждать волшебного подходящего момента.

1. У Unity есть отличные обучающие материалы

Начни с основ:

https://learn.unity.com/pathway/unity-essentials

Тут тебе подробно и доступно объяснят, какие роли существуют в командах разработки, что такое движок Unity и где его применяют, как не теряться в миллионах панелек и менюшек и т.д.

Как ты заметил, все материалы Unity Learn на английском, но это не беда.

Во-первых, рано или поздно тебе всё равно придётся подтянуть язык хотя бы до уровня 9 класса.

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

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

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

Наконец, Гугл довольно сносно переводит содержимое страничек.

Когда освоишься, самое время переходить к более практическим навыкам:

https://learn.unity.com/pathway/junior-programmer

Тут тебя за ручку, по пунктам, от А до Я проведут по всем основным возможностям движка, объяснят ключевые понятия и полезные практики, расскажут про основы программирования на C# и ООП. В процессе обучения будет предложено решить пару десятков задач разной степени сложности: имплементации фич, дебаг проектов, элементарный рефакторинг и оптимизация, работа с отзывами игроков — скучно не будет.

Хорошим дополнением будут мини-курсы:

https://learn.unity.com/project/beginner-gameplay-scripting?language=en&courseId=5d532306edbc2a1334dd9aa8

https://learn.unity.com/project/intermediate-gameplay-scripting

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

2. metanit.com

https://metanit.com/sharp/

Этот сайт будет тебе надёжным другом и товарищем в деле освоения кодинга. Помимо объёмного, весьма подробного, отлично структурированного и понятного Руководства по C# на сайте есть примеры тестовых вопросов, очень ценная секция комментариев и сопровождающие видео почти к каждой теме.

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

Лично я рекомендую к изучению главы Руководства с 1 по 6 и 9. Для джуна хватит на первое время, но лучше хотя бы ознакомиться с полным оглавлением для того, чтобы быть хотя бы в курсе о существовании некоторых фишек.

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

3. RTFM

Хихоньки, конечно, хахоньки, но официальный мануал действительно очень полезный и к тому же содержит неплохие примеры практик и кода. Не ленись почитать его, а не просто первую ссылку на stackoverflow в гугле.

То же самое касается и Scripting API

https://docs.unity3d.com/2020.3/Documentation/Manual/UnityManual.html

4. Код стайл

Достаточно горячая тема, включающая в себя рекомендации по наименованиям, стилю и оформлению кода. Кто-то уповает на официальный C# Coding Conventions, кто-то считает, что стиль не бывает неправильным, а лишь непринятым в данной конкретной команде. Короче, это как вопрос этикета — лучше изучить и намотать на ус, но применять к месту и не холиварить по пустякам.

https://github.com/dotnet/runtime/blob/main/docs/coding-guidelines/coding-style.md

Сайт для форматирования уродского некрасивого куска кода в отформатированный красивый код онлайн https://codebeautify.org/csharpviewer

5. Паттерны, рефакторинг и прочие умные слова

Шаблоны игрового программирования помогут тебе использовать типовые архитектурные решения, а не изобретать велосипед в сотый раз. Знать всё не обязательно, но ознакомиться советую.

Рефакторинг поможет тебе держать свой код в относительной чистоте и порядке. На мой взгляд, тема неплохо раскрыта тут: https://refactoring.guru/ru/refactoring

https://github.com/Habrador/Unity-Programming-Patterns

https://github.com/QianMo/Unity-Design-Pattern

6. Дополнительная инфа

Не стесняйся рыться в как можно большем количестве источников информации. Тут я перечислю только некоторые места, которые мне понравились.

Каналы с видеоуроками и примерами реализаций фич из различных игр на Unity:

https://www.youtube.com/c/CodeMonkeyUnity

https://www.youtube.com/c/Brackeys/

https://www.youtube.com/c/inScopeStudios/playlists

Мужчина пишет rpg Learn Unity Engine and C# by creating a real top down RPG [FULL COURSE][C# Unity Tutorial] https://youtu.be/b8YUfee_pzc

Блог с переводами различных статей от разработчиков и не только:

https://habr.com/ru/users/PatientZero/posts/

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

Онлайн книга на случай, если хочешь поподробнее узнать про системы контроля версий, а точнее про git: https://git-scm.com/book/ru/v2/

Онлайн книга на случай, если хочешь как следует обмазаться матчастью, а именно мат аппаратом 3D графики и аналитической геометрии: https://gamemath.com/book/intro.html

Сайт с огромным количеством задачек по программированию разного уровня сложности. Представляют больше спортивный интерес, чем практический, но могут неплохо разбавить процесс обучения и развлечь: https://www.codewars.com/

Отличный пост-подборка про Computer Science, которую опубликовал товарищ Sam Tokov

https://dtf.ru/flood/808112-computer-science-chto-chitat-smotret

7. Собеседования

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

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

Ещё немного вопросов по разным темам:

https://coremission.net/gamedev/voprosy-dlya-sobesedovaniya-unity3d-programmista

Вопросы по C# и .NET

https://metanit.com/sharp/interview

8. Книги

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

CLR via C#. Программирование на платформе Microsoft.NET Framework 4.5 на языке C# Рихтер Джеффри

Скачать

Эта книга подробно описывает внутреннее устройство и функционирование общеязыковой исполняющей среды (CLR) Microsoft .NET Framework версии 4.5. Книга научит вас создавать по-настоящему надежные приложения любого вида, в том числе с использованием Microsoft Silverlight, ASP.NET, Windows Presentation Foundation и т.д.
Четвертое издание полностью обновлено в соответствии со спецификацией платформы .NET Framework 4.5, а также среды Visual Studio 2012 и C# 5.0.Из аннотации

Разработка игр на Unity 2018 за 24 часа Майк Гейг

Обо всём понемногу, хорошо подходит как обзорный материал для новичков.

Unity в действии. Мультиплатформенная разработка на C# Джозеф Хокинг

Хорошо структурированный материал с обилием листингов (иногда встречаются опечатки) и описанием некоторых алгоритмов и приёмов проектирования игр. Не подходит для полных новичков в программировании. Подходит для вкатывания в Unity, если ты уже умеешь писать хоть какой-то код.

Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих Адитья Бхаргава

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

Код. Тайный язык информатики Чарльз Петцольд

Отличный научпоп с описанием работы систем кодирования, электрических устройств, прообразов современных ПК, историческими экскурсами и просто интересными сведениями. Настоятельно рекомендую к прочтению в свободное время.

Мифический человеко-месяц, или Как создаются программные системы Фредерик Брукс

Нетленка об истории развития индустрии разработки ПО, организации и управлении рабочего процесса.

Ещё можно почитать что-нибудь из следующего списка (сам не проверял, но люди рекомендуют):

https://tproger.ru/books/the-25-most-recommended-programming-books-of-all-time

В заключение

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