SlideShare a Scribd company logo
Data-Driven
Gameplay in
Unreal Engine 4
ABOUT ME
I AM ANDREY DYAKOV
Associate Technical Director at Sperasoft with 8 years of
game development experience. During my career I worked
with many game engines including Unity, UDK, Unreal
Engine 4 and other proprietary game engines from well
known studios.
email: Andrey.Dyakov@sperasoft.com
skype: a__dyakov
Data-Driven Gameplay
Short theory
1
Data-Driven парадигма
◦ Абстрактные типы данных
◦ Данные вынесены в отдельный слой
◦ Ход исполнения определяется данными
Плюсы Data-Driven дизайна
◦ Переиспользование кода
◦ Код проще в обслуживании
◦ Ускоренная разработка функционала
◦ Удобная работа с данными
◦ Синхронизация данных в рантайме
Composition over Inheritance
◦ Сущность является контейнером компонентов
◦ Компоненты определяют поведение объекта
◦ Данные описывает компоненты объекта
◦ Данные определяют иерархию сущностей
Classic OOP: Inheritance
◦ Поведение
расширяется
наследниками
◦ Объект управляет
данными
◦ Данные могут
передаваться по
иерархии
Composition & Inheritance in UE4
◦ Система компонентов
◦ Фабрики
◦ Gameplay тэги
◦ DataTables
◦ DataCurves
◦ еtc
Composition & Inheritance in UE4
Composition & Inheritance in UE4
Data Organization in UE4
Data types, ways to work, synchronozation
2
UE4 documentation about DDG
UE4 Data Containers
UE4 Data Containers
UE4 Data Containers
Data Table
◦ Source: csv, xls
◦ Doesn’t require
C++
◦ Binary object
◦ Flat structure
◦ Can’t be synced
or reimported at
Runtime
◦ Special Getters for
data
◦ Two sources of
truth
Data Curves
◦ Source: csv, xls
◦ Doesn’t require
C++
◦ Best for
progressions
◦ Binary object
◦ Can’t be synced
or reimported at
Runtime
◦ Only floating point
types
◦ Special Getters for
data
Data Asset
◦ Any type of data
◦ Hierarchical
structure
◦ It’s object with
properties
◦ Can be synced at
runtime
◦ Any UE4 type
◦ Binary object
◦ Requires C++
UE4 Data Containers
Simple game design case
◦ Набор уровней разделенный на главы
◦ Можно заработать три звезды за уровень
◦ У каждой звезды свои требование
◦ Главы или уровни могут быть
разблокированы если выполнены их
требования
◦ Уровень может содержать
коллекционные предметы, секреты и т.д.
Simple game design case
Working with Data Table
Working with Data Asset
Working with Data Asset
Working with Data Asset
Working with Data Asset
Working with Data Asset
Working with Data Asset
Data Synchronization
FLevelInfo LevelInfo;
FJsonObjectConverter::JsonObjectStringToUStruct<FLevelInfo>
(JsonObject, &LevelInfo, 0, 0);
Thanks!
ANY QUESTIONS?
You can find me at
email: Andrey.Dyakov@sperasoft.com
skype: a__dyakov

More Related Content

What's hot

Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Yandex
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
 
Алексей Кирпичников — Как хранить логи сервиса в базе данных и не погубить пр...
Алексей Кирпичников — Как хранить логи сервиса в базе данных и не погубить пр...Алексей Кирпичников — Как хранить логи сервиса в базе данных и не погубить пр...
Алексей Кирпичников — Как хранить логи сервиса в базе данных и не погубить пр...
Yandex
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Ontico
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
Ontico
 
Ещё один поиск Яндекса
Ещё один поиск ЯндексаЕщё один поиск Яндекса
Ещё один поиск Яндекса
Alexander Koshelev
 

What's hot (6)

Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
Алексей Андросов "Архитектура фронтенда Яндекс.Почты"
 
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий НасретдиновОбзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
 
Алексей Кирпичников — Как хранить логи сервиса в базе данных и не погубить пр...
Алексей Кирпичников — Как хранить логи сервиса в базе данных и не погубить пр...Алексей Кирпичников — Как хранить логи сервиса в базе данных и не погубить пр...
Алексей Кирпичников — Как хранить логи сервиса в базе данных и не погубить пр...
 
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
Переезжаем на Yandex ClickHouse / Александр Зайцев (LifeStreet)
 
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
ClickHouse: очень быстро и очень удобно / Виктор Тарнавский, Алексей Миловидо...
 
Ещё один поиск Яндекса
Ещё один поиск ЯндексаЕщё один поиск Яндекса
Ещё один поиск Яндекса
 

Similar to Data Driven Gameplay in UE4

“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
HYS Enterprise
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоStanfy
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
Vyacheslav Nikulin
 
Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движков
DevGAMM Conference
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Ontico
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012InTRUEdeR
 
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
Mail.ru Group
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON
 
Мультиплатформенная синхронизация структурированных данных
Мультиплатформенная синхронизация структурированных данныхМультиплатформенная синхронизация структурированных данных
Мультиплатформенная синхронизация структурированных данных
CodeFest
 
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
HappyDev
 
