Your first enemy¶
Designer · 30 min · No code
Result: a new enemy with its own name and level. It fights with a Break and a Topple Art and always drops a gold chest. You place it in the gym map and fight it.
Before you start¶
- Tour of the project. You should know where the XenoCore content folder is.
How an enemy is put together¶
An enemy is one Blueprint plus a few assets it points at:
| Piece | Sample asset | What it decides |
|---|---|---|
| Enemy Blueprint | Characters/Enemies/Minion/B_XenoCore_Minion_Melee |
Name, level, rewards, loot, death, mesh |
| Pawn data | PawnData_XenoCore_Minion_Melee |
Which abilities it has: attack, hit reaction, knock-downs, death |
| Arts | Minion/Arts/DA_XenoCore_Minion_Rend, DA_XenoCore_Minion_Sweep |
The Arts it uses in a fight, listed on the Blueprint's Arts |
| Stats effect | Battle/Attributes/GE_XenoCore_BaseStats_Minion_Melee |
Its stats at its level, read from a curve table |
| Drop table | Inventory/Loot/DA_XenoCore_Drops_Minion |
What its chests can hold |
| AI | BP_AIC_XenoCore_Enemy + ST_XenoCore_EnemyFreeroam |
How it patrols, engages, chases, gives up, and picks Arts |
The AI is shared by every enemy, so a new enemy needs none of its own. You will make a child of the minion Blueprint and change only what makes this enemy different.
Steps¶
1. Make a folder for your own content¶
Put your assets in your own folder, not inside XenoCore's. Template updates replace XenoCore's folders, and your work should survive them.
- In the Content Browser, go to Content and create a folder, for example
MyGame/Enemies.
2. Make a child of the minion¶
- In the Content Browser, go to XenoCore Content › Characters › Enemies › Minion (under Plugins; the folder may read just XenoCore). If it is missing, tick Plugin Content in the Content Browser's Settings; see Tour of the project.
- Right-click
B_XenoCore_Minion_Meleeand choose Create Child Blueprint Class. Name itB_MyEnemy. - Drag
B_MyEnemyintoMyGame/Enemiesand choose Move Here.
A child starts identical to its parent and keeps up with it: anything you do not change still comes
from the minion. The seven sample enemy types in Minion/Variants are made exactly this way.
A child of the melee minion, not of the enemy base
B_XenoCore_Enemy_Base is the parent every enemy shares, and it has no mesh, stats or abilities.
The melee minion is the complete working example. Duplicate data assets (pawn data, ability
sets, stats effects) when you need your own; make Blueprints as children.
3. Give it a name and a level¶
- Open
B_MyEnemyand click Class Defaults. - Under XenoCore › Enemy, set:
- Display Name to
Stonejaw. This appears on the target badge when you lock on. - Enemy Level to
8. The level scales every stat through the curve table, so this alone makes it tougher than the low-level sample minions. - Experience Reward to
30, double the melee minion's15. This is the base amount: the inherited Experience Level Scale row multiplies it by the enemy's level, and the level-difference adjustment is applied after that.
- Display Name to
- Compile and Save.
Keep enemies within reach of the party's level
An enemy far below the party's level never notices the party: it does not start a fight by
sight, sound or ether, though it still fights back when attacked. That is the
Ignore When Levels Below setting (6 levels by default) on the AI controller every enemy
shares, Characters/Enemies/Core/BP_AIC_XenoCore_Enemy › Class Defaults › XenoCore › AI,
and it is intended. If your enemy won't start a fight, check its level first.
4. Make it drop a gold chest¶
- In Class Defaults, under XenoCore › Loot, tick Always Gold Chest.
- Leave Drop Table as the minion's
DA_XenoCore_Drops_Minionfor now. The seven sample enemy types each use their family's table instead (DA_XenoCore_Drops_Grunt,_Skirmisher,_Bulwark,_Brute), with level bands on their entries. - Compile and Save.
Chests hold a drop-table reference and a tier, and roll their contents when they are opened, not when they drop. Designing your own drop table is covered in a recipe.
5. Place it¶
- Open the map
Maps/L_XenoCore_Gym. The sample minions are already placed here. - Drag
B_MyEnemyfrom the Content Browser into the level, on the floor, away from the other minions so you can fight it alone. - Save the level.
Click the placed enemy in the viewport: its Details panel shows the same XenoCore settings, and a value changed there affects only that one placement. Display Name, Enemy Level, Experience Reward and Always Gold Chest are among them, and so are its Patrol Points (XenoCore › AI › Patrol), which you can drag in the viewport. That is how one enemy Blueprint becomes many different monsters in a map. For a squad that wanders, fights together and comes back after you defeat it, place a XenoCore Enemy Spawner instead: see Place enemies.
Test it¶
- Press Play.
- Walk up to your enemy and lock on to it (pad RB, keyboard Tab). The target badge reads Stonejaw.
- Attack it. Whether an enemy attacks first depends on its Detection (XenoCore › AI › Detection): None (passive) waits to be hit, Sight, Sound and Ether start the fight themselves. Try changing it on the placed enemy.
- Fight it. It auto-attacks and uses its Arts: Rend, which Breaks, then Sweep, which Topples the Broken target. If a companion hits it harder than you, it turns on the companion: the red ring under its target moves with it.
- Defeat it. After about two seconds a gold chest appears where it fell. Open it.
If it doesn't work¶
It takes no damage and cannot die
Enemy Pawn Data is empty. Death and damage come from the abilities that pawn data grants, so
without it the enemy is invulnerable. An error naming the enemy is logged. Set it back to
PawnData_XenoCore_Minion_Melee.
Its stats double up after a level change
If you make your own stats effect, every modifier in it must use Override, not Add. Otherwise re-applying the effect stacks the numbers on top of the old ones.
The chest opens empty
The drop table has no pool for that chest tier (Wooden, Silver or Gold). Every tier a chest can roll needs its own pool. A warning is logged.
Fails silently: it never uses its Arts
An enemy uses only the Arts on its Blueprint's Arts list (XenoCore › Enemy › Arts). A child of the minion keeps Rend and Sweep; if the list is empty, the enemy only auto-attacks and nothing is logged.
It never starts a fight on its own
Its Detection is None (passive), or it is 6 or more levels below your party leader (see the tip in step 3). Hit it first, or change Detection on the placed enemy.
You now have¶
Your own enemy, placed in a map and fought. You also know which settings make one Blueprint into many monsters.
Next: Where next