WikiProf

Геймдев15 мин чтения

Roadmap по освоению Unity с нуля до первой работы

Roadmap по освоению Unity с нуля до первой работы
Павел Царенок

Автор статьи

Павел Царенок

Сеошник, маркетолог, копирайтер с опытом 10+ лет. Работал в разных нишах: от ecom до контентных проектов разной сложности.

Основатель проекта WikiProf.


Делаю SEO с головой и только в белую, помогаю людям найти свою профессию и призвание через WikiProf и не только. 

По вопросам сотрудничества — @Pawel_Tsaranok

Маршрут рассчитан прежде всего на будущего Unity-разработчика игр: gameplay programmer или разработчика общего профиля. Он ориентирован на Unity 6.x. На момент подготовки актуальная ветка документации – Unity 6.5, но для реального проекта версию нужно выбирать с учетом стабильности, пакетов и требований команды.

При занятиях по 10-12 часов в неделю базовый маршрут займет примерно 6-9 месяцев. Это редакционная оценка: человек с опытом C# пройдет его быстрее, а обучение программированию с нуля потребует больше времени.

roadmap для освоения unity: как стать разработчиком

Этап 0. (2-3 дня) Определить цель и подготовить рабочую среду

Перед обучением нужно решить, к какой роли вы идете:

  • gameplay programmer;
  • Unreal Engine-разработчик общего профиля;
  • технический дизайнер;
  • сетевой программист;
  • tools developer;
  • Technical Artist.

Этот roadmap ориентирован на первые два направления.

Что сделать

  • установить Unreal Engine;
  • установить Visual Studio или Rider;
  • создать тестовый проект от третьего лица;
  • познакомиться с Epic Games Launcher и менеджером проектов;
  • настроить резервное копирование;
  • подключить систему контроля версий;
  • создать отдельную папку для учебных проектов.

Unreal Editor поддерживает интеграцию с системами контроля версий. Perforce и SVN поддерживаются по умолчанию, также в движке есть Git-плагин. Контроль версий нужен не только команде: он позволяет сохранять историю изменений и откатывать неудачные решения.

Этап 1. (1-2 недели) Освоить Unity Editor

Задача этапа – научиться собирать игровые сцены и понимать структуру Unity-проекта без глубокого программирования.

Что изучить

  • Scene View;
  • Game View;
  • Hierarchy;
  • Inspector;
  • Project;
  • Console;
  • Package Manager;
  • GameObject;
  • Component;
  • Transform;
  • Scenes;
  • Prefabs;
  • Materials;
  • Lighting;
  • Cameras;
  • Audio Source;
  • импорт моделей, текстур и звуков;
  • создание и настройку сборки.

В Unity игровые сущности представлены объектами GameObject. Сам по себе GameObject почти ничего не делает: поведение и свойства появляются за счет подключенных компонентов. Сцены содержат часть или весь контент игры, а Prefab позволяет хранить настроенный объект как повторно используемый шаблон.

Что нужно уметь

  • создать сцену;
  • разместить объекты;
  • настроить камеру;
  • добавить освещение;
  • назначить материалы;
  • создать Prefab;
  • сделать варианты одного объекта;
  • импортировать ассеты;
  • находить ошибки в Console;
  • запускать сцену.

Практический проект

Собрать небольшой уровень:

  • управляемая площадка или помещение;
  • несколько препятствий;
  • камера;
  • освещение;
  • интерактивный объект;
  • точка начала и завершения;
  • простое визуальное оформление.

Этап 2. (4-6 недель) Изучить основы C#

Unity использует C# для написания игровой логики. Не нужно сразу изучать весь язык и платформу .NET. Сначала необходима база, позволяющая понимать код и самостоятельно создавать простые системы. Unity предоставляет собственный C# API для работы с движком.

Что изучить

  • переменные;
  • типы данных;
  • арифметические и логические операции;
  • условия;
  • циклы;
  • методы;
  • параметры и возвращаемые значения;
  • массивы;
  • списки;
  • словари;
  • классы и объекты;
  • модификаторы доступа;
  • наследование;
  • интерфейсы;
  • перечисления;
  • структуры;
  • исключения;
  • делегаты и события;
  • основы LINQ;
  • основы асинхронности;
  • правила оформления кода.

Что пока не требуется

  • глубокое изучение reflection;
  • сложная многопоточность;
  • unsafe-код;
  • написание собственных компиляторов;
  • сложные алгоритмические задачи;
  • продвинутая метапрограммная архитектура.

Практика

Написать несколько небольших консольных или Unity-скриптов:

  • счетчик очков;
  • система здоровья;
  • простой инвентарь;
  • таймер;
  • обработка списка предметов;
  • расчет урона;
  • переключение состояний персонажа.