My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014
Alex Chistyakov
 
Миграция JIRA - безобразие или безрассудство
Миграция JIRA - безобразие или безрассудствоМиграция JIRA - безобразие или безрассудство
Миграция JIRA - безобразие или безрассудство
SQALab
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
Илья Середа
 
Convert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at VizorConvert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at Vizor
DevGAMM Conference
 
Использование распределённой очереди задач для обработки данных в бекенде спо...
Использование распределённой очереди задач для обработки данных в бекенде спо...Использование распределённой очереди задач для обработки данных в бекенде спо...
Использование распределённой очереди задач для обработки данных в бекенде спо...
Yandex
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Ontico
 
Логгирование. Зачем? Когда? Сколько?
Логгирование. Зачем? Когда? Сколько?Логгирование. Зачем? Когда? Сколько?
Логгирование. Зачем? Когда? Сколько?
Ivan Fedorov
 
C++ для web с помощью Emscripten
C++ для web с помощью EmscriptenC++ для web с помощью Emscripten
C++ для web с помощью Emscripten
corehard_by
 
Squeek 1
Squeek 1Squeek 1
Squeek 1
Oleg Parinov
 

Similar to Data Driven Gameplay in UE4 (20)

“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
“Tips&Tricks&Antitricks with .Net Core backend in GameDev”
 
И снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел ТайкалоИ снова разработка под iOS. Павел Тайкало
И снова разработка под iOS. Павел Тайкало
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
 
Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движков
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
 
What's new in Visual Studio 2012
What's new in Visual Studio 2012What's new in Visual Studio 2012
What's new in Visual Studio 2012
 
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
Юрий Крутилин. Инструментарий для реверс-инжиниринга Android-приложений
 
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли UnitySECON'2016. Чубарь Алексей, Мобильные грабли Unity
SECON'2016. Чубарь Алексей, Мобильные грабли Unity
 
Мультиплатформенная синхронизация структурированных данных
Мультиплатформенная синхронизация структурированных данныхМультиплатформенная синхронизация структурированных данных
Мультиплатформенная синхронизация структурированных данных
 
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
2014.12.06 03 Александр Чистяков — Устройство object storage на примере LeoFS
 
My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014My talk on LeoFS, HappyDev 2014
My talk on LeoFS, HappyDev 2014
 
Миграция JIRA - безобразие или безрассудство
Миграция JIRA - безобразие или безрассудствоМиграция JIRA - безобразие или безрассудство
Миграция JIRA - безобразие или безрассудство
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
Convert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at VizorConvert this: peculiarities of cross-platform mobile game development at Vizor
Convert this: peculiarities of cross-platform mobile game development at Vizor
 
