Профессия Разработчик игр на Unreal Engine 4 Илья Чучалов, Ася Орлова

1 990 руб.
Цена в бонусных баллах: 1990

Описание

Мечтаете создавать крутые игры? Освойте Unreal Engine 4 и начните карьеру в геймдеве. В конце обучения у вас будет 5 проектов в портфолио: арканоид, змейка, однопользовательский и кооперативный топ-даун шутер и кликер для смартфона.
Научитесь создавать игры с нуля на Blueprints и C++, разберётесь в командной разработке, ведении документации и добавите 4 игры в портфолио.
Кому подойдёт этот курс:
- Тем, кто всегда мечтал делать игры
Никогда не писали код? Не страшно, ведь в Unreal Engine 4 большую часть программной логики можно сделать в визуальном редакторе. Когда освоите это, научим хардкорному программированию.
- Начинающим программистам в поиске специализации
Создадите несколько игр на движке UE4. Узнаете, как работать с моделями, камерой, анимацией и эффектами, управлением, напишете клиент-серверную часть мультиплеерной игры. Стартуете с позиции middle-разработчика.
- Опытным разработчикам, которые хотят уйти в геймдев
Познакомитесь с возможностями движка, освоите C++ в UE4, научитесь программировать игровой AI и другие технически сложные вещи. Поймёте, как работает геймдев-команда.
Чему вы научитесь:
- Создавать игры от и до
От прототипа до программных спецэффектов, анимации, игровой физики, AI и написания клиент-серверной части.
- Программировать на Unreal Engine 4 Blueprints
Создавать программную логику с помощью визуального редактора движка UE4.
- Писать на С++ в контексте Unreal Engine 4
Владеть одним из самых актуальных языков программирования, применимого не только в разработке игр.
- Понимать клиент-серверное взаимодействие в UE4
Создавать мультиплеерные игровые проекты: кооперативные игры и большие MMO.
- Работать с системами контроля версий
Вести проекты в Git/SVN/Perforce и других популярных CVS. Это необходимый навык любого разработчика.
- Работать в команде
Понимать регламенты, уметь пользоваться менеджерами задач, эффективно общаться с другими членами команды.
Практическая лаборатория по разработке игр Gamebox
Бесплатно присоединяйтесь к комьюнити лучших студентов геймдев-направления.
Вы получите:
• Навыки командной разработки.
• Опыт разработки своих игр и выполнения задач от геймдев-студий.
• Проекты в портфолио.
• Связи с представителями игровой индустрии.

Программа

