Skip to content

Arts

All · 15 min read · No code

The Arts screen: a character's Arts, their levels and details.

The Arts screen: a character's Arts, their levels and details.

An Art is a special move a character picks from the combat palette. Every Art is described by one data asset, an Art definition (UXenoCoreArtDefinition), and runs as a shared Gameplay Ability (UXenoCoreGameplayAbility_Art) that reads everything it needs from that asset. Which Arts a character knows, which ones sit on their palette and how far each is levelled are stored per character on the party's progression component. The one idea that makes the rest make sense: an Art is data. A standard Art needs no Blueprint and no code; you only write a Blueprint when an Art needs behaviour the shared ability does not have.

See the Glossary for Art, Talent Art, palette and Break.

At a glance

In play: each character has a bar of Arts beside the Talent Art in the centre; pick one with the D-pad, it plays, lands its damage and effects, and greys out for its cooldown.

What you can change, no code:

How it fits together

Piece Class / sample asset Job
Art definition UXenoCoreArtDefinition · Battle/Arts/DA_XenoCore_AirSlash Name, power, cooldown, range, area, effects, montage, palette look
Talent Art definition UXenoCoreTalentArtDefinition · Battle/Arts/DA_XenoCore_TurnStrike An Art definition plus a Gauge Cost
Shared Art ability UXenoCoreGameplayAbility_Art · Battle/Arts/GA_XenoCore_Art_Base Range check, montage, impact timing, effects, cooldown, movement lock
Talent Art ability UXenoCoreGameplayAbility_TalentArt · Battle/Arts/GA_XenoCore_TurnStrike Same, but paid from the Talent gauge instead of a cooldown
Per-Art ability (optional) GA_XenoCore_BackSlash, GA_XenoCore_LightHeal Children of GA_XenoCore_Art_Base, carrying only their Art Data and their Ability.XenoCore.Art.* tag. Only for Arts that need their own ability; everything else runs as the base
Shared effects GE_XenoCore_ArtCooldown, GE_XenoCore_ArtEffect, GE_XenoCore_Heal One cooldown effect and one damage/heal carrier for every Art
Learnset table A DataTable of FXenoCoreArtUnlock rows · Characters/Party/Learnsets/DT_XenoCore_ArtLearnset_Default, set as Art Learn Table on the character's pawn Blueprint (AXenoCoreCombatantCharacter) Which Arts a character learns, at what level, in which starting slot
Loadout and levels UXenoCoreProgressionComponent · Game/BP_XenoCore_Progression Known Arts, palette slots, Art levels, Art Points (AP)
Palette (HUD) UXenoCoreArtsPaletteBase · UserInterface/HUD/W_XenoCore_ArtSlot Draws the Arts, greys unusable ones, shows cooldown rings and the Talent gauge
Palette input GA_XenoCore_PaletteUp/Down/Left/Right/Confirm (UXenoCoreGameplayAbility_PaletteCycle) Move the selection, confirm the selected Art
Arts menu UXenoCoreArtsScreenBase · UserInterface/Arts/W_XenoCore_ArtsScreen Arrange the palette (Setting tab) and spend AP (Level Up tab), switched with ZL / ZR

The player's palette and the companion AI fire an Art the same way, so a companion's Art obeys exactly the player's range, cooldown and costs.

For programmers: how a press becomes a hit
  • The palette input abilities never activate an Art themselves. They move or confirm the selection, and the target-mode ability turns the selected entry into an activation.
  • The palette and the companion AI both fire an Art through one function, Fire Art (UXenoCoreGameplayAbility_Art::FireArt).
  • The progression component grants each palette Art to the pawn as an ability spec whose source object is the Art definition. That is how many Arts share one ability class and are still told apart.
  • The ability class used is, in order: the definition's Ability Class, else whatever class is already granting that Art, else the progression component's Default Art Ability Class (GA_XenoCore_Art_Base).

Lifecycle

Learning. Each character's pawn Blueprint points at a learnset: a DataTable whose rows are FXenoCoreArtUnlock, set as Art Learn Table. When a character's record is created, and again when they level up, every row at or below their level is learned. Rows are read sorted by Unlock Level, so their order in the table does not matter. The first time, each row's Default Slot places it on the palette; -1 means learned but not placed. An unset or empty Art Learn Table means "keep whatever the character's ability sets grant", which is how enemies and unauthored pawns behave.

