Анонс курса по созданию игр в Unity

Курс по Unity от XYZ School — создай собственную 2D-игру

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

Длительность курса: 5 месяцев (4+1 на дополнительную проверку домашки).

Записаться: School-xyz.com/unity
КОРОТКО О КУРСЕ

— Преподаватель — Алексей Малороссиянов, Unity-разработчик в Pixonic.

— Ты научишься основам работы в Unity с нуля, сможешь создавать простые 2D-игры: с оружием, мобами и даже боссами.

— Сможешь работать с внутриигровой камерой, анимацией, визуальными эффектами и звуком.

— У тебя будет полноценный прототип игры со множеством механик, которые можно будет развивать.
ЧТО ЭТО ЗА КУРС

Под руководством преподавателя ты создашь прототип простой 2D-игры — пазл-платформера, а затем 2D-экшена. С каждым уроком ты будешь добавлять в него новые механики: от перемещения по уровню и диалогов до чекпойнтов и босса с несколькими фазами боя.

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

Например: у нас есть персонаж, которым мы управляем, и враг-NPC. Наша задача: сделать так, чтобы при нападении со спины враг сразу же погибал.

Итого: есть два объекта, у них есть позиция и направление. Как понять, что объекты направлены в одну сторону, и что один персонаж зашёл «за спину» к другому? Что тут можно придумать?

Оказывается, тут нам поможет скалярное произведение векторов, которое проходят в восьмом классе школы. Как быстро и эффективно находить такие решения — объясним на курсе.
Примерно так будет выглядеть твоя игра
О UNITY

Unity — самый популярный движок для независимых разработчиков со множеством встроенных решений.

Hearthstone, Pokemon Go, Firewatch, Cuphead, Endless Legend — все они сделаны на Unity, и список крутых проектов продолжает расти.

Алексей Малороссиянинов:

Почему Unity? Потому что это самый простой движок с множеством встроенных решений. У него огромная база пользователей, поэтому если перед тобой стоит какая-то задача — скорее всего, её уже кто-то решил и написал об этом в сети.
Cuphead — один из самых известных платформеров, сделанных на Unity.
ЦЕЛЬ КУРСА

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

После курса ты, конечно, не станешь профессиональным программистом, но зато сможешь без труда решать задачи, необходимые для создания простых игр.
ЧЕМУ ТЫ НАУЧИШЬСЯ:

— Ты научишься основам работы в Unity — одном из самых востребованных игровых движков;

— Создашь собственный платформер-головоломку;

— Научишься делать мобов с разными моделями поведения, в том числе стреляющего и летающего;

— Узнаешь, как создавать интерфейсы; реализуешь меню, инвентарь и ячейки быстрого доступа;

— Разберёшься с оптимизацией, аналитикой и сборкой.
ДЛЯ КОГО ЭТОТ КУРС
Для всех, кто хочет делать собственные инди-игры, но не умеет программировать или работать в движках. Всему, что нужно для создания простой 2D-игры, мы тебя научим.

Курс подходит для новичков: даже если ты никогда не сталкивался с программированием, мы обучим тебя основам С#, работе с переменными, функциями, типами данных — и всему, что тебе понадобится на курсе.

Важно: этот курс — о создании игр, а не о программировании как таковом. Если тебе нужно что-то более продвинутое, а твоя конечная цель — работать программистом в игровой студии, то обрати внимание на наш курс по программированию в Unreal Game Code.
Движение героя
О ПРЕПОДАВАТЕЛЕ

Алексей Малороссиянов — ведущий Unity-разработчик в Pixonic.

Алексея с детства интересовали игры и компьютеры, но программировать он начал только в университете — ему очень повезло с хорошим преподавателем, который сумел увлечь его предметом. С тех пор он влюбился в игровую индустрию и твердо решил туда попасть: прямо во время учёбы устроился на пол ставки в игровую студию.
Начинал Алексей с браузерных игр на Flash, затем перешел на мобилки. Работал в Social Quantum и в Game Insight, а в последние несколько лет трудится ведущим разработчиком в Pixonic над мобильным шутером War Robots. Также принимает участие в гейм-джемах в качестве куратора и судьи.

