Compare commits

...

33 Commits

Author SHA1 Message Date
620d480dc0 Player Dies oof 2024-12-08 23:54:09 +00:00
0113c6c958 Merge branch 'dev' into Enemies
# Conflicts:
#	Content/Levels/PrototypeLevel.umap
2024-12-08 16:06:54 +00:00
89ac0f76fc Merge remote-tracking branch 'origin/dev' into Bump-Unreal-Version-5.5 2024-12-04 21:49:19 +00:00
d450238bae Merge branch 'Ability' into dev
# Conflicts:
#	Content/Levels/PrototypeLevel.umap
2024-12-04 12:49:54 +00:00
2298912e66 Finished ability 1
I finished the ability one by giving the ability knockback, allowing for the large enemy hit by the attack to get thrown back away. I added in a print string into flats monster to check if the apply damage was working
2024-12-04 12:46:29 +00:00
4a69b5e40f Bump Unreal version to 5.5 on this branch 2024-12-04 12:04:01 +00:00
b9fff1cc54 Update Advanced Sessions Steam Plugin 2024-12-03 23:56:13 +00:00
ef644ea7b4 Bump Unreal Version to 5.5 from 5.4.4 2024-12-03 23:20:28 +00:00
4c47b7cbeb Fixed mapping controller bug
Added a clear mapping node before changing the input map so that it doesnt break the game anymore
2024-12-03 21:48:58 +00:00
42870b149e Merge branch 'Prototype-level-rework' into dev 2024-12-03 12:55:28 +00:00
cf509a1ea2 Added monolith ability boolean
Added a boolean for the monolith so that when the monolith is in an animation, it isnt able to move or do any other actions. Added the boolean to the flats monster too.
2024-12-03 12:53:38 +00:00
f040467f21 IDK 2024-12-02 19:15:43 +00:00
eea95f8eee Fixed play montage not working 2024-12-02 19:14:46 +00:00
4548c18928 changed something 2024-12-02 18:59:02 +00:00
987e68fec9 Changed all buildings in prototype level rework to chaos destruction assets 2024-12-02 10:33:50 +00:00
59768da769 Added spawn area in a forest 2024-12-01 17:16:47 +00:00
3ba86a0d80 IDk tbh 2024-11-30 20:32:26 +00:00
a492419199 Changed the rig for the monolith 2024-11-30 20:29:59 +00:00
f2616a24a9 Added ability 1 animation montage 2024-11-30 20:29:29 +00:00
48a5df9a3d Added in flats monster
Added in the flats monster blueprint
2024-11-30 20:19:58 +00:00
efca89e169 Added in the flats monster
Added in the flats monster into the game
2024-11-30 19:04:30 +00:00
d76b47630f Added in socket to monolith mesh
Added in a socket to the monolith mesh so that the ability 1 would attach the enemy mesh to the socket and play their retrospective animations
2024-11-30 19:02:34 +00:00
cb9fef137a Added in ability 1 animation
Added in the animation for ability one to pair it with the actual ability 1
2024-11-30 19:01:40 +00:00
bc36eafe11 Changed input mapping for abilities
I changed the input mapping for the abilities so it uses the new enhanced version
2024-11-29 15:52:20 +00:00
e0a1361439 Fixed the weapons and abilities
Fixed the melee and ability 1 so that they despawn and would apply damage etc
2024-11-29 15:51:39 +00:00
d284012315 Fixed the monolith not jumping
I fixed the jumping by replacing the IA node with the correct one so it works
2024-11-29 15:37:26 +00:00
b1d6bdee0e Added in 3 quests into the quest data table
Added in the 2 main quests and one side quest i designed for the prototype into the table and are ready to be added into the game itself
2024-11-28 17:36:05 +00:00
9529226834 Added in more chaos destruction assets
Added in a combined mesh large medium and small buildings with less fractures in order to optimize the framerate
2024-11-28 17:10:41 +00:00
e68f56be1c Added performance fixes
Added shadow changes, and a disable field in order to make the destruction more optimised
2024-11-21 11:44:20 +00:00
dd52759b0d Added New input for monolith
I updated the basic movement settings to the enhanced input settings to allow for a cool rotation thing in the game
2024-11-20 13:22:04 +00:00
79934e983a Made the camera not shit 2024-11-19 17:24:31 +00:00
5bbb4a8003 forgot to push this 2024-11-19 16:30:09 +00:00
8487ec6134 Created destructible buildings and added collisions to mech 2024-11-19 16:29:18 +00:00
47 changed files with 196 additions and 35 deletions

