онлайн-курс
32 заняття
С++ ДЛЯ GAMEDEV

Богдан Левунець
Senior C++ GAME DEVELOPER в
Роботи наших студентів
Створення ігор здається магією, якщо не знаєте особливості кодингу та GameDev. Ділимося з вами роботами студентів минулих потоків. І нагадуємо, що на цьому курсі ви також з нуля розробите 4 мінігри та додасте ці проєкти в портфоліо.

до програми курсу входять
Ваші результати після курсу:
-
використовуєте мову С++ та об’єктно-орієнтоване програмування
-
знайомі з логікою створення ігрових рушіїв
-
знаєте основні підходи до проєктування ігор
-
практикуєте багатопотокове програмування для прискорення виконання програм
-
маєте в портфоліо власну 2D-гру
-
отримаєте кар’єрну консультацію та підготуєтеся до технічної співбесіди
У фіналі навчання матимете базовий скілсет для старту в геймдеві, а також план щодо подальшого працевлаштування і розвитку кар’єри.

лектор
Богдан Левунець
Senior C++ Game Developer в Ubisoft
-
понад 5 років працює C++ Game Developer в Ubisoft, одній із найвідоміших компаній із розробки ігор, яка випустила Far Cry, Assassin’s Creed, Red Steel тощо
-
має досвід роботи з ААА-проєктами, консолями нового покоління (PS5, XboxS, Nintendo Switch), PC і такими ігровими сервісами, як-от Stadia
-
брав участь у підтримці ігрової клауд-платформи 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 патерн для зміни станів гри: робота з рівнями, boss-fight тощо
- Дізнаєтеся, як реалізувати різні UI-меню та переходи між ними за допомогою віджетів та Game State патерна: start меню, pause меню, game-over меню тощо
- Отримаєте відповіді на запитання щодо фінального проєкту
-
31 заняття
Смарт-поїнтери, move-семантика, огляд Unreal Engine
- Вивчите основні можливості та інструменти Unreal Engine 5 та зможете використати ці знання в подальшому вивченні UE5
- Дізнаєтеся про структуру проєкту та його ключові компоненти в Unreal Engine 5
- Дізнаєтеся про можливості смарт-пойнтерів для безпечнішої взаємодії з пам’ятю в С++ без значних перформанс-недоліків
- Опануєте концепт move-семантики та дізнаєтеся, як за допомогою цього механізму зменшити кількість копій об’єктів, відповідно покращити оптимізацію програм
-
32 заняття
Фінальний проєкт: презентація курсового проєкту
- Доопрацюєте гру та представите її лектору й колегам
реєстрація
Курс підготовлено для аудиторії 18+ — будь ласка, зважайте на це під час реєстрації.