Алексей: «Если сравнить разработку игр и корпоративного ПО, то можно сказать, что игровая сфера оставляет больше свободы для творчества. У каждой новой задачи — множество вариантов решения. Какие-то вещи приходится реализовывать впервые, ведь игровых механик очень много и геймдизайнеры все время придумывают новые. Именно о творческих подходах я и рассказываю на курсе».
War Robots — одна из игр, над которыми работал Алексей
ПРОГРАММА КУРСА
Курс разделён на шесть последовательных блоков.

В «нулевом» мы познакомим тебя с базовыми понятиями программирования: расскажем о типах данных, переменных, операторах, циклах, массивах и классах. Если со всем этим ты уже знаком — нулевой блок можно пропустить и сразу переходить к основной программе.

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

Во втором блоке мы добавим к этой схеме NPC и сражения с мобами. В третьем — добавим в игру весь необходимый интерфейс и более комплексные механики: например, прокачку. В четвёртом — усовершенствуем игру, которая у нас получилась, добавим визуальные эффекты, звук и боссов с особыми моделями поведения.

Наконец, в последнем блоке мы разберёмся с производительностью, аналитикой, памятью, сборками — словом, всем тем, что нужно, чтобы игра хорошо работала. А в финале тебя ждёт большая курсовая работа: ты должен будешь создать одного нового босса и одну новую способность для персонажа сам, без помощи преподавателя.
Блок 1: Пазл-платформер

Лекция 1. Знакомство с Unity.

Что мы изучим: Unity HUB и версия, IDE, создание пустого проекта, обзор интерфейса (scene, game, hierarchy, inpector, console). Трёхмерное пространство сцены. Разбор GameObject и компонентов: Transform, Camera). Концепция Prefab.
Создание нового проекта
***
Лекция 2. Создание сцены и ее наполнение.

Что мы изучим: Объяснение объекта *.unitypackage и импорт необходимых ассетов. Сборка игровой сцены из префабов. Объяснение понятия текстур и Sprite. SpriteRenderer. Настройка камеры (инструменты редактора по алигну камеры). Запуск проекта.

Импорт ассетов. Настройка текстур. Grid & Snap Settings. Создание объектов на сцене. Камера и её свойства. Пакет 2D Pixel Perfect.
Настройка текстур
***
Лекция 3. Оживляем сцену.

Что мы изучим: Понятие MonoBehaviour. Создание Player.cs. Базовый цикл жизни бихэйва (Awake, Start, Update, OnDestroy). Разбираем методы, переменные, базовые типы, условные операторы, модификаторы доступа. SerializedField и то, как это влияет на GameObject. Разбор класса Input, реализация базового передвижения игрока по сцене.
***
Лекция 4. Физика и коллизии.

Что мы изучим: гравитация, rigid body, импульсы, статические объекты. Размещение на сцене необходимых компонентов пола и привязка физики к GO игрока. Переделываем управление на импульсы. Рассказ о детекции коллизий, компоненты *Colider. Методы колизий в компоненте игрока. Создаем новый компонент и добавляем механику собирания монеток.

Физическая модель Unity. Разбор Rigidbody. Разбор Collider. Переписываем управление персонажем на физическую модель.
Прыжок и сбор монеток
***
Лекция 5. Тайлсеты и камера.

Работа со спрайтами и тайлами. Настройки и свойства Sprite, SpriteRenderer. Обзор встроенных инструментов для тайлсетов и грида. Создание тайлсета для уровня. Расстановка тайлов из палитры на сцену. Расширения и кастомные тайлы.

