Skip to content

Commit 0b7906b

Browse files
Work on Breathing Gameplay Ability, Update Readme and plugin description
1 parent 1d086c1 commit 0b7906b

8 files changed

Lines changed: 124 additions & 29 deletions

File tree

ALSXT.png

Lines changed: 2 additions & 2 deletions
Loading

ALSXT.uplugin

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{
22
"FileVersion": 3,
33
"Version": 1,
4-
"VersionName": ".2",
4+
"VersionName": ".5",
55
"FriendlyName": "ALSXT",
6-
"Description": "An Unreal Engine 5 plugin that extends ALS-Refactored with a set of popular replicated gameplay features, to demonstrate the extendability of ALS-Refactored in a Modular, Data-Driven, UE5 Way.",
6+
"Description": "An Unreal Engine 5 plugin that extends ALS-Refactored into a Modular, GAS-based, Data-oriented, Character System with the Latest UE5 Features.",
77
"Category": "Animation",
88
"CreatedBy": "Uriel Ballinas, VOIDWARE Prohibited",
9-
"CreatedByURL": "https://github.com/Voidware-Prohibited",
10-
"DocsURL": "https://github.com/Voidware-Prohibited/ALSXT",
9+
"CreatedByURL": "https://voidwarex.com",
10+
"DocsURL": "https://codeberg.org/Voidware-Prohibited/ALSXT",
1111
"MarketplaceURL": "",
1212
"SupportURL": "https://github.com/Voidware-Prohibited/ALSXT/discussions",
1313
"EngineVersion": "5.7.0",
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
version https://git-lfs.github.com/spec/v1
2-
oid sha256:33cccff7646eb7b86d635b190d81646ac52026b4dedde1eb2afa9cc867c3a4f7
3-
size 1547
2+
oid sha256:2406b730f56f7373f54acc4e19b027801d65eb0c560d725184ec68b10e9ebb85
3+
size 12687
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
version https://git-lfs.github.com/spec/v1
2-
oid sha256:a5f67b444314c24fe7f9907def0e0c620619725f2fea104c667d051f998e4dd9
3-
size 916936
2+
oid sha256:de46374b5698747e154208918d5e2fc78e861b8ab0ee1345bb247d295f8d6e28
3+
size 899527

README.md

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
<h1 align="center">ALSXT</h1>
2+
<p align="center">
3+
<b>Seize the Means of Animation</b>
4+
</p>
25

36
<p align="center">
47
<img src="ALSXT.png" alt="ALSXT">
@@ -25,9 +28,9 @@
2528
> [!NOTE]
2629
> Following the acquisition of GitHub by Micro$lop, we have taken principled action and have begun primarily hosting code and content on [Codeberg](https://codeberg.org/Voidware-Prohibited/). Mirrors will still be maintained on [GitHub](https://github.com/Voidware-Prohibited/ALSXT/) and [GitLab](https://gitlab.com/Voidware-Prohibited/ALSXT/).
2730
28-
An Unreal Engine 5 plugin that extends ALS-Refactored into a Modular, GAS-based, Data-oriented, Character System with the Latest UE5 Features. The feature-set is informed the parent project [Target Vector](https://github.com/Voidware-Prohibited/TargetVector/).
31+
ALSXT is a modular, GAS-based Unreal Engine 5 plugin that extends ALS-Refactored into a cutting-edge Character System. ALSXT empowers developers with AAA animation and features like Character Customization, runtime Mesh Painting, Gameplay Camera System, Combat, Impact Reactions, and advanced Firearms mechanics with Procedural Aim and Recoil, all streamlined into a rapid, data-driven workflow, ensuring stability without sacrificing flexibility. A part of the [Target Vector](https://github.com/Voidware-Prohibited/TargetVector/) framework.
2932

30-
[Wiki](../../wiki/) - [Documentation](https://alsxt.notion.site/2be59e501e7a4bf583437d1636bc7f2f?v=ac361eb5a6a14081892ff9a68e3e7a44/) - [ALSXT Notion](https://alsxt.notion.site/2be59e501e7a4bf583437d1636bc7f2f?v=ac361eb5a6a14081892ff9a68e3e7a44/) - [Submit Pull Request](https://codeberg.org/Voidware-Prohibited/ALSXT/pulls/) - [Twitter](https://x.com/ALSXT/) - [Discord](discord://colorindarkness/)
33+
[📚Wiki](../../wiki/) [📘Documentation](https://alsxt.notion.site/2be59e501e7a4bf583437d1636bc7f2f?v=ac361eb5a6a14081892ff9a68e3e7a44/) [📑ALSXT Notion](https://alsxt.notion.site/2be59e501e7a4bf583437d1636bc7f2f?v=ac361eb5a6a14081892ff9a68e3e7a44/) [🐤Twitter](https://x.com/ALSXT/) [🗨️Discord](discord://colorindarkness/)
3134

3235
# Introduction
3336
- Generate truly unlimited, unique and immersive Characters with extensive States, deep Character Customization, Southpaw and support for blending multiple Locomotion and Overlay Layers.
@@ -54,7 +57,7 @@ An Unreal Engine 5 plugin that extends ALS-Refactored into a Modular, GAS-based,
5457
5558
## Improvements
5659
- Alsxt Character Movement Component - Expanded Movement Featurees and GAS Integration
57-
- Expanded Character States - Combat Stance, Sex, Variant, Weapon Ready Position, etc
60+
- Expanded Character States - Orthodox/Southpaw Stances, Locmotion Variants, Readiness, Weapon Ready Position, etc
5861
- Expanded Footprints System - Independent foot states, Saturation, Material Transfer, Vertex Paint Support(Static Mesh only, In Progress)
5962

6063
## New Features
@@ -65,19 +68,19 @@ An Unreal Engine 5 plugin that extends ALS-Refactored into a Modular, GAS-based,
6568
- Gameplay Camera System Director
6669
- Third and First Person Camera Rigs
6770
- GAS Gameplay Abilities - With Cost Gameplay Effects
68-
- Nearly all exiting Input Actions
71+
- Nearly all existing Input Actions
6972
- Movement Ability that can modify Regen Magnitudes
7073
- Extended State Input Actions
7174
- New Locomotion Actions: Slide, Flip, Hold Breath, Focus
72-
- + More
75+
- Plus more
7376
- GAS Gameplay Effects
7477
- Staus Effects, such as Injuries, that modify Movement Speed Magnitudes
7578
- Stamina Regen with Magnitude
7679
- Hold Breath Regen with Magnitude
7780
- GAS Gameplay Attribute Sets
7881
- Stamina
7982
- Breath
80-
- + More
83+
- Plus more
8184
- Advanced Customizable and Paintable Master Materials for Characters and Objects
8285

8386
### Firearm Features
@@ -92,12 +95,12 @@ An Unreal Engine 5 plugin that extends ALS-Refactored into a Modular, GAS-based,
9295
## Features In Development
9396
- Smart Object based Generic Interaction System
9497
- Contextual Animation
95-
- Combat System
96-
- Impact Reactions (Blending reaction animations with Physical Animation)
98+
- Combat System with Targeting
99+
- Impact Reactions System
97100
- Physical Animation
98101
- Character Customization
99102
- Paintable Mesh Components
100-
- Character Sound Component
103+
- Character Sounds
101104
- Vaulting
102105
- Idle Animation Component
103106

@@ -124,14 +127,6 @@ An Unreal Engine 5 plugin that extends ALS-Refactored into a Modular, GAS-based,
124127
- Untested: XCode (MacOS), Jetbrains Rider, VS Code, Visual Studio (Linux)
125128
- clang -20 13.0.1
126129

127-
## CI System Requirements
128-
Systems performing Continous Intergration Workflows will have additional requirements depending on the CI solution used.
129-
- Git
130-
- OpenCppCoverage
131-
- Domain Name or ngrok (For Self Hosted CI)
132-
- Workflow Actions services and Runners configured for Forgejo/Codeberg, GitHub or GitLab.
133-
- Jenkins and Java 11 (For Jenkins)
134-
135130
## Engine Plugins
136131
The following are built-in Engine plugins that are enabled in the Plugins window. Warning: some plugins may be Experimental or Beta software.
137132
- [Gameplay Abilities](https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Plugins/GameplayAbilities/)
@@ -155,6 +150,23 @@ The following are built-in Engine plugins that are enabled in the Plugins window
155150
The following plugins require cloning or downloading into your projects `Plugins` folder.
156151
- [Advanced Locomotion System Refactored](https://github.com/Sixze/ALS-Refactored/) ![GitHub Tag](https://img.shields.io/github/v/tag/Voidware-Prohibited/ALS-Refactored)
157152

153+
## Vertex Detection
154+
To enable vertex detection in packaged builds (required for line tracing, procedural mesh, or runtime vertex inspection), you must enable Allow CPU Access on each mesh. This setting ensures vertex data is not stripped during cooking, allowing CPU-based functions to read vertex buffers at runtime.
155+
156+
For each Static Mesh:
157+
- Open the Static Mes in the Content Browser.
158+
- In the Details panel, check "Allow CPU Access".
159+
- Bulk Edit Meshes: For multiple meshes, select them in the Content Browser, right-click, and use Asset Actions > Bulk Edit via Property Matrix to enable this setting in bulk.
160+
- Rebuild/Repackage: Save the meshes and repackage the project for the changes to take effect in the build.
161+
162+
## CI System Requirements
163+
Systems performing Continous Intergration Workflows will have additional requirements depending on the CI solution used.
164+
- Git
165+
- OpenCppCoverage
166+
- Domain Name or ngrok (For Self Hosted CI)
167+
- Workflow Actions services and Runners configured for Forgejo/Codeberg, GitHub or GitLab.
168+
- Jenkins and Java 11 (For Jenkins)
169+
158170
# Installation
159171
[Complete Installation Instructions](../..//wiki/Installation/)
160172

@@ -227,12 +239,11 @@ Any git submodules are covered by their respective licenses. Content listed in t
227239
# Attributions
228240
[ATTRIBUTIONS](ATTRIBUTIONS.md)
229241

230-
231242
# Special Thanks
232243

233244
- [Sixze](https://github.com/Sixze/)
234245
- [Freesound](https://freesound.org/)
235246
- [SketchFab](https://sketchfab.com/)
236247
- [Mixamo](https://www.mixamo.com/)
237248
- [Joseph Thigpen, Narxim](https://github.com/Narxim/) for [Narxim-GAS-Example](https://github.com/Narxim/Narxim-GAS-Example/)
238-
- [tranek](https://github.com/tranek/) for [GASDocumentation](https://github.com/tranek/GASDocumentation/)
249+
- [tranek](https://github.com/tranek/) for [GASDocumentation](https://github.com/tranek/GASDocumentation/)

Resources/Icon128.png

-30.7 KB
Loading

Source/ALSXT/Private/AbilitySystem/GameplayAbilities/AlsxtGameplayAbilityBreathing.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
#include "AbilitySystem/GameplayAbilities/AlsxtGameplayAbilityBreathing.h"
22
#include "AbilitySystemComponent.h"
3+
#include "ChooserFunctionLibrary.h"
4+
#include "AbilitySystemComponent.h"
5+
#include "Components/AudioComponent.h"
6+
#include "Kismet/GameplayStatics.h"
37
#include "GameplayEffect.h"
8+
#include "AbilitySystem/AttributeSets/AlsxtBreathAttributeSet.h"
9+
#include "GameFramework/Character.h"
10+
#include "AbilitySystem/AttributeSets/AlsxtStaminaAttributeSet.h"
411

512
UAlsxtGameplayAbilityBreathing::UAlsxtGameplayAbilityBreathing()
613
{
@@ -28,6 +35,17 @@ void UAlsxtGameplayAbilityBreathing::ActivateAbility(const FGameplayAbilitySpecH
2835
{
2936
ActiveEffectHandle = ActorInfo->AbilitySystemComponent->ApplyGameplayEffectSpecToSelf(*SpecHandle.Data.Get());
3037
}
38+
39+
if (GetAbilitySystemComponentFromActorInfo()) {
40+
StaminaChangedDelegateHandle = GetAbilitySystemComponentFromActorInfo()->GetGameplayAttributeValueChangeDelegate(UAlsxtStaminaAttributeSet::GetCurrentStaminaAttribute()).AddUObject(this, &UAlsxtGameplayAbilityBreathing::OnStaminaChanged);
41+
}
42+
43+
// 2. Play Looping MetaSound using Ability Task
44+
ActiveBreathComponent = UGameplayStatics::SpawnSoundAttached(BreathingMetaSound, Cast<ACharacter>(GetAvatarActorFromActorInfo())->GetMesh(), VoiceSocketName);
45+
46+
// 3. Setup Deactivation Listeners (Underwater/Dead/Holding Breath)
47+
// GetAbilitySystemComponentFromActorInfo()->RegisterGameplayTagEvent(FGameplayTag::RequestGameplayTag("State.Dead"), EGameplayTagEventType::NewOrRemoved).AddUObject(this, &UAlsxtGameplayAbilityBreathing::OnDeactivationTagChanged, FOnAttributeChangeData);
48+
// ... repeat for Underwater/HoldBreath
3149
}
3250
}
3351
}
@@ -38,6 +56,31 @@ void UAlsxtGameplayAbilityBreathing::EndAbility(const FGameplayAbilitySpecHandle
3856
{
3957
ActorInfo->AbilitySystemComponent->RemoveActiveGameplayEffect(ActiveEffectHandle);
4058
}
59+
60+
if (ActiveBreathComponent)
61+
{
62+
ActiveBreathComponent->Stop();
63+
ActiveBreathComponent->DestroyComponent();
64+
}
4165

4266
Super::EndAbility(Handle, ActorInfo, ActivationInfo, bReplicateEndAbility, bWasCancelled);
4367
}
68+
69+
void UAlsxtGameplayAbilityBreathing::OnStaminaChanged(const FOnAttributeChangeData& Data)
70+
{
71+
RefreshBreathingSounds(Data.NewValue);
72+
}
73+
74+
void UAlsxtGameplayAbilityBreathing::RefreshBreathingSounds(float CurrentStamina)
75+
{
76+
// 1. Use Chooser Table to determine state (0-100 stamina -> 0-1 breathIntensity)
77+
// TODO: Fix EvaluateChooser call
78+
// FInstancedStruct Result = UChooserFunctionLibrary::EvaluateChooser(this, BreathingChooser, FContextData(CurrentStamina));
79+
// float BreathingIntensity = Result.Get<float>();
80+
float BreathingIntensity = 0.3;
81+
82+
// 2. Pass Intensity to MetaSound
83+
if (ActiveBreathComponent) {
84+
ActiveBreathComponent->SetFloatParameter(FName("BreathIntensity"), BreathingIntensity);
85+
}
86+
}

Source/ALSXT/Public/AbilitySystem/GameplayAbilities/AlsxtGameplayAbilityBreathing.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
#include "CoreMinimal.h"
44
#include "AlsxtGameplayAbilityBase.h"
5+
#include "Abilities/GameplayAbility.h"
6+
#include "Chooser.h"
57
#include "AlsxtGameplayAbilityBreathing.generated.h"
68

79
class UGameplayEffect;
@@ -24,5 +26,44 @@ class ALSXT_API UAlsxtGameplayAbilityBreathing : public UAlsxtGameplayAbilityBas
2426
UPROPERTY(EditDefaultsOnly, Category = "Gameplay Effects")
2527
TSubclassOf<UGameplayEffect> BreathingEffect;
2628

29+
UPROPERTY(EditDefaultsOnly, Category = "Gameplay Effects")
30+
FName VoiceSocketName = "HeadSocket";
31+
2732
FActiveGameplayEffectHandle ActiveEffectHandle;
33+
34+
// Chooser Table asset to define BreathState based on Stamina
35+
UPROPERTY(EditDefaultsOnly, Category = "Breathing")
36+
UChooserTable* BreathingChooser;
37+
38+
// MetaSound asset
39+
UPROPERTY(EditDefaultsOnly, Category = "Breathing")
40+
USoundBase* BreathingMetaSound;
41+
42+
// Tags to deactivate breath
43+
UPROPERTY(EditDefaultsOnly, Category = "Breathing")
44+
FGameplayTagContainer HoldingBreathTags;
45+
46+
// Tags to deactivate breath
47+
UPROPERTY(EditDefaultsOnly, Category = "Breathing")
48+
FGameplayTagContainer HoldingBreathUnderwaterTags;
49+
50+
// Tags to deactivate breath
51+
UPROPERTY(EditDefaultsOnly, Category = "Breathing")
52+
FGameplayTagContainer DeactivationTags;
53+
54+
private:
55+
void OnStaminaChanged(const FOnAttributeChangeData& Data);
56+
void OnDeactivationTagChanged(const FOnAttributeChangeData& Data);
57+
void RefreshBreathingSounds(float CurrentStamina);
58+
59+
// Ability Task handle for the persistent sound
60+
UPROPERTY()
61+
class UAudioComponent* ActiveBreathComponent;
62+
63+
FDelegateHandle StaminaChangedDelegateHandle;
2864
};
65+
66+
inline void UAlsxtGameplayAbilityBreathing::OnDeactivationTagChanged(const FOnAttributeChangeData& Data)
67+
{
68+
69+
}

0 commit comments

Comments
 (0)