Вас ждут 10 блоков с разным уровнем сложности, знание которых можно приравнять к году работы.
45 тематических модулей
63 онлайн-урока
Делаем простой арканоид на Blueprints
01 Создание проекта, интерфейс редактора, базовые операции.
02 Базовые классы, настройки проекта, структура проекта и движка.
03 Как использовать Git при работе в одиночку.
04 Первый блюпринт, компоненты.
05 Переменные, функции, управление потоком в Blueprints.
06 Actor, взаимодействие между Actor.
07 Отладка, тестирование Blueprints.
08 Наследование, массивы.
09 События скриптов (Construction Script, Spawn, Event Dispatcher).
10 Сборка на Blueprints.
Усложняем задачу: пишем арканоид на С++
01 Инструменты C++.
02 Базовый синтаксис C++ и принципы ООП на примере змейки.
03 Змейка: переписываем классы с помощью STL.
04 Создание проекта, создание базовых классов на C++, настройка проекта.
05 Правила создания классов и объектов, заголовки и макросы.
06 Переписываем арканоид на С++.
07 Отладка и тестирование.
08 Сборка.
Делаем шутер с видом сверху (TDS)
01 Создание проекта, настройка проекта, настройка базовой сцены.
02 Разбор дизайн-документа, разработка архитектуры проекта и настройка базовых классов под определенный жанр.
03 Работа с камерой.
04 ООП в UE4: Как строить архитектуру фичи на базе фреймворка.
Создаем окружение
01 Типы ассетов.
02 Импорт различных типов ассетов, правила наименования, структура проекта.
03 Статичные модели (Static Mesh).
04 Модели со скелетной анимацией (Skeletal Mesh).
05 Анимация моделей с помощью инструментов Animation Blueprint, State Machine, Blending.
06 Создание ландшафтов с помощью Landscape.
Разбираемся с основными классами и методами
01 Система событий.
02 Базовый класс Pawn.
03 Механизм процедурных разрушений (Destructable Mesh).
04 Взаимодействие между Actor.
05 Контроллер (Controller).
06 Навигационные данные (Navmesh) и навигация.
07 Получение управления классом Pawn (Possess), создание новых Actor (Spawn).
08 Ссылка на функцию (Delegates).
Настраиваем звук и спецэффекты
01 Анимации.
02 Постэффекты.
03 Частицы.
04 Звуковая система.
Улучшаем игру
01 Коллизии и физика.
02 UI: HUD (Head-Up Display — индикаторы очков жизни, здоровья, опыта, субтитры, указатели прицела и другие наложения), виджеты.
03 UI: UMG (Unreal Motion Graphics — часть возможностей UE4 для быстрого создания интерфейса), возможности рисования на холсте (Canvas).
04 AI: деревья поведения (BehaviorTree).
05 AI: хранение переменных в BlackBoard.
06 Возможности таблицы данных (DataTable).
Делаем сетевую игру
01 Терминология и архитектура репликации в UE4.
02 Выделенный или локальный сервер.
03 Настройка репликации классов.
04 Настройка реплицируемых функций.
05 Смена карты в игре (Server Travel).
Собираем мобильный прототип игры
01 Создание проекта, настройка редактора.
02 Настройка проекта для работы с мобильной платформой.
03 Взаимодействие с другими инструментами.
04 Ограничения мобильных платформ.
05 Отладка и тестирование.
06 Сборка.
Работа в команде
01 Разделение обязанностей.
02 Коммуникации.
', ''], pagination: false }); $('select[name=\'recurring_id\'], input[name="quantity"]').change(function(){ $.ajax({ url: 'index.php?route=product/product/getRecurringDescription', type: 'post', data: $('input[name=\'product_id\'], input[name=\'quantity\'], select[name=\'recurring_id\']'), dataType: 'json', beforeSend: function() { $('#recurring-description').html(''); }, success: function(json) { $('.alert, .text-danger').remove(); if (json['success']) { $('#recurring-description').html(json['success']); } } }); }); $('.date').datetimepicker({ pickTime: false }); $('.datetime').datetimepicker({ pickDate: true, pickTime: true }); $('.time').datetimepicker({ pickDate: false }); $('button[id^=\'button-upload\']').on('click', function() { var node = this; $('#form-upload').remove(); $('body').prepend(''); $('#form-upload input[name=\'file\']').trigger('click'); if (typeof timer != 'undefined') { clearInterval(timer); } timer = setInterval(function() { if ($('#form-upload input[name=\'file\']').val() != '') { clearInterval(timer); $.ajax({ url: 'index.php?route=tool/upload', type: 'post', dataType: 'json', data: new FormData($('#form-upload')[0]), cache: false, contentType: false, processData: false, beforeSend: function() { $(node).button('loading'); }, complete: function() { $(node).button('reset'); }, success: function(json) { $('.text-danger').remove(); if (json['error']) { $(node).parent().find('input').after('
' + json['error'] + '
'); } if (json['success']) { alert(json['success']); $(node).parent().find('input').attr('value', json['code']); } }, error: function(xhr, ajaxOptions, thrownError) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); } }, 500); }); $('#review').delegate('.pagination a', 'click', function(e) { e.preventDefault(); $('#review').fadeOut('slow'); $('#review').load(this.href); $('#review').fadeIn('slow'); }); $('#review').load('index.php?route=product/product/review&product_id=31820'); $('#button-review').on('click', function() { $.ajax({ url: 'index.php?route=product/product/write&product_id=31820', type: 'post', dataType: 'json', data: $(".form-review").serialize(), beforeSend: function() { $('#button-review').button('loading'); }, complete: function() { $('#button-review').button('reset'); }, success: function(json) { $('.alert-success, .alert-danger').remove(); if (json['error']) { get_revpopup_notification('alert-danger', 'Ошибка', json['error']); } if (json['success']) { get_revpopup_notification('alert-success', 'Спасибо за отзыв', json['success']); $('input[name=\'name\']').val(''); $('textarea[name=\'text\']').val(''); $('input[name=\'rating\']:checked').prop('checked', false); $('#post-review-box').slideUp(300); $('#new-review').focus(); $('#open-review-box').fadeIn(100); $('#close-review-box').hide(); $('#ratings-hidden').val(''); $('.stars .glyphicon').removeClass('glyphicon-star').addClass('glyphicon-star-empty'); } } }); }); $('#button-answers').on('click', function() { $.ajax({ url: 'index.php?route=revolution/revstorereview/writeanswer&product_id=31820', type: 'post', dataType: 'json', data: $(".form-answers").serialize(), beforeSend: function() { $('#button-answers').button('loading'); }, complete: function() { $('#button-answers').button('reset'); }, success: function(json) { $('.alert-success, .alert-danger').remove(); if (json['error']) { get_revpopup_notification('alert-danger', 'Ошибка', json['error']); } if (json['success']) { get_revpopup_notification('alert-success', 'Спасибо за вопрос', json['success']); $('input[name=\'name_answer\']').val(''); $('textarea[name=\'text_answer\']').val(''); $('#post-answers-box').slideUp(300); $('#new-answers').focus(); $('#open-answers-box').fadeIn(100); $('#close-answers-box').hide(); } } }); }); $('.thumbnails .main-image').magnificPopup({ type:'image', removalDelay: 170, callbacks: { beforeOpen: function() { this.st.mainClass = 'mfp-zoom-in'; }, open: function() { $('body').addClass('razmiv2'); $('#pagefader2').fadeIn(70); if (document.body.scrollHeight > document.body.offsetHeight) { } }, close: function() { $('body').removeClass('razmiv2'); $('#pagefader2').fadeOut(70); $('#top3').css('right', 'initial'); } } }); $('.thumbnails .images-additional').magnificPopup({ type:'image', delegate: 'a', gallery: { enabled:true }, removalDelay: 170, callbacks: { beforeOpen: function() { this.st.mainClass = 'mfp-zoom-in'; }, open: function() { $('body').addClass('razmiv2'); $('#pagefader2').fadeIn(70); if (document.body.scrollHeight > document.body.offsetHeight) { } }, close: function() { $('body').removeClass('razmiv2'); $('#pagefader2').fadeOut(70); $('#top3').css('right', 'initial'); } } }); $('.thumbnails .main-image img').click(function(){ if ($('.images-additional').length > 0) { var startnumber = $(this).parent().attr('data-number'); $('.images-additional').magnificPopup('open', startnumber); return false } else { $('.main-image').magnificPopup('open'); return false } }); function get_revpopup_cart_quantity() { input_val = $('.product-info.product_informationss .plus-minus').val(); quantity = parseInt(input_val); return quantity; } function validate_pole(val, product_id, znak, minimumvalue, maximumvalue) { val.value = val.value.replace(/[^\d,]/g, ''); if (val.value == '') val.value = minimumvalue; maximumvalue = Number($('.product_informationss .pr_quantity').text()); if (maximumvalue < 1) maximumvalue = 9999; input_val = $('.product-info.product_informationss .plus-minus'); quantity = parseInt(input_val.val()); if(znak=='+') input_val.val(quantity+1); else if(znak=='-' && input_val.val() > minimumvalue) input_val.val(quantity-1); else if(znak=='=' && input_val.val() > minimumvalue) input_val.val(input_val.val()); if (quantity < 1 || quantity < minimumvalue) { input_val.val(minimumvalue); val.value = minimumvalue; } update_quantity(product_id, input_val.val()); } function update_quantity(product_id, quantity) { var minimumvalue = 1; if (quantity == 0 || quantity < minimumvalue) { quantity = $('.product-info.product_informationss .plus-minus').val(minimumvalue); return; } else if (quantity < 1) { quantity = 1; return; } data = $('.product-info.product_informationss input[type=\'text\'], .product-info.product_informationss input[type=\'hidden\'], .product-info.product_informationss input[type=\'radio\']:checked, .product-info.product_informationss input[type=\'checkbox\']:checked, .product-info.product_informationss select, .product-info.product_informationss textarea'), $.ajax({ url: 'index.php?route=product/product/update_prices', type: 'post', dataType: 'json', data: data.serialize() + '&product_id=' + product_id + '&quantity=' + quantity, success: function(json) { var end_quantity = json['points']; var start_quantity = parseFloat($('.product_informationss .pr_points').html().replace(/\s*/g,'')); $({val:start_quantity}).animate({val:end_quantity}, { duration: 500, easing: 'swing', step: function(val) { $('.product_informationss .pr_points').html(number_format(val, product_id)); } }); var price = json['price_n']; var start_price = parseFloat($('.product_informationss .update_price').html().replace(/\s*/g,'')); $({val:start_price}).animate({val:price}, { duration: 500, easing: 'swing', step: function(val) { $('.product_informationss .update_price').html(price_format(val)); } }); var special = json['special_n']; var start_special = parseFloat($('.product_informationss .update_special').html().replace(/\s*/g,'')); $({val:start_special}).animate({val:special}, { duration: 500, easing: 'swing', step: function(val) { $('.product_informationss .update_special').html(price_format(val)); } }); } }); } function update_prices_product(product_id, minimumvalue) { input_val = $('.product-info.product_informationss .plus-minus').val(); if (input_val > minimumvalue) { input_val = minimumvalue; $('.product-info.product_informationss .plus-minus').val(minimumvalue); } quantity = parseInt(input_val); data = $('.product-info.product_informationss input[type=\'text\'], .product-info.product_informationss input[type=\'hidden\'], .product-info.product_informationss input[type=\'radio\']:checked, .product-info.product_informationss input[type=\'checkbox\']:checked, .product-info.product_informationss select, .product-info.product_informationss textarea'); $.ajax({ type: 'post', url: 'index.php?route=product/product/update_prices', data: data.serialize() + '&product_id=' + product_id + '&quantity=' + quantity, dataType: 'json', success: function(json) { $('.product_informationss .thumbnails a.main-image').attr('href', json['opt_image_2_big']); $('.product_informationss .thumbnails a.main-image img').attr('src', json['opt_image_2']); $('.product_informationss .thumbnails .images-additional .owl-item:first-child a').attr('href', json['opt_image_2_big']); $('.product_informationss .thumbnails .images-additional .owl-item:first-child a img').attr('src', json['opt_image_2']).css('width', 100).css('height', 100); var end_quantity = json['option_quantity']; var start_quantity = parseFloat($('.product_informationss .pr_quantity').html().replace(/\s*/g,'')); $({val:start_quantity}).animate({val:end_quantity}, { duration: 500, easing: 'swing', step: function(val) { $('.product_informationss .pr_quantity').html(number_format(val, product_id)); } }); var end_quantity = json['points']; var start_quantity = parseFloat($('.product_informationss .pr_points').html().replace(/\s*/g,'')); $({val:start_quantity}).animate({val:end_quantity}, { duration: 500, easing: 'swing', step: function(val) { $('.product_informationss .pr_points').html(number_format(val, product_id)); } }); var price = json['price_n']; var start_price = parseFloat($('.product_informationss .update_price').html().replace(/\s*/g,'')); $({val:start_price}).animate({val:price}, { duration: 500, easing: 'swing', step: function(val) { $('.product_informationss .update_price').html(price_format(val)); } }); var special = json['special_n']; var start_special = parseFloat($('.product_informationss .update_special').html().replace(/\s*/g,'')); $({val:start_special}).animate({val:special}, { duration: 500, easing: 'swing', step: function(val) { $('.product_informationss .update_special').html(price_format(val)); } }); } }); } function price_format(n) { c = 0; d = '.'; t = ' '; s_left = ''; s_right = ' руб.'; n = n * 1.00000000; i = parseInt(n = Math.abs(n).toFixed(c)) + ''; j = ((j = i.length) > 3) ? j % 3 : 0; return s_left + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : '') + s_right; } function weight_format(n, product_id) { c = 2; d = '.'; t = ','; i = parseInt(n = Math.abs(n).toFixed(c)) + ''; j = ((j = i.length) > 3) ? j % 3 : 0; return (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ''); } function number_format(n, product_id) { i = parseInt(n = Math.abs(n).toFixed(0)) + ''; return i; } $('.product_related .owlproduct').owlCarousel({ items: 1, singleItem: true, mouseDrag: false, touchDrag: false, autoPlay: false, navigation: true, navigationText: ['', ''], pagination: false }); $('.viewed_products .owlproduct').owlCarousel({ items: 1, singleItem: true, mouseDrag: false, touchDrag: false, autoPlay: false, navigation: true, navigationText: ['', ''], pagination: false }); -->