SlideShare a Scribd company logo
Blueprint против С++
в UE4
Горбачев Леонид
OctoBox Interactive
Команда и проекты
• Разрабатываем на UE4 c 2015
• Несколько проектов в разработке
• Мультиплеерный шутер Project Echo
• VR шутер High Noon
Blueprint vs. C++ in UE4
Blueprint vs. C++ in UE4
Что такое Blueprint?
• Функциональный язык
• ООП язык
• Событийно-ориентированный язык
• Визуальный язык
• Наследник Kismet и UnrealScript
Verilog Blueprint
Blueprint
Плюсы
• Быстрая компиляция
• Геймплей-код
• Прототипирование
Минусы
• Тяжело мержить (исправляется архитектурой или Perforce)
• Тяжело рефакторить (фантомные боли)
Blueprint vs. C++ in UE4
Blueprint vs. C++ in UE4
Blueprint vs. C++ in UE4
Пример безумного кода
Blueprints для нашей команды
• В Project Echo и других наших проектах мы активно используем
оба языка
• Геймдизайнеры не пишут код, но могут поправить
• Есть скриптеры-интеграторы, пишут на BP
• Программисты много пишут на BP
С++ в UE4
• Не тот С++, к которому вы привыкли
• Мощный фреймворк
• Сопутствующий модули, плагины
• Атрибуты и макросы
• Не нужно управлять памятью
• Расширение возможностей BP
Blueprint vs. C++ in UE4
Сравнительная таблица
Противоречия в идеологии
Противоречия при написании на C++ и BP
• События в BP – это функции (void)
• События в BP не имеют выхода из таймлайна
• События в BP – это события (аналогичные С#-вым)
• Функция может хранить локальную переменную
• События-события объединены в диспатчер
• В BP любые события можно привязать через делегат
C++BP
Общие правила
• Суперклассы в BP – все еще плохо
• Для совместной работы нужен строгий полиси
• Активное использование паттерна “компонента”
• Активное использование событий
• Интерфейсы (полиморфизм)
• Максимальная открытость (анти-инкапсуляция)
Пайплайн разработки геймплейных фичей
1. Создаем базовые классы на C++
2. Открываем для управления максимальное кол-во полей,
обезопашиваем
3. Делаем функции перегруженными
4. Пишем базовые экторы и компоненты
5. Создаем решение с минимальным функционалом на BP
6. Передаем скриптерам и геймдизайнерам полученный каркас
7. Скриптеры и геймдизайнеры пользуются “конструктором”
С вами был Леонид Горбачев,
время задавать вопросы.
Почта: leonid.gorbachev@octoboxint.com

More Related Content

PPTX
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)
PDF
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
PDF
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
PDF
Flutter: No more boring apps! - UA Mobile 2019
PDF
Xamarin. Кроссплатформенная мобильная разработка на C# @ ForkConf
PDF
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
PDF
Гибкие методики разработки. Кто их придумал и почему
PDF
Терминология как основной способ поиска разработчиков или как не опозорится п...
Успешный кейс использования React Native в продакшне, Евгений Федоров (LOOKBUCK)
Библиотека UI компонентов, о которой вы всегда мечтали / Роберт Харитонов (Li...
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
Flutter: No more boring apps! - UA Mobile 2019
Xamarin. Кроссплатформенная мобильная разработка на C# @ ForkConf
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Гибкие методики разработки. Кто их придумал и почему
Терминология как основной способ поиска разработчиков или как не опозорится п...

More from DevGAMM Conference (20)

PPTX
The art of small steps, or how to make sound for games in conditions of war /...
PPTX
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
PPTX
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
PPTX
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
PPTX
AI / ML for Indies / Tyler Coleman (Retora Games)
PDF
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
PPTX
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
PDF
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
PDF
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
PDF
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
PDF
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
PDF
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
PDF
How to increase wishlists & game sales from China? Growth marketing tactics &...
PDF
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
PDF
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
PPTX
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
PDF
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
PPTX
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
PPTX
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
PPTX
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
The art of small steps, or how to make sound for games in conditions of war /...
Breaking up with FMOD - Why we ended things and embraced Metasounds / Daniel ...
How Audio Objects Improve Spatial Accuracy / Mads Maretty Sønderup (Audiokine...
Why indie developers should consider hyper-casual right now / Igor Gurenyov (...
AI / ML for Indies / Tyler Coleman (Retora Games)
Agility is the Key: Power Up Your GameDev Project Management with Agile Pract...
New PR Tech and AI Tools for 2023: A Game Changer for Outreach / Kirill Perev...
Playable Ads - Revolutionizing mobile games advertising / Jakub Kukuryk (Popc...
Creative Collaboration: Managing an Art Team / Nastassia Radzivonava (Glera G...
From Local to Global: Unleashing the Power of Payments / Jan Kuhlmannn (Xsolla)
Strategies and case studies to grow LTV in 2023 / Julia Iljuk (Balancy)
Why is ASO not working in 2023 and how to change it? / Olena Vedmedenko (Keya...
How to increase wishlists & game sales from China? Growth marketing tactics &...
Turkish Gaming Industry and HR Insights / Mustafa Mert EFE (Zindhu)
Building an Awesome Creative Team from Scratch, Capable of Scaling Up / Sasha...
Seven Reasons Why Your LiveOps Is Not Performing / Alexander Devyaterikov (Be...
The Power of Game and Music Collaborations: Reaching and Engaging the Masses ...
Branded Content: How to overcome players' immunity to advertising / Alex Brod...
Resurrecting Chasm: The Rift - A Source-less Remastering Journey / Gennadii P...
How NOT to do showcase events: Behind the scenes of Midnight Show / Andrew Ko...
Ad

Blueprint vs. C++ in UE4

  • 1. Blueprint против С++ в UE4 Горбачев Леонид OctoBox Interactive
  • 2. Команда и проекты • Разрабатываем на UE4 c 2015 • Несколько проектов в разработке • Мультиплеерный шутер Project Echo • VR шутер High Noon
  • 5. Что такое Blueprint? • Функциональный язык • ООП язык • Событийно-ориентированный язык • Визуальный язык • Наследник Kismet и UnrealScript
  • 7. Blueprint Плюсы • Быстрая компиляция • Геймплей-код • Прототипирование Минусы • Тяжело мержить (исправляется архитектурой или Perforce) • Тяжело рефакторить (фантомные боли)
  • 12. Blueprints для нашей команды • В Project Echo и других наших проектах мы активно используем оба языка • Геймдизайнеры не пишут код, но могут поправить • Есть скриптеры-интеграторы, пишут на BP • Программисты много пишут на BP
  • 13. С++ в UE4 • Не тот С++, к которому вы привыкли • Мощный фреймворк • Сопутствующий модули, плагины • Атрибуты и макросы • Не нужно управлять памятью • Расширение возможностей BP
  • 16. Противоречия в идеологии Противоречия при написании на C++ и BP • События в BP – это функции (void) • События в BP не имеют выхода из таймлайна • События в BP – это события (аналогичные С#-вым) • Функция может хранить локальную переменную • События-события объединены в диспатчер • В BP любые события можно привязать через делегат
  • 17. C++BP
  • 18. Общие правила • Суперклассы в BP – все еще плохо • Для совместной работы нужен строгий полиси • Активное использование паттерна “компонента” • Активное использование событий • Интерфейсы (полиморфизм) • Максимальная открытость (анти-инкапсуляция)
  • 19. Пайплайн разработки геймплейных фичей 1. Создаем базовые классы на C++ 2. Открываем для управления максимальное кол-во полей, обезопашиваем 3. Делаем функции перегруженными 4. Пишем базовые экторы и компоненты 5. Создаем решение с минимальным функционалом на BP 6. Передаем скриптерам и геймдизайнерам полученный каркас 7. Скриптеры и геймдизайнеры пользуются “конструктором”
  • 20. С вами был Леонид Горбачев, время задавать вопросы. Почта: leonid.gorbachev@octoboxint.com

Editor's Notes

  • #2: Producer студии Octobox, ранее CTO, ранее просто программист на UE4 Сегодня я расскажу о нашем опыте при использовании обоих языков, чтобы когда вы начинали новый проект вам было проще решить, где какой язык использовать.
  • #3: Я представляю команду из Санкт-Петербурга, мы работаем на UE c 2015. В нашем портфолио Vr shooter High Noon и мультиплеерный шутер Project Echo. А так же несколько проектов находится в ранней стадии разработки. Из команды в 7 человек мы выросли в 25 и продолжаем расти. Большая часть команды активно использует движок для интеграции фичей.
  • #4: High Noon был разработан на BP на 95%
  • #5: Project Echo на BP на 70%
  • #6: Идеологически UE4 был подготовлен для того чтобы быстро и эффективно разрабатывать игры, быстро прототипипрвать, быстро запускать, быстро собирать. Быстро исправлять ошибки. Помимо этого нужно было специфицировать какой-то скриптовой язык, который бы обслуживал все задачи всех подсистем языка. Он везде UMG, Game logic, Animations, Material editor, Sound designer
  • #7: С++ снобизм Визуальные языки программирования давняя мечта Попытка сделать программирование еще проще и еще доступнее. Workflow от Microsoft, Самый масштабный пример: Verilog и VHDL (сами по себе имею текстовое представление, но Очень похож на языки разработки аппаратуры Ну и само собой Kismet Конфликт в играх в том что функциональные языки подразумевают последовательность, так как выросли из машины тюринга, а ировые вселенные имеют множество одновременных событий которые одновременно обрабатываются, как это бывает в аппаратуре, множество назевисимо обрабатываемых сигналов. В блюпринте такой конфликт перестает чуствоваться. Ты декларируешь конфигурацию, а потом быстро собираешь и пробуешь систему на разные раздражители.
  • #9: Часть работы - это делать красиво Искусство расставлять пинки Спагетти код еще более спагетти Пример спагетти кода
  • #10: Пример красивого кода Новый вид искусства
  • #11: Еще один пример
  • #14: Это более верное название тех плюсов с которыми вы столкнетесь. Дело в том что С++ в UE4 оброс огромным кол-ом макросов и библиотек. А сам фреймворк берет на себя задачу управления памятью, так что код похож на нечто иное (сделать фото кода).
  • #18: BP и C++ как котопес: блохи одинаково плохи и там и там