Getting Started with SoulslikeCombat

Documentation Unreal Engine AI Tutorial

Installation guide, quick start, and your first enemy in 10 minutes.


Overview

SoulslikeCombat is a production-ready AI combat plugin for Unreal Engine 5.7. It provides intelligent, tactical enemy behavior for souls-like and action RPG games through a modular component system.

What's Included

  • ✅ Complete C++ source code
  • ✅ Blueprint-compatible components and tasks
  • ✅ Demo level with fully functional enemy
  • ✅ Example weapons, abilities, and action configurations
  • ✅ StateTree and Behavior Tree integration
  • ✅ Comprehensive documentation (you're reading it!)

Who This Is For

  • Developers creating souls-like, action RPG, or tactical combat games
  • Teams needing production-ready AI without building from scratch
  • Designers who want data-driven AI configuration without code
  • Projects using Gameplay Ability System (GAS) for combat

Installation

Step 1: Install from Fab Marketplace

  1. Purchase SoulslikeCombat on Fab Marketplace
  2. In the Epic Games Launcher or Fab, click Add to Project
  3. Select your Unreal Engine project
  4. The plugin will be automatically installed with all binaries

Step 2: Enable the Plugin

  1. Open your project in Unreal Editor
  2. Go to Edit → Plugins
  3. Search for "SoulslikeCombat" and ensure it's enabled
  4. Restart the editor if prompted

Step 3: Enable Required Plugins

In Edit → Plugins, ensure these are also enabled:

  • GameplayAbilities
  • StateTree
  • GameplayStateTree

Step 4: Verify Installation

  1. Navigate to Content > SoulslikeEnemyCombat > Maps
  2. Open SEC_DemoLevel
  3. Click Play - you should see a working enemy

Note: This plugin requires Unreal Engine 5.7 exactly. Other versions have incompatible StateTree APIs.


Quick Start Guide

Your First Enemy in 10 Minutes

This quick start gets you from zero to a functional AI enemy as fast as possible.

1. Open Demo Level

Navigate to Content/SoulslikeEnemyCombat/Maps/SEC_DemoLevel and open it. Study the working enemy to understand the system.

2. Create Enemy Blueprint

Right-click in Content Browser → Blueprint Class → Search for EnemyCharacterBase

Name it: BP_MyEnemy

In the Blueprint:

  • Add your skeletal mesh
  • Configure capsule collision
  • Set movement speed (recommended: 400)

What AEnemyCharacterBase provides:

  • USECMeleeTraceComponent - Melee hit detection
  • UAbilitySystemComponent - GAS integration
  • Character movement configured

3. Create AI Controller

Right-click → Blueprint Class → Search for EnemyControllerBase

Name it: BP_MyEnemyController

Configure in Details Panel:

MovementEvaluator Settings:

IdealMinDistance: 150.0    // Stay at least this close
IdealMaxDistance: 300.0    // Don't go farther
StrafeRadius: 200.0        // Circle at this distance

ActionEvaluation Settings:

CurrentActionSet: (create in next step)
bDebugLog: true           // See decisions in Output Log

4. Create ActionSet Data Asset

Right-click → Miscellaneous → Data Asset → ActionSet

Name it: DA_MyEnemyActions

Add your first action:

FieldValue
IdLightAttack
AbilityTagSEC.Action.LightAttack
AbilityEndTagSEC.Action.End
ExecutionModeGameplayAbility
Distance → OptimalMin100
Distance → OptimalMax250
Distance → MaxValue400
Angle → OptimalMax30
Cooldown → Duration2.0
BaseWeight1.0

5. Create Gameplay Ability

Right-click → Blueprint Class → GameplayAbility

Name it: GA_LightAttack

Setup:

  1. Class Defaults → Ability Tags → Add SEC.Action.LightAttack

Event Graph:

ActivateAbility
  ↓
PlayMontageAndWait (YourAttackMontage)
  ↓
SendGameplayEventToActor
  • Target: GetAvatarActorFromActorInfo
  • EventTag: SEC.Action.End
  ↓
EndAbility

Pro Tip: Why the End Event Matters ActionEvaluationComponent listens for SEC.Action.End to know the action completed. Without it, the AI gets stuck waiting forever.

6. Create StateTree

Right-click → AI → StateTree

Name it: ST_MyEnemy

Structure:

Root State
├─ BuildDecisionContext [Tick]
│  • TargetActor: GetPlayerCharacter
│  • OutputPin: DecisionContext
│
├─ AIMovement [Tick]
│  • Context: DecisionContext
│
├─ PollAction [On Enter]
│  • Context: DecisionContext
│  • Output: ChosenAction
│
└─ DoAction [On Enter]
   • ChosenAction: (from PollAction)
   • TargetActor: (from context)

7. Assign StateTree to Controller

In BP_MyEnemyController → Class Defaults → StateTree Asset → Set to ST_MyEnemy

8. Configure Character

In BP_MyEnemy → Class Defaults → AI Controller Class → Set to BP_MyEnemyController

9. Place and Test

  1. Drag BP_MyEnemy into your level
  2. Set player as focus target (or use demo player)
  3. Click Play
  4. Watch Output Log for action selection debug messages

Expected behavior:

  • Enemy approaches to ideal distance (150-300cm)
  • Executes light attack when in range
  • Waits for cooldown
  • Repeats