ݺߣ

ݺߣShare a Scribd company logo
Gameplay Tags
Что мы можем сделать с тегами?
Типы урона и сопротивления к ним
Что мы можем сделать с тегами?
Типы урона и сопротивления к ним
Точки интереса
Что мы можем сделать с тегами?
Типы урона и сопротивления к ним
Точки интереса
Задания
Что мы можем сделать с тегами?
Типы урона и сопротивления к ним
Точки интереса
Задания
Достижения
Что мы можем сделать с тегами?
Типы урона и сопротивления к ним
Точки интереса
Задания
Достижения
Всё, на что способно ваше воображение!
Избегаем лишние Cast’ы
Избегаем лишние Cast’ы
Избегаем лишние Cast’ы
Actor/Component Tags
Системы для работы с тегами
Gameplay Tags
Actor/Component Tags
Actor Tags Component Tags
Actor/Component Tags
Actor/Component Tags
Actor/Component Tags
Gameplay Tags
Gameplay Tags
DefaultEngine.ini
[Gameplay Tags]
ImportTagsFromConfig=true;
UE 4.13 UE 4.15
Gameplay Tags
UE 4.13 UE 4.15
Gameplay Tags
из *.INI
Gameplay Tags
из *.INI из DataTable
Gameplay Tags
Gameplay Tags
Gameplay Tags в 4.13
Gameplay Tags в 4.13
Gameplay Tags в 4.13
Gameplay Tags в 4.13
Gameplay Tags в 4.13
using UnrealBuildTool;
public class BP : ModuleRules
{
public BP(TargetInfo Target)
{
PublicDependencyModuleNames.AddRange(new string[]
{
"Core", "CoreUObject", "Engine", "InputCore", "UMG",
“GameplayTags”,
});
}
}
Gameplay Tags в 4.13
class BP_API AGameplayTagsAcot : public Actor, public
IGameplayTagAssetInterface
Gameplay Tags в 4.13
class BP_API AGameplayTagsAcot : public Actor, public
IGameplayTagAssetInterface
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "GameplayTags")
FGameplayTagContainer GameplayTagContainer;
Gameplay Tags в 4.13
class BP_API AGameplayTagsAcot : public Actor, public
IGameplayTagAssetInterface
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "GameplayTags")
FGameplayTagContainer GameplayTagContainer;
virtual void GetOwnedGameplayTags(FGameplayTagContainer& TagContainer)
const override
{ TagContainer = GameplayTags; return; }
Gameplay Tags
Gameplay Tag Gameplay Tag Container
Gameplay Tags
Gameplay Tags
Gameplay Tags
Gameplay Tags
ВСЕМ СПАСИБО!
Ad

Recommended

TopGear Russia: video 2013
TopGear Russia: video 2013
Sergei Talykov
Rubylight programming contest
Rubylight programming contest
Dmitry Buzdin
особенности работы с Locomotion в Unreal Engine 4
особенности работы с Locomotion в Unreal Engine 4
Sperasoft
концепт и архитектура геймплея в Creach: The Depleted World
концепт и архитектура геймплея в Creach: The Depleted World
Sperasoft
Опыт разработки VR игры для UE4
Опыт разработки VR игры для UE4
Sperasoft
Организация работы с UE4 в команде до 20 человек
Организация работы с UE4 в команде до 20 человек
Sperasoft
Data Driven Gameplay in UE4
Data Driven Gameplay in UE4
Sperasoft
Code and Memory Optimisation Tricks
Code and Memory Optimisation Tricks
Sperasoft
The theory of relational databases
The theory of relational databases
Sperasoft
Automated layout testing using Galen Framework
Automated layout testing using Galen Framework
Sperasoft
Sperasoft 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 Android
Sperasoft
Sperasoft‬ talks j point 2015
Sperasoft‬ talks j point 2015
Sperasoft
Effective Мeetings
Effective Мeetings
Sperasoft
Unreal Engine 4 Introduction
Unreal Engine 4 Introduction
Sperasoft
JIRA Development
JIRA Development
Sperasoft
Introduction to Elasticsearch
Introduction to Elasticsearch
Sperasoft
MOBILE DEVELOPMENT with HTML, CSS and JS
MOBILE DEVELOPMENT with HTML, CSS and JS
Sperasoft
Quick Intro Into Kanban
Quick Intro Into Kanban
Sperasoft
ECMAScript 6 Review
ECMAScript 6 Review
Sperasoft
Console Development in 15 minutes
Console Development in 15 minutes
Sperasoft
Database Indexes
Database Indexes
Sperasoft
Apache Hadoop 1.1
Apache Hadoop 1.1
Sperasoft
Evolution of Game Development
Evolution of Game Development
Sperasoft
Apache Cassandra
Apache Cassandra
Sperasoft
Test Methods
Test Methods
Sperasoft
Unity3D Scripting: State Machine
Unity3D Scripting: State Machine
Sperasoft
Unity Programming
Unity Programming
Sperasoft

More Related Content

More from Sperasoft (20)