Использование распределённой очереди задач для обработки данных в бекенде спо...
Использование распределённой очереди задач для обработки данных в бекенде спо...Использование распределённой очереди задач для обработки данных в бекенде спо...
Использование распределённой очереди задач для обработки данных в бекенде спо...
 
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
Как мы храним и анализируем большой социальный граф, Максим Бартенев (Норси-т...
 
Логгирование. Зачем? Когда? Сколько?
Логгирование. Зачем? Когда? Сколько?Логгирование. Зачем? Когда? Сколько?
Логгирование. Зачем? Когда? Сколько?
 
C++ для web с помощью Emscripten
C++ для web с помощью EmscriptenC++ для web с помощью Emscripten
C++ для web с помощью Emscripten
 
Squeek 1
Squeek 1Squeek 1
Squeek 1
 
Js fuckworks
Js fuckworksJs fuckworks
Js fuckworks
 

More from Sperasoft

особенности работы с Locomotion в Unreal Engine 4
особенности работы с Locomotion в Unreal Engine 4особенности работы с Locomotion в Unreal Engine 4
особенности работы с Locomotion в Unreal Engine 4
Sperasoft
 
концепт и архитектура геймплея в Creach: The Depleted World
концепт и архитектура геймплея в Creach: The Depleted Worldконцепт и архитектура геймплея в Creach: The Depleted World
концепт и архитектура геймплея в Creach: The Depleted World
Sperasoft
 
Опыт разработки VR игры для UE4
Опыт разработки VR игры для UE4Опыт разработки VR игры для UE4
Опыт разработки VR игры для UE4
Sperasoft
 
Организация работы с UE4 в команде до 20 человек
Организация работы с UE4 в команде до 20 человек Организация работы с UE4 в команде до 20 человек
Организация работы с UE4 в команде до 20 человек
Sperasoft
 
Gameplay Tags
Gameplay TagsGameplay Tags
Gameplay Tags
Sperasoft
 
Code and Memory Optimisation Tricks
Code and Memory Optimisation Tricks Code and Memory Optimisation Tricks
Code and Memory Optimisation Tricks
Sperasoft
 
The theory of relational databases
The theory of relational databasesThe theory of relational databases
The theory of relational databases
Sperasoft
 
Automated layout testing using Galen Framework
Automated layout testing using Galen FrameworkAutomated layout testing using Galen Framework
Automated layout testing using Galen Framework
Sperasoft
 
Sperasoft talks: Android Security Threats
Sperasoft talks: Android Security ThreatsSperasoft talks: Android Security Threats
Sperasoft talks: Android Security Threats
Sperasoft
 
Sperasoft Talks: RxJava Functional Reactive Programming on Android
Sperasoft Talks: RxJava Functional Reactive Programming on AndroidSperasoft Talks: RxJava Functional Reactive Programming on Android
Sperasoft Talks: RxJava Functional Reactive Programming on Android
Sperasoft
 
Sperasoft‬ talks j point 2015
Sperasoft‬ talks j point 2015Sperasoft‬ talks j point 2015
Sperasoft‬ talks j point 2015
Sperasoft
 
Effective Мeetings
Effective МeetingsEffective Мeetings
Effective Мeetings
Sperasoft
 
Unreal Engine 4 Introduction
Unreal Engine 4 IntroductionUnreal Engine 4 Introduction
Unreal Engine 4 Introduction
Sperasoft
 
JIRA Development
JIRA DevelopmentJIRA Development
JIRA Development
Sperasoft
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
Sperasoft
 
MOBILE DEVELOPMENT with HTML, CSS and JS
MOBILE DEVELOPMENT with HTML, CSS and JSMOBILE DEVELOPMENT with HTML, CSS and JS
MOBILE DEVELOPMENT with HTML, CSS and JS
Sperasoft
 
Quick Intro Into Kanban
Quick Intro Into KanbanQuick Intro Into Kanban
Quick Intro Into Kanban
Sperasoft
 
ECMAScript 6 Review
ECMAScript 6 ReviewECMAScript 6 Review
ECMAScript 6 Review
Sperasoft
 
Console Development in 15 minutes
Console Development in 15 minutesConsole Development in 15 minutes
Console Development in 15 minutes
Sperasoft
 
Database Indexes
Database IndexesDatabase Indexes
Database Indexes
Sperasoft
 

More from Sperasoft (20)

особенности работы с Locomotion в Unreal Engine 4
особенности работы с Locomotion в Unreal Engine 4особенности работы с Locomotion в Unreal Engine 4
особенности работы с Locomotion в Unreal Engine 4
 
концепт и архитектура геймплея в Creach: The Depleted World
концепт и архитектура геймплея в Creach: The Depleted Worldконцепт и архитектура геймплея в Creach: The Depleted World
концепт и архитектура геймплея в Creach: The Depleted World
 
Опыт разработки VR игры для UE4
Опыт разработки VR игры для UE4Опыт разработки VR игры для UE4
Опыт разработки VR игры для UE4
 
Организация работы с UE4 в команде до 20 человек
Организация работы с UE4 в команде до 20 человек Организация работы с UE4 в команде до 20 человек
Организация работы с UE4 в команде до 20 человек
 
Gameplay Tags
Gameplay TagsGameplay Tags
Gameplay Tags
 
Code and Memory Optimisation Tricks
Code and Memory Optimisation Tricks Code and Memory Optimisation Tricks
Code and Memory Optimisation Tricks
 
The theory of relational databases
The theory of relational databasesThe theory of relational databases
The theory of relational databases
 
Automated layout testing using Galen Framework
Automated layout testing using Galen FrameworkAutomated layout testing using Galen Framework
Automated layout testing using Galen Framework
 
Sperasoft talks: Android Security Threats
Sperasoft talks: Android Security ThreatsSperasoft talks: Android Security Threats
Sperasoft talks: Android Security Threats
 
Sperasoft Talks: RxJava Functional Reactive Programming on Android
Sperasoft Talks: RxJava Functional Reactive Programming on AndroidSperasoft Talks: RxJava Functional Reactive Programming on Android
Sperasoft Talks: RxJava Functional Reactive Programming on Android
 
Sperasoft‬ talks j point 2015
Sperasoft‬ talks j point 2015Sperasoft‬ talks j point 2015
Sperasoft‬ talks j point 2015
 
Effective Мeetings
Effective МeetingsEffective Мeetings
Effective Мeetings
 
Unreal Engine 4 Introduction
Unreal Engine 4 IntroductionUnreal Engine 4 Introduction
Unreal Engine 4 Introduction
 
JIRA Development
JIRA DevelopmentJIRA Development
JIRA Development
 
Introduction to Elasticsearch
Introduction to ElasticsearchIntroduction to Elasticsearch
Introduction to Elasticsearch
 
MOBILE DEVELOPMENT with HTML, CSS and JS
MOBILE DEVELOPMENT with HTML, CSS and JSMOBILE DEVELOPMENT with HTML, CSS and JS
MOBILE DEVELOPMENT with HTML, CSS and JS
 
Quick Intro Into Kanban
Quick Intro Into KanbanQuick Intro Into Kanban
Quick Intro Into Kanban
 
ECMAScript 6 Review
ECMAScript 6 ReviewECMAScript 6 Review
ECMAScript 6 Review
 
Console Development in 15 minutes
Console Development in 15 minutesConsole Development in 15 minutes
Console Development in 15 minutes
 
Database Indexes
Database IndexesDatabase Indexes
Database Indexes
 

Data Driven Gameplay in UE4