본문으로 건너뛰기
Unreal Engine GAS(Gameplay Ability System) 심화LESSON 27

기본 공격 Ability와 근접 타격 서버 판정

난이도심화
예상 시간210분
선수지식26강의 서버 Damage Execution

27강. 기본 공격 Ability와 근접 타격 서버 판정

1. 이번 강의에서 해결할 문제​

Client Anim Notify의 Overlap만으로 Damage를 적용하면 위치·재생 속도·타깃을 조작할 수 있습니다. 서버와 Client가 각각 Trace해 두 번 Damage를 적용하거나 한 공격 창에서 같은 Actor를 여러 번 맞힐 수도 있습니다.

2. 학습 목표​

3. 핵심 개념​

소유 Client는 입력 반응과 Montage를 예측할 수 있지만 Hit Result는 서버가 현재 Avatar 위치, 공격 범위와 팀 규칙으로 다시 계산합니다. 다른 Client는 복제 Montage·Cue를 관찰합니다. 공격의 지속 상태는 Ability와 Effect가 소유하고 Multicast는 원본이 아닙니다.

4. 구현​

GA_BasicAttack.cpp 서버 판정
void UGA_BasicAttack::PerformServerHitCheck()
{
if (!HasAuthority(&CurrentActivationInfo)) return;

AActor* Avatar = GetAvatarActorFromActorInfo();
UWorld* World = Avatar ? Avatar->GetWorld() : nullptr;
if (!World) return;

const FVector Start = Avatar->GetActorLocation();
const FVector End = Start + Avatar->GetActorForwardVector() * AttackRange;
TArray<FHitResult> Hits;
FCollisionQueryParams Params(SCENE_QUERY_STAT(GASBasicAttack), false, Avatar);

World->SweepMultiByChannel(Hits, Start, End, FQuat::Identity,
ECC_Pawn, FCollisionShape::MakeSphere(AttackRadius), Params);

for (const FHitResult& Hit : Hits)
{
AActor* Target = Hit.GetActor();
if (!IsValidServerTarget(Target) || HitActors.Contains(Target)) continue;
HitActors.Add(Target);
ApplyDamageEffect(Target, Hit);
}
}

Montage Task의 Event Tag 또는 서버 Montage Notify가 Attack Window를 엽니다. HitActors는 Ability 활성화 시작에 비우고 End에서 정리합니다. 서버는 거리·팀·Dead·Invulnerable을 검사합니다.

5. 코드가 동작하는 이유​

서버 World Collision이 최종 Target을 만들고 한 활성화의 Set이 중복 타격을 막습니다. Client Montage는 즉시 반응하지만 서버 Effect 결과가 Attribute·Cue를 통해 모든 창에 전달됩니다.

6. 실패 사례와 해결​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

기본 공격 Ability와 근접 타격 서버 판정 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“기본 공격 Ability와 근접 타격 서버 판정” 구현을 설계할 때 책임과 구조를 올바르게 나눈 선택은 무엇인가요?
  2. 문제 2‘Montage 종료 Delegate 누락’ 상태에 관한 “기본 공격 Ability와 근접 타격 서버 판정” 본문의 설명으로 가장 알맞은 것은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

27강. 기본 공격 Ability와 근접 타격 서버 판정 미완료 상태