Binary file not shown.

BIN
Content/Assets/ChaosAssets/AnchorField.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Assets/ChaosAssets/DisableField.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Assets/ChaosAssets/LargeBuilding.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Assets/ChaosAssets/LargeBuildingCombined.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Assets/ChaosAssets/MediumBuilding.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Assets/ChaosAssets/MediumBuildingCombined.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Assets/ChaosAssets/SmallBuildingDestruction.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Enemies/Flats/BP_FlatsMonster.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Enemies/Flats/FlatsMonsterRigged.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Enemies/Flats/FlatsMonsterRigged_PhysicsAsset.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Enemies/Flats/FlatsMonsterRigged_Skeleton.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Enemies/Small/BP_SmallEnemy.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Enemies/Small/BTT_Attack.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Enemies/Small/BT_SmallEnemy.uasset (Stored with Git LFS)

Binary file not shown.

Binary file not shown.

BIN
Content/Levels/PrototypeLevel.umap (Stored with Git LFS)

Binary file not shown.

BIN
Content/Levels/PrototypeLevelRework.umap (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Monolith/Animations/Ability_1.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Monolith/Animations/Ability_1Montage.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Monolith/Animations/MonolithAnimBlueprint.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Monolith/BPI_AOverheat.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Monolith/BPI_Bullet.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Monolith/BPI_MeeleWeapon.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Monolith/BPI_Monolith.uasset (Stored with Git LFS)

Binary file not shown.

BIN
Content/Monolith/Input/IA_MAbilitySelection.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Monolith/Input/IA_MJump.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Monolith/Input/IA_MLook.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Monolith/Input/IA_MMove.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Monolith/Input/IA_Mability1.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Monolith/Input/IMC_Monolith.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/Monolith/UI/WBP_Died.uasset (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Content/QuestSystem/QuestData.uasset (Stored with Git LFS)

Binary file not shown.

View File

@ -1,6 +1,6 @@
{ {
"FileVersion": 3, "FileVersion": 3,
"EngineAssociation": "5.4", "EngineAssociation": "5.5",
"Category": "", "Category": "",
"Description": "", "Description": "",
"Modules": [ "Modules": [

View File

@ -1,8 +1,8 @@
{ {
"FileVersion": 3, "FileVersion": 3,
"FriendlyName": "Advanced Sessions", "FriendlyName": "Advanced Sessions",
"Version": 5.4, "Version": 5.5,
"VersionName": "5.4", "VersionName": "5.5",
"Description": "Adds new blueprint functions to handle more advanced session operations.", "Description": "Adds new blueprint functions to handle more advanced session operations.",
"Category": "Advanced Sessions Plugin", "Category": "Advanced Sessions Plugin",
"CreatedBy": "Joshua Statzer", "CreatedBy": "Joshua Statzer",

View File

@ -52,6 +52,13 @@ public:
FOnSessionInviteReceivedDelegate SessionInviteReceivedDelegate; FOnSessionInviteReceivedDelegate SessionInviteReceivedDelegate;
FDelegateHandle SessionInviteReceivedDelegateHandle; FDelegateHandle SessionInviteReceivedDelegateHandle;
// custom handle to join directly from steam ui "Join Game"
FDelegateHandle OnJoinSessionCompleteDelegateHandle;
// custom Steam UI Join User function #Self invite#
void OnSessionUserInviteAccepted(const bool bWasSuccessful, const int32 ControllerId, FUniqueNetIdPtr UserId, const FOnlineSessionSearchResult& InviteResult);
// custom Steam UI function to client travel #Self invite#
void OnJoinSessionComplete(FName SessionName, EOnJoinSessionCompleteResult::Type Result);
//const FUniqueNetId& /*UserId*/, const FUniqueNetId& /*FromId*/, const FString& /*AppId*/, const FOnlineSessionSearchResult& /*InviteResult*/ //const FUniqueNetId& /*UserId*/, const FUniqueNetId& /*FromId*/, const FString& /*AppId*/, const FOnlineSessionSearchResult& /*InviteResult*/
void OnSessionInviteReceivedMaster(const FUniqueNetId & PersonInvited, const FUniqueNetId & PersonInviting, const FString & AppId, const FOnlineSessionSearchResult& SessionToJoin); void OnSessionInviteReceivedMaster(const FUniqueNetId & PersonInvited, const FUniqueNetId & PersonInviting, const FString & AppId, const FOnlineSessionSearchResult& SessionToJoin);

View File

@ -28,7 +28,7 @@ class UFindSessionsCallbackProxyAdvanced : public UOnlineBlueprintCallProxyBase
// Searches for advertised sessions with the default online subsystem and includes an array of filters // Searches for advertised sessions with the default online subsystem and includes an array of filters
UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true", WorldContext = "WorldContextObject", AutoCreateRefTerm="Filters"), Category = "Online|AdvancedSessions") UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true", WorldContext = "WorldContextObject", AutoCreateRefTerm="Filters"), Category = "Online|AdvancedSessions")
static UFindSessionsCallbackProxyAdvanced* FindSessionsAdvanced(UObject* WorldContextObject, class APlayerController* PlayerController, int32 MaxResults, bool bUseLAN, EBPServerPresenceSearchType ServerTypeToSearch, const TArray<FSessionsSearchSetting> &Filters, bool bEmptyServersOnly = false, bool bNonEmptyServersOnly = false, bool bSecureServersOnly = false, bool bSearchLobbies = true, int MinSlotsAvailable = 0); static UFindSessionsCallbackProxyAdvanced* FindSessionsAdvanced(UObject* WorldContextObject, class APlayerController* PlayerController, int32 MaxResults, bool bUseLAN, EBPServerPresenceSearchType ServerTypeToSearch, const TArray<FSessionsSearchSetting> &Filters, bool bEmptyServersOnly = false, bool bNonEmptyServersOnly = false, bool bSecureServersOnly = false, /*bool bSearchLobbies = true,*/ int MinSlotsAvailable = 0);
static bool CompareVariants(const FVariantData &A, const FVariantData &B, EOnlineComparisonOpRedux Comparator); static bool CompareVariants(const FVariantData &A, const FVariantData &B, EOnlineComparisonOpRedux Comparator);
@ -99,7 +99,7 @@ private:
bool bSecureServersOnly; bool bSecureServersOnly;
// Search through lobbies // Search through lobbies
bool bSearchLobbies; //bool bSearchLobbies;
// Min slots requires to search // Min slots requires to search
int MinSlotsAvailable; int MinSlotsAvailable;

View File

@ -20,6 +20,37 @@ UAdvancedFriendsGameInstance::UAdvancedFriendsGameInstance(const FObjectInitiali
{ {
} }
void UAdvancedFriendsGameInstance::OnSessionUserInviteAccepted(const bool bWasSuccessful, const int32 ControllerId, FUniqueNetIdPtr UserId, const FOnlineSessionSearchResult& InviteResult)
{
IOnlineSessionPtr SessionInterface = Online::GetSessionInterface(GetWorld());
if (SessionInterface.IsValid())
{
SessionInterface->ClearOnJoinSessionCompleteDelegate_Handle(OnJoinSessionCompleteDelegateHandle);
OnJoinSessionCompleteDelegateHandle = SessionInterface->AddOnJoinSessionCompleteDelegate_Handle(
FOnJoinSessionCompleteDelegate::CreateUObject(this, &UAdvancedFriendsGameInstance::OnJoinSessionComplete));
SessionInterface->JoinSession(0, NAME_GameSession, InviteResult);
}
UE_LOG(AdvancedFriendsInterfaceLog, Log, TEXT("Called Join Session for Steam Friends List UI InviteResults: %s, UserId: %s"), *InviteResult.GetSessionIdStr(), *UserId->ToString());
}
void UAdvancedFriendsGameInstance::OnJoinSessionComplete(FName SessionName, EOnJoinSessionCompleteResult::Type Result)
{
IOnlineSessionPtr SessionInterface = Online::GetSessionInterface(GetWorld());
if (SessionInterface.IsValid())
{
FString ConnectInfo;
if (SessionInterface->GetResolvedConnectString(NAME_GameSession, ConnectInfo))
{
APlayerController* PlayerController = GetFirstLocalPlayerController();
if (PlayerController)
{
PlayerController->ClientTravel(ConnectInfo, ETravelType::TRAVEL_Absolute);
}
}
}
}
void UAdvancedFriendsGameInstance::Shutdown() void UAdvancedFriendsGameInstance::Shutdown()
{ {
IOnlineSessionPtr SessionInterface = Online::GetSessionInterface(GetWorld()); IOnlineSessionPtr SessionInterface = Online::GetSessionInterface(GetWorld());
@ -34,6 +65,7 @@ void UAdvancedFriendsGameInstance::Shutdown()
// Clear all of the delegate handles here // Clear all of the delegate handles here
SessionInterface->ClearOnSessionUserInviteAcceptedDelegate_Handle(SessionInviteAcceptedDelegateHandle); SessionInterface->ClearOnSessionUserInviteAcceptedDelegate_Handle(SessionInviteAcceptedDelegateHandle);
SessionInterface->ClearOnSessionInviteReceivedDelegate_Handle(SessionInviteReceivedDelegateHandle); SessionInterface->ClearOnSessionInviteReceivedDelegate_Handle(SessionInviteReceivedDelegateHandle);
SessionInterface->ClearOnJoinSessionCompleteDelegate_Handle(OnJoinSessionCompleteDelegateHandle);
} }
@ -80,6 +112,9 @@ void UAdvancedFriendsGameInstance::Init()
SessionInviteAcceptedDelegateHandle = SessionInterface->AddOnSessionUserInviteAcceptedDelegate_Handle(SessionInviteAcceptedDelegate); SessionInviteAcceptedDelegateHandle = SessionInterface->AddOnSessionUserInviteAcceptedDelegate_Handle(SessionInviteAcceptedDelegate);
SessionInviteReceivedDelegateHandle = SessionInterface->AddOnSessionInviteReceivedDelegate_Handle(SessionInviteReceivedDelegate); SessionInviteReceivedDelegateHandle = SessionInterface->AddOnSessionInviteReceivedDelegate_Handle(SessionInviteReceivedDelegate);
// Custom steam join game delegate
SessionInterface->OnSessionUserInviteAcceptedDelegates.AddUObject(this, &UAdvancedFriendsGameInstance::OnSessionUserInviteAccepted);
} }
else else
{ {

View File

@ -16,7 +16,7 @@ UFindSessionsCallbackProxyAdvanced::UFindSessionsCallbackProxyAdvanced(const FOb
bIsOnSecondSearch = false; bIsOnSecondSearch = false;
} }
UFindSessionsCallbackProxyAdvanced* UFindSessionsCallbackProxyAdvanced::FindSessionsAdvanced(UObject* WorldContextObject, class APlayerController* PlayerController, int MaxResults, bool bUseLAN, EBPServerPresenceSearchType ServerTypeToSearch, const TArray<FSessionsSearchSetting> &Filters, bool bEmptyServersOnly, bool bNonEmptyServersOnly, bool bSecureServersOnly, bool bSearchLobbies, int MinSlotsAvailable) UFindSessionsCallbackProxyAdvanced* UFindSessionsCallbackProxyAdvanced::FindSessionsAdvanced(UObject* WorldContextObject, class APlayerController* PlayerController, int MaxResults, bool bUseLAN, EBPServerPresenceSearchType ServerTypeToSearch, const TArray<FSessionsSearchSetting> &Filters, bool bEmptyServersOnly, bool bNonEmptyServersOnly, bool bSecureServersOnly, /*bool bSearchLobbies,*/ int MinSlotsAvailable)
{ {
UFindSessionsCallbackProxyAdvanced* Proxy = NewObject<UFindSessionsCallbackProxyAdvanced>(); UFindSessionsCallbackProxyAdvanced* Proxy = NewObject<UFindSessionsCallbackProxyAdvanced>();
Proxy->PlayerControllerWeakPtr = PlayerController; Proxy->PlayerControllerWeakPtr = PlayerController;
@ -28,7 +28,7 @@ UFindSessionsCallbackProxyAdvanced* UFindSessionsCallbackProxyAdvanced::FindSess
Proxy->bEmptyServersOnly = bEmptyServersOnly, Proxy->bEmptyServersOnly = bEmptyServersOnly,
Proxy->bNonEmptyServersOnly = bNonEmptyServersOnly; Proxy->bNonEmptyServersOnly = bNonEmptyServersOnly;
Proxy->bSecureServersOnly = bSecureServersOnly; Proxy->bSecureServersOnly = bSecureServersOnly;
Proxy->bSearchLobbies = bSearchLobbies; //Proxy->bSearchLobbies = bSearchLobbies;
Proxy->MinSlotsAvailable = MinSlotsAvailable; Proxy->MinSlotsAvailable = MinSlotsAvailable;
return Proxy; return Proxy;
} }
@ -114,9 +114,9 @@ void UFindSessionsCallbackProxyAdvanced::Activate()
case EBPServerPresenceSearchType::ClientServersOnly: case EBPServerPresenceSearchType::ClientServersOnly:
{ {
tem.Set(SEARCH_PRESENCE, true, EOnlineComparisonOp::Equals); //tem.Set(SEARCH_PRESENCE, true, EOnlineComparisonOp::Equals);
if (bSearchLobbies && !IOnlineSubsystem::DoesInstanceExist("STEAM")) //if (bSearchLobbies)// && !IOnlineSubsystem::DoesInstanceExist("STEAM"))
tem.Set(SEARCH_LOBBIES, true, EOnlineComparisonOp::Equals); tem.Set(SEARCH_LOBBIES, true, EOnlineComparisonOp::Equals);
} }
break; break;
@ -140,9 +140,9 @@ void UFindSessionsCallbackProxyAdvanced::Activate()
FOnlineSearchSettingsEx DedicatedOnly = tem; FOnlineSearchSettingsEx DedicatedOnly = tem;
tem.Set(SEARCH_PRESENCE, true, EOnlineComparisonOp::Equals); //tem.Set(SEARCH_PRESENCE, true, EOnlineComparisonOp::Equals);
if (bSearchLobbies && !IOnlineSubsystem::DoesInstanceExist("STEAM")) //if (bSearchLobbies)// && !IOnlineSubsystem::DoesInstanceExist("STEAM"))
tem.Set(SEARCH_LOBBIES, true, EOnlineComparisonOp::Equals); tem.Set(SEARCH_LOBBIES, true, EOnlineComparisonOp::Equals);
//DedicatedOnly.Set(SEARCH_DEDICATED_ONLY, true, EOnlineComparisonOp::Equals); //DedicatedOnly.Set(SEARCH_DEDICATED_ONLY, true, EOnlineComparisonOp::Equals);

View File

@ -46,6 +46,7 @@ void AMonolithCharacter::BeginPlay()
// Call the base class // Call the base class
Super::BeginPlay(); Super::BeginPlay();
MaxHealth = Health;
Mesh1P = Cast<USkeletalMeshComponent>(GetComponentByClass(USkeletalMeshComponent::StaticClass())); Mesh1P = Cast<USkeletalMeshComponent>(GetComponentByClass(USkeletalMeshComponent::StaticClass()));
CharMove = Cast<UCharacterMovementComponent>(GetComponentByClass(UCharacterMovementComponent::StaticClass())); CharMove = Cast<UCharacterMovementComponent>(GetComponentByClass(UCharacterMovementComponent::StaticClass()));
if (CharMove) WalkSpeed = CharMove->MaxWalkSpeed; if (CharMove) WalkSpeed = CharMove->MaxWalkSpeed;
@ -122,6 +123,19 @@ static void UpdateMoveState(FMoveState& MoveState, int Forwards, int Sideways)
} }
} }
void AMonolithCharacter::IncrementHealth(float amount)
{
Health += amount;
if (Health > MaxHealth)
{
Health = MaxHealth;
}
else if (Health <= 0)
{
Died();
}
}
void AMonolithCharacter::Move(const FInputActionValue& Value) void AMonolithCharacter::Move(const FInputActionValue& Value)
{ {
// input is a Vector2D // input is a Vector2D

View File

@ -59,6 +59,11 @@ class AMonolithCharacter : public ACharacter
UPROPERTY(EditAnywhere, Category = "MoveState", meta=(AllowPrivateAccess = "true")) UPROPERTY(EditAnywhere, Category = "MoveState", meta=(AllowPrivateAccess = "true"))
float DashImpulse = 600.f; float DashImpulse = 600.f;
UPROPERTY(EditDefaultsOnly, Category = "Health", meta=(AllowPrivateAccess = "true"))
float Health = 100.f;
float MaxHealth;
USkeletalMeshComponent* Mesh1P; USkeletalMeshComponent* Mesh1P;
UCharacterMovementComponent* CharMove; UCharacterMovementComponent* CharMove;
@ -70,6 +75,25 @@ protected:
void BeginPlay(); void BeginPlay();
void Tick(float DeltaSeconds) override; void Tick(float DeltaSeconds) override;
UFUNCTION(BlueprintCallable)
float GetHealth()
{
return Health;
}
UFUNCTION(BlueprintCallable)
void ResetHealth()
{
Health = MaxHealth;
}
// Increase/Decrease health by this amount, will handle death
UFUNCTION(BlueprintCallable)
void IncrementHealth(float amount);
UFUNCTION(BlueprintImplementableEvent)
void Died();
/** Called for movement input */ /** Called for movement input */
void Move(const FInputActionValue& Value); void Move(const FInputActionValue& Value);
void StopMove(); void StopMove();