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

Data Driven Gameplay in UE4