Этап 3. (4–5 недель) Освоить программирование внутри Unity

Теперь нужно связать знания C# с компонентной моделью движка.

Что изучить

  • MonoBehaviour;
  • жизненный цикл скрипта;
  • Awake;
  • OnEnable;
  • Start;
  • Update;
  • FixedUpdate;
  • LateUpdate;
  • OnDisable;
  • OnDestroy;
  • SerializeField;
  • ссылки на компоненты;
  • GetComponent;
  • создание объектов;
  • уничтожение объектов;
  • корутины;
  • события;
  • взаимодействие между компонентами;
  • слои и теги.

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

Физика

Освоить:

  • Collider;
  • Trigger;
  • Rigidbody;
  • силу и скорость;
  • гравитацию;
  • столкновения;
  • физические материалы;
  • Raycast;
  • Layer Mask;
  • различия между физическим и ручным перемещением.

Добавление Rigidbody передает движение объекта физической системе Unity. Для движущихся объектов с Collider обычно также требуется Rigidbody – обычный либо кинематический в зависимости от задачи.

Управление

Для новых проектов стоит изучать Input System, а не строить обучение только вокруг старого Input Manager. Новый пакет отделяет игровое действие от конкретной клавиши или устройства и поддерживает разные схемы управления.

Изучить:

  • Input Actions;
  • Action Maps;
  • клавиатуру и мышь;
  • геймпад;
  • переназначение кнопок;
  • переключение схем управления.

Какие механики собрать

  • движение персонажа;
  • прыжок;
  • взаимодействие;
  • подбор предметов;
  • получение урона;
  • шкалу здоровья;
  • открывающуюся дверь;
  • контрольную точку;
  • перезапуск уровня.

Практический проект №1

Сделать небольшую игру:

  • один уровень;
  • одна центральная механика;
  • препятствия или противник;
  • здоровье или очки;
  • победа и поражение;
  • перезапуск;
  • готовая сборка.

Этап 4. (3-4 недели) Научиться строить архитектуру проекта

На начальном уровне проекты часто состоят из нескольких огромных MonoBehaviour, которые напрямую обращаются друг к другу. Это работает в прототипе, но быстро становится трудно поддерживать.

Что изучить

  • разделение данных, логики и отображения;
  • композицию вместо чрезмерного наследования;
  • интерфейсы;
  • события;
  • зависимости между системами;
  • конечные автоматы;
  • ScriptableObject;
  • Prefab Variants;
  • отдельные сцены;
  • сервисы и менеджеры;
  • Assembly Definitions;
  • сериализацию;
  • сохранение данных.

ScriptableObject

ScriptableObject подходит для хранения данных как отдельных ассетов проекта. В отличие от MonoBehaviour, его нельзя прикрепить к GameObject. Его можно использовать для характеристик оружия, предметов, врагов, настроек уровней и других повторно используемых данных.

Что нужно уметь

  • разделить управление, здоровье и оружие на отдельные компоненты;
  • создать общий интерфейс взаимодействия;
  • убрать постоянный поиск объектов из Update;
  • настроить предметы через ScriptableObject;
  • использовать события для обновления интерфейса;
  • хранить конфигурацию отдельно от runtime-состояния;
  • разделить меню, игровой уровень и служебные сцены.

Практический проект

Переработать первую игру:

  1. Вынести здоровье в отдельный компонент.
  2. Создать интерфейс получения урона.
  3. Перевести параметры предметов в ScriptableObject.
  4. Убрать жесткие связи между UI и персонажем.
  5. Разделить меню и уровень.
  6. Подготовить возможность добавления нового оружия или противника без переписывания старой логики.

Этап 5. (6-8 недель) Освоить основные игровые системы Unity

Не нужно изучать все возможности движка подряд. Системы следует добавлять под конкретный проект.

Интерфейс

В Unity есть две основные системы для создания интерфейсов:

  • UI Toolkit – современная система для runtime-интерфейсов и инструментов редактора;
  • uGUI – система на основе GameObject и компонентов.

Официальная документация отдельно сравнивает их возможности. Для начала желательно понимать хотя бы одну систему уверенно, а вторую – на базовом уровне.

Изучить:

  • главное меню;
  • HUD;
  • шкалу здоровья;
  • кнопки;
  • панели;
  • адаптацию под разные разрешения;
  • обновление интерфейса через события;
  • меню настроек;
  • паузу.

Анимация