The theory of relational databases
The theory of relational databases
Sperasoft
Automated layout testing using Galen Framework
Automated layout testing using Galen Framework
Sperasoft
Sperasoft 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 Android
Sperasoft
Sperasoft‬ talks j point 2015
Sperasoft‬ talks j point 2015
Sperasoft
Effective Мeetings
Effective Мeetings
Sperasoft
Unreal Engine 4 Introduction
Unreal Engine 4 Introduction
Sperasoft
JIRA Development
JIRA Development
Sperasoft
Introduction to Elasticsearch
Introduction to Elasticsearch
Sperasoft
MOBILE DEVELOPMENT with HTML, CSS and JS
MOBILE DEVELOPMENT with HTML, CSS and JS
Sperasoft
Quick Intro Into Kanban
Quick Intro Into Kanban
Sperasoft
ECMAScript 6 Review
ECMAScript 6 Review
Sperasoft
Console Development in 15 minutes
Console Development in 15 minutes
Sperasoft
Database Indexes
Database Indexes
Sperasoft
Apache Hadoop 1.1
Apache Hadoop 1.1
Sperasoft
Evolution of Game Development
Evolution of Game Development
Sperasoft
Apache Cassandra
Apache Cassandra
Sperasoft
Test Methods
Test Methods
Sperasoft
Unity3D Scripting: State Machine
Unity3D Scripting: State Machine
Sperasoft
Unity Programming
Unity Programming
Sperasoft
The theory of relational databases
The theory of relational databases
Sperasoft
Automated layout testing using Galen Framework
Automated layout testing using Galen Framework
Sperasoft
Sperasoft 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 Android
Sperasoft
Sperasoft‬ talks j point 2015
Sperasoft‬ talks j point 2015
Sperasoft
Effective Мeetings
Effective Мeetings
Sperasoft
Unreal Engine 4 Introduction
Unreal Engine 4 Introduction
Sperasoft
Introduction to Elasticsearch
Introduction to Elasticsearch
Sperasoft
MOBILE DEVELOPMENT with HTML, CSS and JS
MOBILE DEVELOPMENT with HTML, CSS and JS
Sperasoft
Quick Intro Into Kanban
Quick Intro Into Kanban
Sperasoft
ECMAScript 6 Review
ECMAScript 6 Review
Sperasoft
Console Development in 15 minutes
Console Development in 15 minutes
Sperasoft
Evolution of Game Development
Evolution of Game Development
Sperasoft
Unity3D Scripting: State Machine
Unity3D Scripting: State Machine
Sperasoft
Unity Programming
Unity Programming
Sperasoft

Gameplay Tags

Editor's Notes

  • #2: Всем кек! Большинство из нас так или иначе слышали о тегах, но далеко не многие используют их. Причиной тому является не знание того как их можно использовать и как это может обернутся для нас выгодой. В основном многие люди с которыми я разговаривал считают, что теги используются для фильтрации данных в играх, но на самом же деле, с тегами можно делать очень много крутых вещей.
  • #3: Таких как: Типы урона и сопротивления к ним, может ли противник получить повреждения огнем или другим типом урона.
  • #4: Точки интереса, без необходимости создания под каждую точку нового блюпринта.
  • #5: Задания, а в точности размечать принадлежность объектов к заданиям.
  • #6: Достижения
  • #7: Все, на что способно ваше воображение и возможности связать это с тегированием!
  • #8: Отдельным пунктом стоит выделить возможность использовать теги, взамен Cast’aм. Рассмотрим следующий пример, представим что мы делаем РПГ и Инвентарь у нас представлен отдельным Actor’ом который хранит в себе вещи в виде компонентов. Допустим для завершения квеста нам необходимо чтобы у персонажа был определенный предмет. Как бы мы поступили в классическом случае применении Cast’a.
  • #9: Брали все компоненты по классу у Actor’a инвенторя, после чего каждый бы из них кастили к определенному классу Item’a. После чего запрашивали бы принадлежность к квесту. И в случае нахождения выдавали награду.
  • #10: В случае использование тегов, можно решить данную задачу следующим образом. Взять все компоненты у Actor’a инвентаря, которые обладают тегом нашего квеста. В случае нахождения таковых, выдать награду. Тем самым сэкономив ресурсы компьютера и сделав блюпринт или ваш код более простым.
  • #11: Поняв возможности которые предоставляют нам системы тегирования, рассмотрим их подробнее. Unreal Engine 4 имеет две встроенных системы тегирования. Первая система пришла еще с Unreal Engine 3, и называется Actor/Component tags, в коммьюнити чаще о ней говорят просто как о тегах. Позже в Unreal Engine 4 появилась вторая система Gameplay Tags, которая к сегодняшнему дню, получила очень большое развитие, как со стороны производительности так и со стороны удобства использования ее в наших проектах. Рассмотрим каждую из них подробнее.
  • #12: Это базовая система тегирования, которая изначально есть у любого Actor’a или Component’a. Она представляет из себя обычный массив FNam’ов, который мы можем настроить в Class Defaults.
  • #13: Для работы с данной системой мы можем использовать следующие функции. Get Tags - Возвращает все теги Actor’a Get Component Tags - Возвращает все теги Component’a
  • #14: Get Components by Tags - Возвращает все компоненты Actor’a с искомым тегом Actor Has Tag - Проверяет наличие тега у Actor’a
  • #15: Get All Actors with Tag - Возвращает все Actor’ы мира у которых есть искомый тег