Migration
This commit is contained in:
1
Docs/.gitignore
vendored
Normal file
1
Docs/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.obsidian
|
||||
2052
Docs/Notes.md
Normal file
2052
Docs/Notes.md
Normal file
File diff suppressed because it is too large
Load Diff
8
Docs/README.md
Normal file
8
Docs/README.md
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
All docs are written using markdown with Obsidian.
|
||||
|
||||
Installed Obsidian Plugins:
|
||||
- Excalidraw
|
||||
- Kanban
|
||||
|
||||
|
||||
42
Docs/TODO.md
Normal file
42
Docs/TODO.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
|
||||
kanban-plugin: basic
|
||||
|
||||
---
|
||||
|
||||
## Quick
|
||||
|
||||
- [ ] Make HitReact occur with a cooldown
|
||||
- [ ] Add fake plan to collide with player cursor when targeting out of bounds
|
||||
- [ ] Make Widget Segment Picker begin possible in vertical box
|
||||
|
||||
|
||||
## Features
|
||||
|
||||
- [ ] Inventory on player<br>- [ ] Dropable items<br>- [ ] inventory modifications<br>- [ ] Bank chest
|
||||
- [ ] Equipment System<br>- [ ] Items with stats and slots to equip<br>- [ ] Have a visual composite name<br>- [ ] method to refresh visuals on character
|
||||
|
||||
|
||||
## Refactorings
|
||||
|
||||
- [ ] Move ability tree functionalities from AAuraPlayerState to it's own actor component
|
||||
- [ ] Make projectile hit in sequence
|
||||
|
||||
|
||||
## Ability Ideas
|
||||
|
||||
- [ ] Projectile that follows you around when fired. Like a paladin hammers but with homing projectile physics
|
||||
|
||||
|
||||
***
|
||||
|
||||
## Archive
|
||||
|
||||
- [x] Make player pawn ignoring mouse cursor
|
||||
- [x] Fix up client side ability casting
|
||||
|
||||
%% kanban:settings
|
||||
```
|
||||
{"kanban-plugin":"basic"}
|
||||
```
|
||||
%%
|
||||
4
Docs/Tutos/AbilitySystem/Ability System.md
Normal file
4
Docs/Tutos/AbilitySystem/Ability System.md
Normal file
@@ -0,0 +1,4 @@
|
||||
[Home](../Home.md)
|
||||
# Ability System
|
||||
|
||||
- [Ability Status Implementation](AbilityStatusImplementation/Ability%20System%20Implementation.md)
|
||||
@@ -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`
|
||||
@@ -0,0 +1,3 @@
|
||||
|
||||
[Home](../../Home.md)
|
||||
|
||||
4
Docs/Tutos/CreateNewBehavior/Create New Behavior.md
Normal file
4
Docs/Tutos/CreateNewBehavior/Create New Behavior.md
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
[Home](../Home.md)
|
||||
|
||||
# TODO
|
||||
BIN
Docs/Tutos/CreateNewCharacter/01_CreateEnemyCharacterBlueprint.png
LFS
Normal file
BIN
Docs/Tutos/CreateNewCharacter/01_CreateEnemyCharacterBlueprint.png
LFS
Normal file
Binary file not shown.
BIN
Docs/Tutos/CreateNewCharacter/02_CreateAnimationBlueprint.png
LFS
Normal file
BIN
Docs/Tutos/CreateNewCharacter/02_CreateAnimationBlueprint.png
LFS
Normal file
Binary file not shown.
BIN
Docs/Tutos/CreateNewCharacter/03_AssignAnimations.png
LFS
Normal file
BIN
Docs/Tutos/CreateNewCharacter/03_AssignAnimations.png
LFS
Normal file
Binary file not shown.
BIN
Docs/Tutos/CreateNewCharacter/04_CombatSocketLocation.png
LFS
Normal file
BIN
Docs/Tutos/CreateNewCharacter/04_CombatSocketLocation.png
LFS
Normal file
Binary file not shown.
BIN
Docs/Tutos/CreateNewCharacter/05_HandleDeath.png
LFS
Normal file
BIN
Docs/Tutos/CreateNewCharacter/05_HandleDeath.png
LFS
Normal file
Binary file not shown.
BIN
Docs/Tutos/CreateNewCharacter/06_CreateCharacterClass.png
LFS
Normal file
BIN
Docs/Tutos/CreateNewCharacter/06_CreateCharacterClass.png
LFS
Normal file
Binary file not shown.
BIN
Docs/Tutos/CreateNewCharacter/07_FilledClassInfo.png
LFS
Normal file
BIN
Docs/Tutos/CreateNewCharacter/07_FilledClassInfo.png
LFS
Normal file
Binary file not shown.
BIN
Docs/Tutos/CreateNewCharacter/08_AssignClassDataAsset.png
LFS
Normal file
BIN
Docs/Tutos/CreateNewCharacter/08_AssignClassDataAsset.png
LFS
Normal file
Binary file not shown.
BIN
Docs/Tutos/CreateNewCharacter/09_AssignAIController.png
LFS
Normal file
BIN
Docs/Tutos/CreateNewCharacter/09_AssignAIController.png
LFS
Normal file
Binary file not shown.
BIN
Docs/Tutos/CreateNewCharacter/10_SetDropTable.png
LFS
Normal file
BIN
Docs/Tutos/CreateNewCharacter/10_SetDropTable.png
LFS
Normal file
Binary file not shown.
BIN
Docs/Tutos/CreateNewCharacter/11_CreatePlayerCharacterBlueprint.png
LFS
Normal file
BIN
Docs/Tutos/CreateNewCharacter/11_CreatePlayerCharacterBlueprint.png
LFS
Normal file
Binary file not shown.
133
Docs/Tutos/CreateNewCharacter/Create New Character.md
Normal file
133
Docs/Tutos/CreateNewCharacter/Create New Character.md
Normal 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`
|
||||
|
||||

|
||||
|
||||
### 2 - Base Character Setup
|
||||
|
||||
[Setup the base character values](#base-character)
|
||||
|
||||
### 3 - Assign a behavior
|
||||
|
||||
- Assign a controller class
|
||||
|
||||

|
||||
|
||||
- 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
|
||||
|
||||

|
||||
|
||||
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`
|
||||
|
||||

|
||||
|
||||
### 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
|
||||
|
||||

|
||||
|
||||
- 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
|
||||
|
||||

|
||||
|
||||
> 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.*`
|
||||
|
||||

|
||||
|
||||
### 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
|
||||
|
||||

|
||||
|
||||
- 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`
|
||||
|
||||

|
||||
|
||||
- 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
|
||||
|
||||

|
||||
|
||||
- Assign the data asset to the character blueprint
|
||||
|
||||

|
||||
|
||||
|
||||
## Character Standards
|
||||
|
||||
Make sure to create sound for all situations
|
||||
|
||||
- Footsteps
|
||||
- Getting hurt
|
||||
- Death
|
||||
12
Docs/Tutos/Home.md
Normal file
12
Docs/Tutos/Home.md
Normal 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)
|
||||
Reference in New Issue
Block a user