СТАРТ В GAMEDEV
ДЛИТЕЛЬНОСТЬ:
32 ОНЛАЙН-ЗАНЯТИЯ
[ПО ВТОРНИКАМ И ЧЕТВЕРГАМ]
Комплексный курс, который научит кодить на C++ с нуля, позволит освоить принципы объектно-ориентированного программирования, ключевые библиотеки и инструменты для того, чтобы создавать десктопные и мобильные игры и развиваться в геймдеве.
Ваши результаты после курса:
-
- используете язык С++ и объектно-ориентированное программирование
- знакомы с логикой создания игровых движков
- знаете основные подходы к проектированию игр
- практикуете многопоточное программирование для ускорения выполнения программ
- имеете в портфолио собственную 2D-игру -
В финале обучения получите базовый скилсет для старта в геймдеве, а также план по дальнейшему трудоустройству и развитию карьеры.
В ПРОГРАММУ КУРСА ВХОДЯТ
-
С++ Изучите синтаксис и функции С++, овладеете принципами объектно-ориентированного и многопоточного программирования, разберете структуры данных и паттерны, используемые в геймдеве.
-
GAMEDEV Познакомитесь с логикой создания игровых движков, изучите основные подходы к проектированию игр и заполните пробелы в математике, которая необходима для разработки игр.
-
КЕЙС В ПОРТФОЛИО Поделитесь на группы по 3–4 студента и вместе создадите MVP 2D-игры. Прокачаете софт-скилы благодаря работе в команде и добавите первый проект в портфолио.
-
КАРЬЕРНЫЙ БУСТ Получите 4 урока по карьерному развитию от наших HR, благодаря чему составите CV, способное заинтересовать рекрутеров, научитесь представлять себя и отвечать на технические вопросы.
ЛЕКТОР:
Богдан
Левунец
- более 5 лет работает C++ Game Developer в Ubisoft, одной из самых известных компаний по разработке игр, выпустившей Far Cry, Assassin's Creed, Red Steel и т. д.
- имеет опыт работы с ААА-проектами, консолями нового поколения (PS5, XboxS, Nintendo Switch), PC и такими игровыми сервисами, как Stad
- участвовал в поддержке игровой клауд-платформы Amazon Luna и игрового движка Assassin's Creed
- делал кастомизацию, реплеи, квесты, занимался поддержкой внутренних тулзов и аудиофункционала для игры Trials Rising
- имеет опыт менторства интернов во внутренних программах обучения в Ubisoft Kyiv
- регулярно проводит технические интервью и общается с кандидатами на позиции Gameplay Programmer, Unreal Engine Programmer, Generalist Game Developer, поэтому знает, что требуют от джунов и новичков
ПРОГРАММА
-
01
Введение и подготовка
- Поймете назначение языков программирования высокого уровня
- Узнаете, какое применение С++ в геймдеве
- Сможете загрузить и настроить среду разработки (IDE)
- Будете уметь запустить Hello World программу
-
02
Переменные и типы данных
- Узнаете основные примитивные типы данных в С++, их размер, допустимые значения
- Научитесь создавать и инициализировать переменные разных типов
- Поймете различия между константами и обычными переменными
- Сможете создавать тип данных с определенными программистом допустимыми значениями
- Научитесь считывать данные из консоли и выводить данные в консоль с простой обработкой вывода с помощью манипуляторов
- Получите навыки преобразования переменных к различным типам
-
03
Операторы данных
- Изучите арифметические операторы и научитесь использовать их для числовых расчетов
- Узнаете, как работать с операторами присвоения
- Научитесь сравнивать арифметические типы данных
- Поймете, какой приоритет выполнения арифметических и логических операторов в составных выражениях и какие способы изменения приоритетности существуют
- Ознакомитесь с побитовыми операциями
-
04
Разветвления и условия
- Узнаете, зачем и как создавать условные операторы
- Научитесь создавать логические выражения для условных операторов и объединять несколько условных операторов в иерархии выполнения
- Выясните, что такое тернарный оператор и как его использовать
- Научитесь применять switch как альтернативный набор if-else-if блоков
-
05
Система контроля версий Git
- Освоите применение систем контроля версий в программировании над собственным кодом и в команде
- Поймете принцип работы Git
- Научитесь использовать Git для собственных проектов
- Узнаете о типах других систем контроля версий, в частности о популярном в геймдеве Perforce
-
06
Циклы и их применение
- Выясните, что такое цикл и в каких случаях его применять
- Научитесь использовать циклы 3 типов и поймете их особенности
- Узнаете о возможности создания вложенных циклов
- Овладеете способами раннего завершения и продолжения циклов
-
07
Воркшоп: Задачи на циклы и условия
- Поработаете с типичными ошибками и научитесь их фиксировать
- На практике ознакомитесь со способами дебага программы в Visual Studio IDE
-
08
Функции и их создание
- Научитесь создавать функции с произвольным количеством параметров и выходным значением, а также вызывать их для своих потребностей с произвольными параметрами
- Выясните, зачем нужны функции, и зону их доступа
- Сможете создавать глобальные переменные и константы и использовать их в произвольных функциях
- Научитесь определять несколько перезагрузок для функций и добавлять параметры по умолчанию
- Поймете, как создавать хедер-файлы и как подключать их в разных местах программы
-
09
Строки и массивы
- Узнаете, как создать коллекцию однородных данных с использованием одно- и двумерных массивов заранее определенного размера
- Поймете, как массивы хранятся в памяти
- Научитесь модифицировать, обходить все элементы массива
- Сможете использовать C-style строки константного размера
-
10
Ссылки и указатели
- Поймете, что такое ссылка, понятие адреса переменных и указатель
- Узнаете, как получить данные из указателя и получить адрес переменной
- Научитесь передавать как выходные параметры и возвращать из функции ссылки, указатель
- Поймете, зачем передавать в функцию указатели и ссылки
-
11
Алгоритмы. Работа с циклами. Работа с массивами
- Ознакомитесь с разными принципами работы с индексами циклов, вложенными циклами, а также с использованием массивов для практических задач
- Поймете задачу поиска в массиве, способы подхода к нему в зависимости от состояния массива
- Узнаете, что такое сортировка данных и базовые алгоритмы сортировки
-
12
Алгоритмы. Сложность. Поиск. Сортировка
- Ознакомитесь с подходами к оцениванию алгоритмов по разным параметрам
- Поймете задачу поиска в массиве, способы подхода к поиску в зависимости от состояния массива
- Ознакомитесь с задачей сортировки данных и базовых алгоритмов сортировки
-
13
Воркшоп: Работа с функциями, массивами, ссылками, указателями
- Разберете реальные задачи на алгоритмику
- Реализуете алгоритмы поиска и сортировки данных
-
14
Работа с динамической памятью
- Научитесь выделять и очищать произвольное количество памяти для разных типов данных из кучи
- Поймете различие между стеком и кучей
- Ознакомитесь с особенностями создания специальных методов класса и их взаимозависимостью в контексте работы с динамической памятью
- Поймете причины, последствия утечек памяти и возможные способы их решения
-
15
Знакомство со структурами
- Научитесь создавать новые типы данных, которые агрегируют в себе другие переменные
- Сможете пользоваться указателями на структуры
- Научитесь передавать структуры как входные и выходные параметры функций, а также оперировать ими в пределах массивов и составных структур
-
16
Знакомство с ООП. Классы
- Научитесь создавать новые типы данных (классы, структуры)
- Сможете объединять поведение и данные в одном объекте
- Выясните, чем отличаются класс и объект (инстенс) класса
- Ознакомитесь с понятием модификаторов в соответствии с особенностями использования инстенсов класса
- Поймете различия между агрегацией и композицией при добавлении зависимостей между классами
-
17
ООП. Операторы. Статические поля
- Поймете влияние дружественных функций на модификаторы доступа
- Узнаете о понятии статических полей класса, доступе к ним без использования объекта класса
- Научитесь имплементировать и применять на практике перегруженные операторы
-
18
ООП. Наследование и полиморфизм
- Освоите базовые принципы ООП
- Поймете принцип реализации наследования
- Узнаете о принципах полиморфизма, чистых абстрактных функций
- Ознакомитесь с понятием инкапсуляции данных
-
19
ООП. Приведение классов в иерархии. Наследование против композиции
- Поймете способы приведения классов и иерархии и принципиальные различия между ними (статическое против динамического)
- Узнаете о типичных случаях использования наследования и композиции на практике и то, как выбрать подход в зависимости от поставленной задачи
-
20
Воркшоп: Построение мини-игры в консоли с использованием полиморфизма, практика дизайна архитектуры приложений
- Подготовите собственный проект «Настольная игра в Манчкин» и получите фидбек от лектора
-
21
Функциональные объекты
- Поймете понятие функциональных объектов, анонимных функций, лямбд
- Получите навыки передавать параметры в лямбду
- Сможете использовать лямбды для стандартных алгоритмов stl-библиотеки
- Научитесь обертывать функциональные объекты в std::function-объект
-
22
Шаблонное метапрограммирование
- Поймете понятие шаблонов, их необходимость, преимущества и недостатки
- Научитесь создавать шаблонные функции, классы
- Сможете передавать параметры, типы и нетипы
- Будете знать, как изменять поведение шаблонных функций/класса для отдельно определенных типов
- Поймете процесс создания шаблонов на компайл-тайме
- Ознакомитесь на уровне пользователя с библиотекой type-traits
-
23
Библиотека стандартных функций
- Научитесь создавать, использовать структуры данных, std::string-библиотеки стандартных функций
- Поймете различия структур данных и их практическое применение, методы std::string
- Освоите понятие итераторов и их использование для обхода контейнеров, внедрение в стандартных алгоритмах библиотеки STL
- Научитесь использовать набор алгоритмов из стандартной библиотеки функций
-
24
Знакомство с SFML
- Поймете, почему С++ широко используют для разработки игр разной степени сложности
- Изучите основные компоненты, которые должен предоставлять игровой движок для эффективного создания игр
- Ознакомитесь со структурой и модулями библиотеки курсового проекта SFML
- Узнаете о преимуществах и возможностях, которые предоставляет UE для больших команд разработчиков ААА-проектов и инди-игр
-
25
Введение в линейную алгебру в контексте геймдева (векторы, матрицы, преобразование точек)
- Разберете понятие вектора, матрицы и практическое применение в геймдеве
- Научитесь выполнять простые операции над векторами, скалярное и векторное произведение
- Узнаете о базовых матричных преобразованиях векторов
-
26
Графы как структура данных (для геймдева)
- Поймете понятие графа и его структуры (вершины, ребра, вес)
- Узнаете о практическом применении графов, в частности в геймдеве для задач поиска кратчайшего пути, представления сетей, стейт-машин
- Ознакомитесь со способами представления графов и возможной реализации на С++
- Разберете базовые алгоритмы над графами, в частности BFS, DFS
-
27
Многопоточное программирование
- Поймете понятие многопоточности, отличие от параллелизма
- Научитесь создавать треды для выполнения операций в многопоточной среде
- Сможете синхронизировать доступ к общему ресурсу
- Освоите азы работы с памятью с точки зрения атомарности операций
- Ознакомитесь с практическим использованием потоков в геймдеве
-
28
Паттерны проектирования в геймдеве
- Выясните, что такое паттерны проектирования и какое их практическое применение
- Ознакомитесь с паттернами проектирования GoF
- Узнаете о геймдев-специфических паттернах и необходимости их формализации в отдельную группу
-
29
Финальный проект: Выдача курсового проекта
- Ознакомитесь со скелетом курсового проекта с созданным игровым циклом, набором простых игровых объектов с текстурой, реакцией игрового окна и игровых объектов на инпут с клавиатуры и мыши
- Получите задание для финального проекта
-
30
Работа с UI и Game State Pattern и Game State Pattern
- Сможете создавать интерактивный пользовательский интерфейс для игры
- Узнаете, как применять Game State паттерн для изменения состояний игры: работа с уровнями, boss-fight и т. д.
- Узнаете, как реализовать различные UI-меню и переходы между ними с помощью виджетов и Game State паттерна: start-меню, pause-меню, game-over меню и т. д.
- Получите ответы на вопросы по финальному проекту
-
31
Смарт-поинтеры, move-семантика, обзор Unreal Engine
- Изучите основные возможности и инструменты Unreal Engine 5 и сможете использовать эти знания в дальнейшем изучении UE5
- Узнаете о структуре проекта и его ключевых компонентах в Unreal Engine 5
- Узнаете о возможностях смарт-поинтеров для более безопасного взаимодействия с памятью в С++ без значительных перформанс-недостатков
- Освоите концепт move-семантики и выясните, как с помощью этого механизма уменьшить количество копий объектов, соответственно, улучшить оптимизацию программ
-
32
Финальный проект: презентация курсового проекта
- Доработаете игру и представите ее лектору и коллегам
Регистрация