Изучить:

  • Animation Clips;
  • Animator;
  • Animator Controller;
  • состояния;
  • переходы;
  • параметры;
  • Blend Trees;
  • Animation Events;
  • Avatar;
  • humanoid-анимацию;
  • Root Motion;
  • слои анимации.

Система анимации Unity поддерживает клипы, смешивание, слои, состояния и управление воспроизведением через Animator.

Искусственный интеллект

Изучить:

  • NavMesh;
  • NavMesh Agent;
  • NavMesh Surface;
  • препятствия;
  • поиск пути;
  • патрулирование;
  • преследование;
  • атаку;
  • конечный автомат противника;
  • обнаружение игрока через Raycast и зоны видимости.

Пакет AI Navigation позволяет строить NavMesh в редакторе и во время выполнения, использовать динамические препятствия и соединения между областями навигации.

Камера

Освоить:

  • слежение за персонажем;
  • смену ракурсов;
  • ограничения движения;
  • тряску;
  • приближение;
  • переходы между камерами;
  • основы Cinemachine.

Звук

Освоить:

  • Audio Source;
  • Audio Listener;
  • Audio Mixer;
  • музыку;
  • эффекты;
  • пространственный звук;
  • изменение громкости;
  • сохранение настроек.

Сцены и загрузка

Изучить:

  • Scene Manager;
  • загрузку сцен;
  • асинхронную загрузку;
  • additive scenes;
  • экран загрузки;
  • переход между уровнями;
  • сохранение объектов между сценами.

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

Сохранение

Освоить:

  • JSON;
  • сериализацию;
  • сохранение настроек;
  • сохранение прогресса;
  • идентификаторы объектов;
  • версии формата сохранения.

Практический проект №2

Сделать вертикальный срез игры:

  • управляемый персонаж;
  • полноценная механика;
  • несколько типов объектов;
  • интерфейс;
  • противник;
  • анимация;
  • звук;
  • сохранение;
  • меню;
  • начало и завершение уровня.

Этап 6. (4-6 недель) Научиться работать как разработчик

Контроль версий

Освоить:

  • Git или Unity Version Control;
  • ветки;
  • коммиты;
  • pull requests;
  • откат изменений;
  • .gitignore;
  • Git LFS;
  • разрешение конфликтов;
  • работу с .meta-файлами;
  • правила хранения больших ассетов.

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

Отладка

Научиться использовать:

  • Console;
  • breakpoints в IDE;
  • stack trace;
  • Debug Inspector;
  • логирование;
  • gizmos;
  • визуализацию Raycast;
  • обработку null;
  • анализ исключений.

Тестирование

Изучить:

  • Edit Mode Tests;
  • Play Mode Tests;
  • тестирование чистой игровой логики;
  • проверку систем сохранения;
  • тестирование расчетов;
  • базовое интеграционное тестирование.

Unity Test Framework позволяет запускать тесты в Edit Mode и Play Mode.

Профилирование

Освоить:

  • Unity Profiler;
  • CPU Usage;
  • GPU Usage;
  • Rendering;
  • Memory;
  • Physics;
  • Garbage Collector;
  • Frame Debugger;
  • Memory Profiler;
  • поиск аллокаций;
  • object pooling;
  • оптимизацию Update;
  • работу с целевым устройством.

Проверять производительность нужно не только в редакторе, но и на целевой платформе. Unity позволяет подключать Profiler к Development Build и собирать данные непосредственно на устройстве.

Сборка проекта

Освоить:

  • Build Profiles;
  • Development Build;
  • целевую платформу;
  • Player Settings;
  • сцены в сборке;
  • разрешение и графические настройки;
  • создание Windows-, Android- или Web-сборки;
  • проверку игры на другом устройстве.

Build Profiles позволяют хранить отдельные конфигурации сборки для разных платформ.

 

 

Этап 7. Выбрать специализацию

НаправлениеОсновной фокус
Gameplay ProgrammerУправление персонажем, оружие, способности, взаимодействия, инвентарь, игровые состояния, архитектура gameplay-систем
2D-разработчикSprites, Tilemap, 2D Physics, 2D Animation, Pixel Perfect, камеры, платформеры и top-down-игры
Mobile DeveloperAndroid и iOS, сенсорное управление, разные разрешения, оптимизация памяти, энергопотребление, слабые устройства, монетизация, аналитика, публикация в магазинах
Multiplayer DeveloperКлиент-серверная архитектура, сетевые объекты, RPC, синхронизация состояния, лобби, сессии, задержка, авторитет сервера, защита от рассинхронизации
Tools DeveloperEditor Scripts, Custom Inspector, Property Drawer, Editor Window, UI Toolkit, автоматизация, импорт ассетов, инструменты для дизайнеров
Technical ArtistShader Graph, материалы, освещение, VFX Graph, оптимизация графики, профилирование, пайплайн ассетов, взаимодействие художников и программистов
VR/AR DeveloperXR Interaction Toolkit, управление контроллерами, взаимодействие с объектами, производительность, комфорт пользователя, особенности устройств