A row's Art is a soft reference: reading the table does not load the Arts in it. An Art (its montage, effects and VFX) loads when the character learns it, at spawn or level-up, so Arts a character is still levels away from cost nothing. See Loading and ticking.

A character gets their own list by pointing at a different table. The shipped tables are in Characters/Party/Learnsets/:

Table Used by Arts (level learnt)
DT_XenoCore_ArtLearnset_Default B_XenoCore_PartyMember_Base and the colour variants that do not set their own Back Slash, Light Heal, Air Slash (1)
DT_XenoCore_ArtLearnset_Kael Kael (B_XenoCore_Party_VRoid_L) Back Slash, Light Heal, Air Slash, Stream Edge (1); War Swing (2)
DT_XenoCore_ArtLearnset_Mira Mira (B_XenoCore_Party_VRoid_K), B_XenoCore_Party_Maroon Back Slash, Light Heal, Air Slash, Shield Bash, Wild Down (1)
DT_XenoCore_ArtLearnset_Nia Nia (B_XenoCore_Party_VRoid_S), B_XenoCore_Party_Cyan Back Slash, Light Heal, Air Slash (1)
DT_XenoCore_ArtLearnset_Dorran Dorran (B_XenoCore_Party_VRoid_C), B_XenoCore_Party_Lime Back Slash, Light Heal, Air Slash (1)
DT_XenoCore_ArtLearnset_Isolde Isolde (B_XenoCore_Party_VRoid_M), B_XenoCore_Party_Purple Ember Ring, Ether Ward, Frost Lance (1); Mind Sap (3)
DT_XenoCore_ArtLearnset_Sabine Sabine (B_XenoCore_Party_VRoid_Q), B_XenoCore_Party_Yellow Bellow, Hamstring, Venom Edge (1); Wild Down (2)
DT_XenoCore_ArtLearnset_Tamsin Tamsin (B_XenoCore_Party_VRoid_Y), B_XenoCore_Party_Pink Bolster, Light Heal, Mending Wave (1); Slit Edge (2); Renewal (3)

Open a table to see each row's Default Slot. Which character learns what, and when, is your project's call; the shipped tables are a starting point.

When a level-up teaches an Art, the level-up banner (W_XenoCore_LevelUp) adds a line New Art indented under the character who learned it, benched characters included. Arts get no floating text over heads: the whole party levels at once, so it would be noise. (A learnt skill does float.) The data rides on the level-up message as FXenoCoreLevelUpEntry's Arts Learned.

One example member gets Arts another way

The colour example PartyMember_Blue (not in the sample cast) uses B_XenoCore_Player as its pawn, which is not built on the party base and has no Art Learn Table. Its Arts come from AbilitySet_XenoCore_Hero.

Slotting. Slots are numbered in unlock order, not screen position, and the bar fills from the centre out: slot 0 sits immediately left of the Talent Art, slot 1 immediately right, slot 2 next left, slot 3 next right, and so on outward. The Arts menu strip and the battle palette both draw it this way. Default Slot and Art Slot Unlock Levels both count in this order, so the further a slot is from the centre, the later it opens. The Arts menu shows no slot numbers: a list row reads Equipped for an Art on the bar, an empty strip slot is Empty Slot, and a locked one is Locked Slot, whose detail line says This slot opens at level N.

