From de7d73125b54a6c6139d7f62e8646fd5290ec0a3 Mon Sep 17 00:00:00 2001 From: Kingsmedia Date: Fri, 27 May 2022 18:36:56 +0200 Subject: [PATCH] 189 - Score Request --- Content/Maps/BlasterMap.umap | Bin 1358397 -> 1342500 bytes .../Components/LagCompensationComponent.cpp | 41 ++++++++++++++---- .../Components/LagCompensationComponent.h | 11 ++++- .../BlasterPlayerController.cpp | 3 +- .../BlasterPlayerController.h | 2 + Source/Blaster/Weapon/HitScanWeapon.cpp | 37 ++++++++++++---- Source/Blaster/Weapon/HitScanWeapon.h | 3 -- Source/Blaster/Weapon/Weapon.h | 21 ++++++--- 8 files changed, 90 insertions(+), 28 deletions(-) diff --git a/Content/Maps/BlasterMap.umap b/Content/Maps/BlasterMap.umap index ce5b2f6c435427e94631ecb9891b047be52d5432..6e1a06cf6cb3cefd2e1c651259c7e3984e202622 100644 GIT binary patch delta 171396 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, + Character->Controller, + DamageCauser, + UDamageType::StaticClass() + ); + } +} + void ULagCompensationComponent::SaveFramePackage(FFramePackage& Package) { Character = Character == nullptr ? Cast(GetOwner()) : Character; @@ -116,11 +136,11 @@ FServerSideRewindResult ULagCompensationComponent::ConfirmHit(const FFramePackag EnableCharacterMeshCollision(HitCharacter, ECollisionEnabled::QueryAndPhysics); return FServerSideRewindResult{ true, false }; } - - ResetHitBoxes(HitCharacter, CurrentFrame); - EnableCharacterMeshCollision(HitCharacter, ECollisionEnabled::QueryAndPhysics); - return FServerSideRewindResult{ false, false }; } + + ResetHitBoxes(HitCharacter, CurrentFrame); + EnableCharacterMeshCollision(HitCharacter, ECollisionEnabled::QueryAndPhysics); + return FServerSideRewindResult{ false, false }; } void ULagCompensationComponent::CacheBoxPositions(ABlasterCharacter* HitCharacter, FFramePackage& OutFramePackage) @@ -258,6 +278,12 @@ void ULagCompensationComponent::TickComponent(float DeltaTime, ELevelTick TickTy { Super::TickComponent(DeltaTime, TickType, ThisTickFunction); + SaveFramePackage(); +} + +void ULagCompensationComponent::SaveFramePackage() +{ + if (Character == nullptr || !Character->HasAuthority()) return; if (FrameHistory.Num() <= 1) { FFramePackage ThisFrame; @@ -270,12 +296,11 @@ void ULagCompensationComponent::TickComponent(float DeltaTime, ELevelTick TickTy while (HistoryLength > MaxRecordTime) { FrameHistory.RemoveNode(FrameHistory.GetTail()); - HistoryLength = FrameHistory.GetHead()->GetValue().Time - FrameHistory.GetTail()->GetValue().Time; + HistoryLength = FrameHistory.GetHead()->GetValue().Time - FrameHistory.GetTail()->GetValue().Time; } FFramePackage ThisFrame; SaveFramePackage(ThisFrame); FrameHistory.AddHead(ThisFrame); - ShowFramePackage(ThisFrame, FColor::Red); + // ShowFramePackage(ThisFrame, FColor::Red); } -} - +} \ No newline at end of file diff --git a/Source/Blaster/Components/LagCompensationComponent.h b/Source/Blaster/Components/LagCompensationComponent.h index e47b753..f0c7361 100644 --- a/Source/Blaster/Components/LagCompensationComponent.h +++ b/Source/Blaster/Components/LagCompensationComponent.h @@ -56,9 +56,18 @@ public: virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override; void ShowFramePackage(const FFramePackage& Package, const FColor Color); FServerSideRewindResult ServerSideRewind(class ABlasterCharacter* HitCharacter, const FVector_NetQuantize& TraceStart, const FVector_NetQuantize& HitLocation, float HitTime); - + + UFUNCTION(Server, Reliable) + void ServerScoreRequest( + ABlasterCharacter* HitCharacter, + const FVector_NetQuantize& TraceStart, + const FVector_NetQuantize& HitLocation, + float HitTime, + class AWeapon* DamageCauser + ); protected: virtual void BeginPlay() override; + void SaveFramePackage(); void SaveFramePackage(FFramePackage& Package); FFramePackage InterpBetweenFrames(const FFramePackage& OlderFrame, const FFramePackage& YoungerFrame, float HitTime); FServerSideRewindResult ConfirmHit(const FFramePackage& Package, ABlasterCharacter* HitCharacter, const FVector_NetQuantize& TraceStart, const FVector_NetQuantize HitLocation); diff --git a/Source/Blaster/PlayerController/BlasterPlayerController.cpp b/Source/Blaster/PlayerController/BlasterPlayerController.cpp index 5d04a09..9d9db60 100644 --- a/Source/Blaster/PlayerController/BlasterPlayerController.cpp +++ b/Source/Blaster/PlayerController/BlasterPlayerController.cpp @@ -468,7 +468,8 @@ void ABlasterPlayerController::ServerRequestServerTime_Implementation(float Time void ABlasterPlayerController::ClientReportServerTime_Implementation(float TimeOfClientRequest, float TimeServerReceivedClientRequest) { float RoundTripTime = GetWorld()->GetTimeSeconds() - TimeOfClientRequest; - float CurrentServerTime = TimeServerReceivedClientRequest + 0.5f * RoundTripTime; + SingleTripTime = 0.5f * RoundTripTime; + float CurrentServerTime = TimeServerReceivedClientRequest + SingleTripTime; ClientServerDelta = CurrentServerTime - GetWorld()->GetTimeSeconds(); } diff --git a/Source/Blaster/PlayerController/BlasterPlayerController.h b/Source/Blaster/PlayerController/BlasterPlayerController.h index 4dd6a0e..2b744f5 100644 --- a/Source/Blaster/PlayerController/BlasterPlayerController.h +++ b/Source/Blaster/PlayerController/BlasterPlayerController.h @@ -44,6 +44,8 @@ public: void OnMatchStateSet(FName State); void HandleCooldown(); + + float SingleTripTime = 0.f; protected: diff --git a/Source/Blaster/Weapon/HitScanWeapon.cpp b/Source/Blaster/Weapon/HitScanWeapon.cpp index 7d483ed..cca2925 100644 --- a/Source/Blaster/Weapon/HitScanWeapon.cpp +++ b/Source/Blaster/Weapon/HitScanWeapon.cpp @@ -4,6 +4,8 @@ #include "HitScanWeapon.h" #include "Blaster/Character/BlasterCharacter.h" +#include "Blaster/Components/LagCompensationComponent.h" +#include "Blaster/PlayerController/BlasterPlayerController.h" #include "Engine/SkeletalMeshSocket.h" #include "Kismet/GameplayStatics.h" #include "Particles/ParticleSystemComponent.h" @@ -26,15 +28,34 @@ void AHitScanWeapon::Fire(const FVector& HitTarget) WeaponTraceHit(Start, HitTarget, FireHit); ABlasterCharacter* BlasterCharacter = Cast(FireHit.GetActor()); - if (BlasterCharacter && HasAuthority() && InstigatorController) + if (BlasterCharacter && InstigatorController) { - UGameplayStatics::ApplyDamage( - BlasterCharacter, - Damage, - InstigatorController, - this, - UDamageType::StaticClass() - ); + if (HasAuthority() && !bUseServerSideRewind) + { + UGameplayStatics::ApplyDamage( + BlasterCharacter, + Damage, + InstigatorController, + this, + UDamageType::StaticClass() + ); + } + else if (!HasAuthority() && bUseServerSideRewind) + { + OwnerCharacter = OwnerCharacter == nullptr ? Cast(OwnerPawn) : OwnerCharacter; + OwnerController = OwnerController == nullptr ? Cast(InstigatorController) : OwnerController; + + if (OwnerCharacter && OwnerController && OwnerCharacter->GetLagCompensation()) + { + OwnerCharacter->GetLagCompensation()->ServerScoreRequest( + BlasterCharacter, + Start, + HitTarget, + OwnerController->GetServerTime() - OwnerController->SingleTripTime, + this + ); + } + } } if (ImpactParticles) { diff --git a/Source/Blaster/Weapon/HitScanWeapon.h b/Source/Blaster/Weapon/HitScanWeapon.h index 8a65489..6478199 100644 --- a/Source/Blaster/Weapon/HitScanWeapon.h +++ b/Source/Blaster/Weapon/HitScanWeapon.h @@ -26,9 +26,6 @@ protected: UPROPERTY(EditAnywhere) USoundCue* HitSound; - UPROPERTY(EditAnywhere) - float Damage = 20.f; - private: UPROPERTY(EditAnywhere) diff --git a/Source/Blaster/Weapon/Weapon.h b/Source/Blaster/Weapon/Weapon.h index 0679316..12f4049 100644 --- a/Source/Blaster/Weapon/Weapon.h +++ b/Source/Blaster/Weapon/Weapon.h @@ -124,6 +124,18 @@ protected: UPROPERTY(EditAnywhere, Category = "Weapon Scatter") float SphereRadius = 75.f; + UPROPERTY(EditAnywhere) + float Damage = 20.f; + + UPROPERTY(EditAnywhere) + bool bUseServerSideRewind = false; + + UPROPERTY() + class ABlasterCharacter* OwnerCharacter; + + UPROPERTY() + class ABlasterPlayerController* OwnerController; + private: UPROPERTY(VisibleAnywhere, Category = "Weapon Properties") USkeletalMeshComponent* WeaponMesh; @@ -164,12 +176,6 @@ private: // Incremented in SpendRound(), decremented in ClientUpdateAmmo() int32 Sequence = 0; - UPROPERTY() - class ABlasterCharacter* OwnerCharacter; - - UPROPERTY() - class ABlasterPlayerController* OwnerController; - UPROPERTY(EditAnywhere) EWeaponType WeaponType; @@ -184,7 +190,8 @@ public: FORCEINLINE int32 GetMagCapacity() const { return MagCapacity; } bool IsEmpty(); bool IsFull(); - + FORCEINLINE float GetDamage() const { return Damage; } + // Convenience methods for WeaponType FORCEINLINE bool IsPistol() const { return WeaponType == EWeaponType::EWT_Pistol; } FORCEINLINE bool IsSMG() const { return WeaponType == EWeaponType::EWT_SubmachineGun; }