Этап 8. Собрать портфолио

Для начала достаточно трех сильных проектов.

Проект 1. Механический прототип

Одна хорошо реализованная система:

  • управление;
  • стрельба;
  • инвентарь;
  • AI;
  • головоломка;
  • диалоги;
  • процедурная генерация;
  • система способностей.

Важно показать код, архитектуру и работу механики.

Проект 2. Законченная маленькая игра

В ней должны быть:

  • начало;
  • игровой цикл;
  • победа или поражение;
  • интерфейс;
  • звук;
  • настройки;
  • рабочая сборка.

Лучше небольшая законченная игра, чем большой недоделанный проект.

Проект 3. Специализированная или командная работа

Например:

  • мобильная игра;
  • сетевой прототип;
  • сложная система AI;
  • инструмент редактора;
  • проект с геймджема;
  • командная 2D- или 3D-игра.

Для каждого проекта подготовить: короткое видео, скриншоты, рабочую сборку, репозиторий, если код можно открыть; описание задачи, перечень технологий, объяснение своей роли, описание сложностей и решений, несколько показательных фрагментов кода, инструкцию по запуску.

Краткая карта освоения Unity

Этап

Что изучить

Практический результат

0

Unity Hub, IDE, Git, пайплайн

Настроенный проект

1

Editor, GameObject, Components, Prefabs

Интерактивная сцена

2

Основы C#

Простые игровые классы

3

MonoBehaviour, Input, Physics

Первая маленькая игра

4

Архитектура, ScriptableObject, события

Расширяемый проект

5

UI, AI, анимация, звук, сохранения

Вертикальный срез

6

Git, тесты, Profiler, Build Profiles

Стабильная сборка

7

Выбранная специализация

Профильный проект

8

Портфолио

2-3 законченные работы

Что не нужно изучать в самом начале

До уверенного освоения базовых систем стоит отложить:

  • DOTS и ECS;
  • сложный multiplayer;
  • собственный Scriptable Render Pipeline;
  • глубокое изучение шейдерного кода;
  • большие открытые миры;
  • сложную процедурную генерацию;
  • собственный игровой движок;
  • MMO;
  • масштабную RPG;
  • сложную экономику live-service;
  • продвинутую монетизацию;
  • Addressables для первого маленького прототипа.

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

Критерии готовности к Junior Unity Developer

Можно начинать откликаться, когда вы способны:

  • самостоятельно создать Unity-проект;
  • уверенно работать с C#;
  • объяснить GameObject и компонентную модель;
  • реализовать игровую механику без полного видеоурока;
  • использовать Prefabs и ScriptableObject;
  • работать с Input System;
  • настроить физику и коллизии;
  • создать интерфейс;
  • добавить анимацию и простого AI;
  • загрузить и сохранить прогресс;
  • пользоваться системой контроля версий;
  • находить ошибки через Console и debugger;
  • профилировать проект;
  • создать рабочую сборку;
  • показать минимум две законченные работы;
  • объяснить архитектуру и собственный вклад.

Краткий вывод

Unity подходит тем, кто хочет создавать 2D- и 3D-игры, мобильные проекты, VR/AR-приложения или инструменты для разработчиков. Начать можно без опыта в геймдеве, но одного знания интерфейса движка недостаточно: будущему Unity-разработчику нужны C#, понимание компонентной архитектуры, работа с физикой, интерфейсом, анимацией, системой ввода и сборкой проекта.

Не стоит пытаться сразу освоить весь движок. Эффективнее двигаться последовательно:

  • Познакомиться с Unity Editor.
  • Изучить основы C#.
  • Создать первую игровую механику.
  • Собрать небольшую законченную игру.
  • Разобраться в архитектуре проекта.
  • Освоить основные игровые системы.
  • Научиться пользоваться Git, отладчиком и Profiler.
  • Выбрать специализацию.
  • Подготовить портфолио и начать откликаться на вакансии.

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

Ответы на часто задаваемые вопросы

При занятиях по 10-12 часов в неделю базовый путь до первых проектов может занять около 6-9 месяцев. За это время можно изучить C#, освоить основные возможности Unity и собрать портфолио начального уровня.

Срок зависит от стартовой подготовки. Человек, который уже знает программирование, может пройти маршрут быстрее. При обучении C# с нуля времени потребуется больше.

Комментарии:

Похожие статьи