Что такое тайлсет и зачем он нужен? Импорт ресурсов. Создание уровня с помощью Tile Palette. Простой скрипт слежения за передвижением игрока.
Слежение за передвижением
***
Лекция 6. Анимация.
Рассказываем о покадровой анимации, знакомимся с интерфейсами Animator/Animation. Создаём аниматор для героя с набором состояний передвижения. Рассказываем о переходах и параметрах анимации. Программируем контроллер для анимации.

Анимация в пиксель-арт играх. Интерфейсы Animator/Animation. Анимирование героя.
Этапы в анимации
***
Лекция 7. Программирование игровых механик.
Рассматриваем компонентный подход в разработке. Пишем компоненты для лестницы, переключателя (открывалки дверей), передвижной платформы, разрушающихся платформ. Компонент для слежения камеры за игроком.

Разбираем компонентный подход в разработке. Немного теории о делегатах и разбор UnityEvent. Создаём интерактивные компоненты и связываем их между собой.
Переключатель и дверь
***
Лекция 8. Партиклы и инстанциирование.

Рассказываем о Particle System. Создаём партиклы для прыжка, резкого разворота, сбора монет. Программно привязываем всё это.

Частицы, какие бывают и зачем нужны. GameObject.Instaniate — зачем нужен, как применять. Создаём пыль под ногами.
    Пыль под ногами
    Домашнее задание:

    • Самостоятельное повторение этапов лекции.
    • Реализовать частицы при прыжке.
    Необходимое время: 1 час на лекцию, 30-60 минут на домашку.
    Курсовая «Пазл».

    Задание: разработать игровой уровень, в рамках которого нужно добраться из точки А в точку Б собрав максимальное количество монеток. В уровне должны присутствовать двери, передвижные и разрушающиеся платформы. Самостоятельно создать механику включающейся передвижной платформы.

    Блок 2. Боёвка и NPC

    1. Разрушаемые объекты и рукопашный бой для игрока.
    Реализуем механику холодного оружия. Дополняем код и соответствующие контейнеры в префабе персонажа. Реализуем механику разрушаемых пропсов.

    2. Модель данных игрока, жизни, патроны, очки.
    Рассказываем о ScriptableObject как о хранилище данных и настроек. Проектируем и реализуем модель данных игрока, привязываем эти данные к игре. Реализуем бочку со взрывчаткой, которая ранит персонажа при ее взрыве. Дополнительное задание: на основе материалов с этой и предыдущей лекции реализовать механику аптечки.

    3. Противники с искусственным интеллектом.
    Рассказываем о неигровых персонажах и добавляем простой контроллер моба который который ранит персонажа при приближении. Рассказываем об агро рэнже и базовых поведениях.

    4. Снаряды и пули.
    Рассказываем что такое проджектайл и настройках Bullet в разрезе физики и детекции коллизий. Реализуем рэнж оружие игрока (пистолет). Доп. задание: реализовать дробовик.

    5. Стреляющие противники и стратегии ИИ.
    На основе компонентов и предыдущей лекции реализуем стреляющего моба. рассказываем о стратегиях и стэйт машинах для AI. Реализуем простую модель поведения моба.
    Дополнительное задание: реализовать такое поведение моба, что бы стреляющий переходил в рукопашную при приближении персонажа.

    6. Инвентарь. Модель данных и связывание.
    Создаем модель данных инвентаря и ячеек быстрого доступа. Реализуем собирабельные ресурсы и механики патронов, ключей.
    Доп. задание: собирабельная аптечка.

    7. Чистый код, связность, зацепление.
    Лекция на тему хорошего кода: какие есть признаки, чего нужно придерживаться. Рефакторим созданные классы.
    Дополнительное задание: отрефакторить один из старых классов.
    Moana Island Life — одна из игр, над которыми работал Алексей
    Блок 3. UI и новые игровые механики

    1. Введение в UI.
    Рассказываем про канвас, Render Mode, Scale Mode. Базовые компоненты для верстки. На примерах разбираем компоненты UI. Создаем UI для Main Menu и запихиваем его в префаб. Создаем контроллер для Main Menu.

    2. Скрины и HUD.
    Создаем скрин для Main Menu + контроллер переключающий сцены. Создаем HUD основного геймплея. Привязываем к нему модель данных. Разбираем виджеты прогрессбаров.
    Домашнее задание: Реализация прогрессбара для патронов.

    3. Диалоговые NPC. UI диалога.
    Создаем новый класс NPC — диалоговые npc при взаимодействии с которым выводится простой диалог. Создаем префаб для диалога, модель для хранения секвенций диалогов. В красивостях добавляем побуквенное появление текста, как в консольных играх.
    Домашнее задание: добавление еще одного диалогового NPC.

    4. Локализация.
    Рассказываем зачем нужна локализация. Базовые принципы локализации. Создаем модуль для программной локализации, а также компоненты для локализации статических текстов.

    5. Чекпоинты. Красивости (паралакс).
    Реализуем механику чекпоинтов, чтобы не начинать игру всегда заново, а продолжать с определенной точки. Программируем save/load методы в модели. Делаем красивый паралакс: передний + фон. привязываем к передвижению игрока.
    Доп. задание: создание еще одного уровня переднего паралакса.

    6. Загрузка новых уровней.
    Создаем новую сцену и контроллер для его загрузки и перехода. Рассказываем о разных подходах к созданию уровней. О возможностях замены сцены и аддитивной подгрузки сцен. Разделяем сцены на базовую часть и уровень.

    7. Продвинутые механики: способности и прокачка.
    Создаем модель для хранения и разблокирования перков в зависимости от набранных очков. реализуем UI и контроллер перков. Привязываем перки в меню быстрого доступа. Перки: щит, круговой удар.
    Доп. задание: реализовать перк - рывок.

    8. Прокачка персонажа.
    На основе модели из предыдущей лекции делаем список модификаторов и прогрессию. Привязываем модификаторы к игровой модели и реализуем UI прокачки.
    Доп. задание: реализовать модификатор скорости.

    Курсовая: 2D Action.

    Задание: самостоятельно разработать 2 игровых уровня. В уровнях должны присутствовать как минимум 2 новых моба с отличающимися стратегиями поведения.
    War Robots — одна из игр, над которыми работал Алексей
    Блок 4. Продвинутые игровые механики и «красивости»

    1. Кастомные материалы и normal-mapping.
    Рассказываем про свет и материалы. Render pipelines. Создаем normal-мапы для спрайтов уровня и расставляем свет. Реализуем темный уровень и механику фонарика.

    2. Эффекты камеры.
    Рассказываем, какими могут быть полноэкранные эффекты. Создаем эффект тумана, подводный эффект. Реализуем эффект дрожания камеры. Предсмертный оверлей.
    Дополнительное задание: привязать несколько эффектов к геймплейным механикам.

    3. Сражение с боссом.
    Реализуем большого босса с кастомным AI. Вывод дополнительных частей интерфейса завязанных на модель босса (dead cells conjunctivitis). Фазы боя: стрельба проджектайлами, затапливание уровня.
    Доп. задание: реализовать фазу боя — вылезающие из осьминога щупальца.

    4. Сражение с боссом-2.
    Фазы боя: вылезающие щупальца из пола, пробегающие по уровню щупальца.

    5. Coroutines.
    Рассказываем про корутины и их жизненный цикл. Интегрируем корутины в существующие стратегии поведения.

    6. Сражение с боссом-3.
    Летающие по уровню мобы. Рассказываем про кривые Безье и методы линейной алгебры, которые позволяют реализовать плавные перемещения мобов по уровню и следование за игроком.

    7. Звук и SFX.
    Рассказываем о звуке в Unity. Добавляем эмбиент в разных сценах игры. Расставляем звуки окружения по уровню. Пишем компонент проигрывающих звук. Программно воспроизводим звуки персонажа.
    Доп. задание: добавить звуки от выстрелов, добавить звуки для пропсов.

    8. Реализация игровых механик по запросу.
    Мы заранее выдадим опросник "какие игровые механики хотелось бы реализовать в рамках курса?". Две из них будут реализованы в последнюю неделю курса.
    ***
    Блок 5. Оптимизация, аналитика, сборки

    1. Память, атласы, пулы объектов.
    Рассказываем про модель памяти в Unity, про оптимизацию текстур, долгие операции по инстанцированию. Разбираем паттерн object pool. Перерабатываем игру с учетом полученных знаний. Тест на пройденный материал.
    Дополнительное задание: самостоятельно добавить пулы в игровые механики.

    2. Инструменты анализа производительности.
    Рассказываем про hot section. Разбираем встроенные инструменты: Profiler, Memory Viewer / UI Profiler, Frame Debugger на примерах.
    Дополнительное задание: подготовить отчет по производительности проекта. Указать места, где необходима оптимизация.

    3. Unity Analytics. Ивенты, воронки.
    Рассказываем, зачем нужна аналитика в проекте. Обзор инструментов аналитики от Unity. Создаем несколько ивентов и воронку прохождения уровня.
    Дополнительное задание: создать статистику по использованию оружия

    4. Сборки под разные платформы, на что смотреть в параметрах. Ключи, подписи, бета тесты.
    Разбираем build pipeline. Объясняем значения параметров и значимые настройки. Собираем standalone, android и ios сборки. Рассказываем про девелоперские и релизные сборки, настройки ключей, провиженов и выгрузку билдов в сторы.

    Курсовая: Boss fight.

    Задание: самостоятельно создать полноценный 2d Action на 4 уровня. Самостоятельно добавить в игру: 1 новый перк, 1 нового босса (минимум 3 фазы боя, одна из которых не должна повторять реализованные в курсе).
    ПО ИТОГУ
    В итоге у тебя будет один большой проект — 2D-экшен со множеством механик, который уже будет напоминать полноценную игру. На его основе ты сможешь сделать игру в таком же жанре — но уже не по заданиям от преподавателя, а на собственный вкус.

    Знания и навыки, которые ты получишь в процессе, можно будет применить при создании любой игры на Unity. На основе принципов, которые мы изучим, можно будет построить всё, что угодно — а не только 2D-экшен. Главное — ты научишься мыслить, как разработчик, и грамотно подходить к решению любых задач и проблем.
    В СТОИМОСТЬ ВХОДЯТ:

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

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

    Личный кабинет на платформе XYZ.
    Все лекции, стримы, домашки, чек-листы и дополнительные материалы ждут тебя в личном кабинете на нашей собственной платформе learn.school-xyz.

    Закрытая группа в Discord.
    Ты сможешь без лишних формальностей общаться с преподавателями и со всеми студентами с твоего потока. Ты приходишь на курс один, а уходишь с новыми друзьями и полезными знакомствами.
    ОТЗЫВЫ ОБ XYZ School
    Читать отзывы о XYZ School: headkurs.com/schools/otzyvy-xyz-school/
    Больше отзывов читай здесь: vk.com/topic-124560669_34868074

    Записывайся на курс: School-xyz.com/unity

    По всем вопросам пиши в личные сообщения группы.

    А также обязательно вступай в наше сообщество XYZ School в ВКонтакте — у нас много полезного контента в открытом доступе.

    Понравилась статья?
    ХОЧЕШЬ ПОЛУЧАТЬ ЛУЧШИЕ СТАТЬИ
    ОТ XYZ РАЗ В НЕДЕЛЮ?
    Подпишись на рассылку XYZ
    Нажимая на кнопку, вы соглашаетесь с условиями обработки данных