Files
Aura/Docs/Tutos/CreateNewCharacter/Create New Character.md
2024-03-20 16:21:19 +01:00

134 lines
3.8 KiB
Markdown

[Home](../Home.md)
# Create Blueprint Character
- [Create New Enemy](#create-new-enemy)
- [Create Playable Character](#create-playable-character)
- [Character Standards](#character-standards)
## Create New Enemy
### 1 - Create the character blueprint
- Create a subclass of `BP_AuraEnemy`
![Create Enemy Blueprint](01_CreateEnemyCharacterBlueprint.png)
### 2 - Base Character Setup
[Setup the base character values](#base-character)
### 3 - Assign a behavior
- Assign a controller class
![Assign AIController](09_AssignAIController.png)
- The controller contains the behavior tree that automatically runs. To make a custom behavior, refer to the [chapter](../CreateNewBehavior/Content.md)
### 4 - Setup the drop table
There is a variable in the `BP_AuraEnemy` that child classes can fill to define a drop table
![Setup Drop Table](10_SetDropTable.png)
The key is the class that spawn when character dies and value is the probability of spawning.
Any actor class can spawn
## Create Playable Character
### 1 - Create the Character Blueprint
- Create a subclass of `BP_PlayerCharacterBase`
![Create Playable Character Blueprint](11_CreatePlayerCharacterBlueprint.png)
### 2 - Base Character Setup
[Setup the base character values](#base-character)
## Base Character
### 1 - Setup Mesh and Animations
- Create an animation blueprint for the mesh.
Make a new ABP or instanciate the template animation blueprint or use your own
![Create Animation Blueprint](02_CreateAnimationBlueprint.png)
- Setup the character mesh and its animation blueprint. Also pick a weapon mesh if you need one
- Adjust the mesh position and capsule size
- Create the hit react animation montage
- Setup combat animations
Fill up the map of combat montages in the character defaults combat interface
All possible key are sub tags of `CombatMontage.*`
A reaction to `CombatMontage.HitReact` animation is required
![Assign Animations](03_AssignAnimations.png)
> To use multiple animation for a same tag, we need to override the behavior of the `GetCombatMontage` method
### 2 - Set the combat socket locations
- override the function `GetCombatSocketLocation` and setup socket for each subtag of `CombatSocket.*`
![Set Combat Sockets](04_CombatSocketLocation.png)
### 3 - Handle death behavior
- override the event `Die` that executes on the server.
- for enemies, the parent class will execute the multicast event `M_HandleDeath`. We can override it to defined a custom behavior when the character dies
![Handle Death Behavior](05_HandleDeath.png)
- The parent call will manage ragdoll, weapon drop, movement stop and remove health widget
- The custom implementation would typically play a death sound and dissolve meshes
### 4 - Character Class Info
- Create data asset blueprint from `CharacterClassInfo`
![Create Character Class](06_CreateCharacterClass.png)
- Set the name of the class
- Set the class tag to a subtag of `CharacterClass.`
- Add base effects
- Subclass of `GE_StartingAttributes_Base` to define primary attributes scaling
- `GE_Character_SecondaryAttributes` to scale secondary attributes
- `GE_Character_PassiveRegeneration` to grant passive health and mana regeneration
- Add the base abilities
- The `GA_HitReact` Ability to have a reaction to damages
- Any other ability you will need
- Add starting effects
- `GE_RestoreMaxLife` to grant full life to the unit when starting game. As the maximum life is only calculated after starting attributes is granted, all unit start with 0 hp.
- `GE_RestoreMaxMana` if the unit has mana
![Filled Class Info](07_FilledClassInfo.png)
- Assign the data asset to the character blueprint
![Assign Data Asset](08_AssignClassDataAsset.png)
## Character Standards
Make sure to create sound for all situations
- Footsteps
- Getting hurt
- Death