Setting a palette slot (from the Arts menu, or the XenoSetArt console command) re-grants the live pawn's Arts at once, so the HUD changes with no extra wiring. The Talent Art is never on the palette row: it is granted by the equipped weapon's ability set (each sample member's sword has its own set, for example Weapons/GreatSword/AbilitySet_XenoCore_JunkSword grants GA_XenoCore_TurnStrike; the per-sword Talent Arts are children of Battle/Arts/GA_XenoCore_TalentArt_Base) and sits in the palette's centre slot during battle. The centre slot shows whichever Talent Art the character was granted, with that Art's own name, description and icon; the entry authored on the palette widget is only a fallback for a character with none.

Activation. When an Art is used, the shared ability:

  1. Refuses if the target is outside the Art's Distance. This is a backstop: when the player picks an Art out of reach, target mode first runs the character in and uses it on arrival, so range never greys an Art on the palette.
  2. Commits, which puts the Art on cooldown. An Art that is interrupted or misses still cools down.
  3. Cancels the auto-attack, so the Art cuts into the swing instead of queueing behind it. This happens only once the commit succeeds, so an Art that cannot be paid for leaves the swing alone. After the Art the auto-attack starts again from its first swing.
  4. Plays the definition's Montage at Montage Play Rate, first turning the character to face the target over a short time.
  5. At Impact Fraction of the montage's length, applies the Art: its power as damage or healing, then each Effects entry whose condition is met. A damage Art aimed at enemies first makes the same contact roll as the auto-attack, for each hit and each target: it can miss (no damage, no effects on that target) or be blocked. A blocked Art does no Topple, and the attacker's recoil ends the Art, so its remaining hits never land. Ether Arts can miss well-levelled enemies but are never blocked. See Blocks and dodges.
  6. Ends when the montage completes, is interrupted or is cancelled. A failsafe ends it shortly after the montage's expected length if nothing else does.

While an Art runs, the character carries Status.XenoCore.ArtExecuting (every other Art is blocked and shows as disabled on the palette) and Gameplay.MovementStopped (the character cannot walk or turn). Both are removed on every way the Art can end.

Cooldown. One shared effect, GE_XenoCore_ArtCooldown, is applied with the Art's own Cooldown Duration and its own Cooldown Tag. The palette ring reads that tag. The effect comes from the art ability's Default Cooldown Effect Class (ships as GE_XenoCore_ArtCooldown), used whenever the ability's own Cooldown Gameplay Effect Class is unset, so data-only Arts and Blueprint Arts both cool down with nothing to set.

Talent Arts. A Talent Art has a Cooldown Duration of 0 and costs gauge instead. The gauge (TalentGauge, 0 to 100) fills by the character's TalentChargePerHit each time an auto-attack lands, through GE_XenoCore_TalentCharge. The centre slot lights once the gauge covers the Art's Gauge Cost, the same test the ability uses. The gauge is spent when the Art activates, so a Talent Art that misses still costs its gauge. Nothing resets the gauge after a fight, but it lives on the character's body, so a benched member or a party wipe starts again from empty.

Levelling. Each character banks Art Points from kills (Art Points Base + Art Points Per Enemy Level × the enemy's level, times the level-difference reward multiplier; quests pay none). See Progression. Spending AP raises an Art one level, up to its cap. Every Power, Cooldown Duration and Effects curve reads the Art's level. Talent Arts cannot be levelled.

What you can change

On the Art definition

Setting Where it lives What it does
Ability Class Art definition › Art Leave empty for a data-only Art. Set only for an Art with its own Blueprint.
Display Name, Description Art definition › Art The palette shows Name: Description; the Arts menu shows both
Icon Art definition › Art Texture for menus
Category Art definition › Art Physical, Ether, Break, Topple, Daze, Buff, Debuff or Heal: the type colour
Attribute Art definition › Art Physical or Ether: which stats the damage reads
Effect Type Art definition › Art Damage, Heal, or No damage or healing
Target Type Art definition › Art Enemy, User, One ally (opens the ally selector) or Whole party
Distance Art definition › Art Maximum range in cm, centre to centre. Default 420. 0 = no limit
Power Art definition › Art Magnitude, a curve keyed by Art level. Value multiplies the curve, so it must not be 0
Cooldown Duration Art definition › Art Seconds, keyed by Art level. 0 = no cooldown (Talent Arts)
Cooldown Tag Art definition › Art Must be unique to this Art
Montage, Montage Play Rate, Impact Fraction Art definition › Art › Animation The strike, its speed, and when in it the hit lands (default 0.45)
Hits, Hit Spacing Art definition › Art › Hits How many times the Art strikes, spaced in fractions of the montage from Impact Fraction. Every hit deals the full Power
Force Multiplier Art definition › Art › Hits How hard each hit knocks its target back, as a multiple of the target's Push Distance (default 1; the shipped damage Arts use 2). 0 = no knockback. Every hit of an Art aimed at enemies also makes the target flinch
Lunge Multiplier Art definition › Art › Hits Lyra's melee lunge: the first hit that connects also drives the user into the target. 0 (off) by default; the lunge's own values are Lunge on the Art's ability class
Impact Event Tag Art definition › Art › Hits Take the hits from the animation instead: every XenoCore Gameplay Event notify with this tag on the montage is one hit, and the fractions are ignored
Talent Charge, Talent Charge Per Enemy Hit Art definition › Art › Talent Gauge Talent Gauge gained, out of 100: once per use, or for every enemy on every hit. Paid only if the Art reaches an enemy
Cast FX, Cast Socket, Cast Sound Art definition › Art › Cosmetics Played on the attacker when the Art starts, at that socket or bone (empty = the character's root)
Impact FX, Impact Sound Art definition › Art › Cosmetics Played on every enemy, on every hit, where the strike lands
Area FX, Area FX Authored Radius Art definition › Art › Cosmetics Area Arts only: played once per hit on the ground at the area's centre. Give the radius the effect was made at and it scales to Area Radius; 0 = unscaled
Hit Feedback, Hit Camera Shake Art definition › Art › Cosmetics Turn the hit shake and controller rumble off, or give this Art its own shake
Palette Glyph, Glyph Colour, Palette Order Art definition › Art › Palette The palette icon material, its colour when usable, and its order among Arts not in the stored palette
Base Level Up Cost Art definition › Art › Level AP from level I to II. Default 300
Area, Area Radius, Cone Angle Art definition › Art › Area Single target, circle around user or target, or cone. Radius in cm, angle in degrees. The Arts menu's Range line reads it, e.g. Cone ahead, 120°, 8 m
Effects Art definition › Art › Effects Statuses and reactions it applies: see below
Positional Bonuses Art definition › Art › Positional Position, Power Multiplier, Announce Chance per entry
Threat Art definition › Art › Aggro Aggro this Art builds on the enemies it reaches (default 10). See Aggro
Usable By AI, AI Priority, AI Chain Bonus, AI Wait For Reaction, AI Conditions Art definition › Art › Companion AI Whether and when companions and enemies use it. See How a companion chooses an art
Tint FX By Category Art definition › Art › Cosmetics Tint the Art's effects with its type colour (on by default)
Gauge Cost Talent Art definition › Talent Art Gauge spent, out of 100. Default 100

Every effect field takes a Niagara system or an older Cascade particle system, so effects from Epic's sample projects and Paragon work as they are. An empty field keeps the shared look every Art has: the damage sparks and number, the montage's own trail, the shared hit shake.

See an area as you tune it

Type XenoCore.Arts.DrawArea 1 in the console during play. Each Art draws its circle or cone at the moment it lands, puts a green sphere on every enemy it reached, and labels the count. XenoCore.Arts.DrawArea 0 turns it off; it is off by default and never appears in a shipped build. XenoCore.Arts.DrawAreaSeconds sets how long each drawing stays.

Fails silently: a looping effect in an Art's FX field

An Art spawns a new effect every use and never destroys it, so a looping system piles up for the rest of the session. Use one-shot (burst) systems in Cast FX, Impact FX and Area FX.

Fails silently: a custom Hit Camera Shake has no rumble

Hit Camera Shake replaces the shared hit cue, and the controller rumble lives on that cue. An Art with its own shake does not rumble.

Impact Event Tag on a montage without the notify

The Art still lands one hit, when the montage ends, and the Output Log warns that the montage never sent the event. Add an XenoCore Gameplay Event notify with that tag on the contact frame.

Statuses (the Effects list), and User or Whole party entries, land on the first hit of a multi-hit Art only; damage, numbers and impact effects land on every hit. If an enemy blocks a hit, the attacker recoils and the Art ends there, so its remaining hits never land.

Each Effects entry has Effect (a GE_XenoCore_Status_* or GE_XenoCore_Reaction_*), Chance (0 to 1), Duration and Magnitude (curves keyed by Art level, sent to the status), Condition (Always, In the art's position, From the side, From behind, From the front, Target is Broken, Target is Toppled, Target is Dazed), Recipient (Each target, User, Whole party) and Announce Chance. Conditions are judged on the target as it was before this hit, so one Art cannot Break and then Topple with the same press.

Two Arts sharing a Cooldown Tag share one cooldown

Using either Art puts both on cooldown. An Art with a cooldown but no Cooldown Tag cools down invisibly: the palette shows it ready while it refuses to fire. The editor checks both when you save an Art definition (or run Validate Assets): a missing tag on an Art that cools down at any level is an error, and a tag another Art definition also uses is an error naming the other Arts. The shared-tag check runs in the editor only, so an Art never saved or validated there can still slip through.

Fails silently: Power or a status Duration left at 0

Power multiplies its curve, so a Value of 0 deals nothing whatever the curve says. A status whose duration comes from the Art lasts zero seconds if the entry's Duration is 0. Data validation reports the second case on save.

What saving an Art definition checks

Problem Reported as
Empty Display Name Error
A cooldown at any level, but no Cooldown Tag Error
A Cooldown Tag another Art definition also uses Error (editor validator)
A status entry whose duration comes from the Art, with Duration 0 Error
No Montage: the Art plays no animation, its effect lands at once and it ends Warning
No Palette Glyph Warning
A heal aimed at an Enemy Warning

Fails silently: a montage on the wrong slot

An Art montage must play on a slot in the DefaultGroup slot group. On another group it blends wrongly with no error.

On the progression component

Game/BP_XenoCore_Progression, Class Defaults, category XenoCore › Arts:

Setting What it does
Default Art Ability Class The ability data-only Arts run as. Ships as GA_XenoCore_Art_Base
Art Slot Unlock Levels Character level that opens each palette slot, in unlock order (drawn centre-out). Ships as 1, 1, 1, 12, 20, 28, 34, 40; keep it ascending. Set all eight to 1 for a full bar from the start
Default Art Level Cap Highest level without a manual. Default 4
Art Level Cost Multipliers Multiplier on Base Level Up Cost for levels II to XII
Art Points Base The flat part of a kill's AP. Default 2.0
Art Points Per Enemy Level AP per level of the defeated enemy. Default 2.0

On the character

Art Learn Table (Class Defaults › XenoCore › Arts) on the pawn Blueprint, beside Skill Tree: a DataTable whose row structure is XenoCoreArtUnlock (the picker offers no other kind). Each row has Art (loads when learnt), Unlock Level (1 or more) and Default Slot (0 to 7 in unlock order, or -1 for learned but unslotted). The row name is free text; Lv01_BackSlash is the convention because it sorts in the editor. Learnsets can be CSV-imported like any DataTable.

To give a character their own list, create a DataTable with row structure XenoCoreArtUnlock, or duplicate DT_XenoCore_ArtLearnset_Default (a table, not a concrete Art, so duplicating it is fine), then set that character's Art Learn Table.

On the Talent Art ability

Talent Gauge Effect (XenoCore › Talent). Arts never slow the world: XC1 has no slow motion on Arts, and a companion's Art slowing the player's own character read as a frame drop.

Extending it

  • A new standard Art: create it blank in your own folder (Content/MyGame/Arts): right-click › Data › Data Asset › XenoCoreArtDefinition. Fill in the fields, give it its own Cooldown Tag, and add a row for it to a character's learnset. Do not duplicate a concrete Art such as DA_XenoCore_AirSlash: the copy brings Air Slash's Break and side-Slow effects with it. DA_XenoCore_SlitEdge, DA_XenoCore_StreamEdge and DA_XenoCore_WarSwing are examples built this way. Kael learns Stream Edge (a cone) at level 1 and War Swing (a circle around him) at level 2; Tamsin learns Slit Edge at level 2. See Your first art and the recipes Attack art, Support art and Palette slots.
  • An Art with custom behaviour: create a Blueprint child of GA_XenoCore_Art_Base and point the definition's Ability Class at it. Do not override Activation Owned Tags on it: an override replaces the base's container rather than adding to it, and silently drops the lock-out and movement-stop tags.
  • A new Talent Art: create a blank XenoCoreTalentArtDefinition, make a child Blueprint of GA_XenoCore_TalentArt_Base and point its Art Data at the new definition, and grant the ability from the weapon's ability set. See Talent art.
  • Reactions and statuses an Art applies: see Reactions and statuses.
  • Never edit GA_XenoCore_Art_Base, GE_XenoCore_ArtCooldown or GE_XenoCore_ArtEffect in place: every Art in the game uses them.

Why it's built this way

For programmers: the design reasons
  • One asset per Art. Arts are granted as ability specs with the definition as source object, so any number share one ability class. A per-Art Blueprint and unique ability tag is no longer needed.
  • Cooldown from the definition. The ability overrides GetCooldownTags and applies one shared effect with a SetByCaller duration and the Art's tag as a dynamic granted tag, so no per-Art cooldown asset can drift. It commits in C++, so no Art Blueprint can forget to.
  • Tags for lifetimes. The lock-out and movement stop are ActivationOwnedTags, removed by GAS on every end path, and the shared ability binds every montage end delegate (bAllowInterruptAfterBlendOut true) so an interrupted Art can never leave the character frozen.
  • Levels on the progression component, keyed by the member definition, because a benched character has no pawn and the Arts menu still has to edit them.