Migration

This commit is contained in:
2024-03-20 16:21:19 +01:00
commit 4d87f6e4ab
1847 changed files with 19406 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
[Home](../Home.md)
# Ability System
- [Ability Status Implementation](AbilityStatusImplementation/Ability%20System%20Implementation.md)

View File

@@ -0,0 +1,50 @@
[Home](../../Home.md)
# Ability Status Implementation
An ability status is a gameplay tag assigned to the dynamic tags of an ability spec.
It can be one of the four values
Tag | Meaning
-|-
`Ability.Status.Locked` | The ability cannot be learnt
`Ability.Status.Eligible` | The ability can be learnt
`Ability.Status.Unlocked` | Ability learnt from the book but not bind
`Ability.Status.Equipped` | Ability has an input tag bind
Each character has a class information that contains an ability book
```C++
AAuraBaseCharacter *MyCharacter;
UAbilityInfo* Book = MyCharacter->GetClassInfo()->AbilitiesBook;
```
The Ability System Component has a list of ability specs.
```C++
UAuraAbilitySystemComponent *AuraASC;
TArray<FGameplayAbilitySpec> Abilities = AuraASC->GetActivatableAbilities();
```
We can fetch an ability status with ether an ability spec or an ability id tag
```C++
FGameplayAbilitySpec AbilitySpec;
FGameplayTag StatusTag = UAuraAbilitySystemComponent::GetStatusTagFromAbilitySpec(AbilitySpec);
bool StatusFound = AuraASC->GetStatusTagForAbilityIDTag(AbilityIDTag, FGameplayTag, StatusTag);
```
Status | In Active Abilities | Level > 0 | InputTag
-|-|-|-
Locked | ❌ | ❌ | ❌
Eligible | ✔️ | ❌ | ❌
Unlocked | ✔️ | ✔️ | ❌
Equipped | ✔️ | ✔️ | ✔️
To keep the status tag up to date, it is updated in the asc when
- We recieve an ability with a matching tag of `Ability.ID`. in the `OnGiveAbility`
- We assign an input tag to the ability spec. in the `AssignInputTagToAbilitySpec` and `RemoveInputTagFromAbilitySpec`
- We modify an ability spec level with the function `SetLevelForAbilitySpec` or `AddLevelForAbilitySpec`

View File

@@ -0,0 +1,3 @@
[Home](../../Home.md)

View File

@@ -0,0 +1,4 @@
[Home](../Home.md)
# TODO

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,133 @@
[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

12
Docs/Tutos/Home.md Normal file
View File

@@ -0,0 +1,12 @@
# Aura
## Create new entities
- [Create New Character](./CreateNewCharacter/Create%20New%20Character.md)
- [Create New Behavior](./CreateNewBehavior/Create%20New%20Behavior.md)
- [Create New Ability](./AbilitySystem/CreateNewAbility/Create%20New%20Ability.md)
## Technical implementations
- [Ability System](./AbilitySystem/Ability%20System.md)