전체 글213 Project_P 공격 판정 개선(Melee 방식 적용) - GA 네트워크 처리 (3) 개요 저번글에 이어서 개발한 공격 판정을 GA에 연동 및 수신한 데이터를클라이언트에서 서버로 옮기는 로직을 작성하겠다 새로운 GameAbility 기존 공격 GA는 공격 판정 GA를 함께 사용하는 방식으로공격판정을 위해 별도의 GA를 사용하였다 하지만 이번에 생성할 공격 GA는 공격 판정 GA의 기능을공격 GA에 통합하여 한개의 GA에서 콤보 공격과공격 판정 및 데미지 적용을 수행한다 이를 위해서 기존 공격 GA(UPPGA_AttackHitCheck)의 로직을 복사하여새로운 공격 GA(UPPGA_MeleeAttack)를 생성하였다 기존 GA에서 공격 판정 GA간 연동은 AnimNotify와GAS 이벤트로 연결하였다. 그래서 새로운 공격 GA에서 기존 로직을 수정하거나 삭제할 필요가 없었다 기존 공격 G.. 2026. 7. 29. Project_P 공격 판정 개선(Melee 방식 적용) - 인터페이스 함수 구현 (2) 개요 이전 AnimNotifyState 글에 이어 캐릭터 액터에 구현된인터페이스 함수와 로직에 대해 글을 작성한다 인터페이스 구현 IPPCombatInterfaceUENUM(BlueprintType)enum class EAttackCollisionType : uint8{ LongSword UMETA(DisplayName = "Long Sword Attack (Capsule Sweep)"), LeftSword UMETA(DisplayName = "Left Sword Attack (Capsule Sweep)"), RightSword UMETA(DisplayName = "Right Sword Attack (Capsule Sweep)"), BothSword UMETA(DisplayName = "Both Swo.. 2026. 7. 28. Project_P 공격 판정 개선(Melee 방식 적용) - AnimNotifyState (1) 개요 이번에 언리얼에서 제공하는 WaitTargetData 어빌리티 테스크를 사용하는 공격판정 방식에서query를 사용하여 판정하는 Sweep으로 변경을 하였다 WaitTargetData 방식은 공격 판정을 진행할 때 마다 타겟 액터를 생성 및 파괴하여단순히 공격시 스윕 판정만 하는 기본공격에는 맞지 않는다 생각하였다 그래서 언리얼 시스템에 query를 사용하여 판정을 하는 Sweep을 활용하여Melee 공격 판정 방식을 구현하였다 기존 공격판정 영상 개선된 공격판정 영상 AnimNotifyState Animation Montage 먼저 Melee 방식을 구현하기 위해 AnimNotifyState를 활용하였다또한 공격 타입, 캐릭터별로 수정해야할 변수들을 블루프린트로 꺼내어 수정하기 쉽게 설계하였다.. 2026. 7. 27. [알고리즘] 타잔 브릿지 알고리즘 개요 그래프에서 간선을 끊으면 컴포넌트가 분리되는 부분을 브릿지라고 한다이 브릿지를 타잔 브릿지 알고리즘을 사용하면 간단하게 구할 수 있다 더 자세한 설명은 아래 링크에 들어가면 볼 수 있다 Bridges in Graphs: Deep Understanding into Tarjan’s AlgorithmIntroductionmedium.com 브릿지 문제 Critical Connections in a Network - LeetCodeCan you solve this real interview question? Critical Connections in a Network - There are n servers numbered from 0 to n - 1 connected by undirected serv.. 2026. 7. 24. [알고리즘] 유니온 파인드(Union Find) 유니온 파인드 템플릿 코드struct UnionFind{ vector parents; int components; UnionFind(int n) { components = n; parents.assign(n + 1, 0); for (int i = 1; i parent_a) { swap(parent_a, parent_b); } parents[parent_b] = parent_a; components--; return true; } return false; }}; 유니온 파인드를 사용할 땐 구조.. 2026. 7. 24. Project_P GAS 게임 어빌리티 실행 함수 및 네트워크 최적화 개요 프로젝트의 콤보 공격 RPC 로직을 최적화 도중 알게된 게임어빌리티 실행 함수와네트워크 최적화한 방법을 쓴다 네트워크 최적화 InputPressed 함수void UPPGA_Attack::InputPressed(const FGameplayAbilitySpecHandle Handle, const FGameplayAbilityActorInfo* ActorInfo, const FGameplayAbilityActivationInfo ActivationInfo){ UAbilitySystemComponent* ASC = ActorInfo->AbilitySystemComponent.Get(); if (ActorInfo->IsNetAuthority()) { PPNET_SUBLOG(LogGAS, Log, TEXT(.. 2026. 6. 12. Project_P 어빌리티 시스템 컴포넌트(ASC) 설정방법 (GAS 설정) 개요 개인프로젝트를 진행하면서 UAbilityTask_PlayMontageAndWait 사용할 때 GAS를 통해서몽타주 동기화가 되지않아 별도로 인터페이스를 통해 멀티캐스트를 사용하여 구현하였다 이 같은 문제를 개발 당시에는 고치지 못해 멀티캐스트 RPC를 사용하였지만최근 해당 문제를 해결하여 글을 쓰게 됐다 문제점 기존 코드에서는 PossessedBy 함수에서 네트워크 관련 설정을 진행하였다SetIsReplicated(true) 하지만 이렇게 런타임 함수에서 네트워크 설정을 하는 경우네트워크 동기화가 문제가 발생하게 된다 개선 네트워크 관련 설정은 생성자에서 마무리 해줘야 된다이 내용을 바탕으로 SetIsReplicated 함수를 생성자로 옮기고추가적은 설정을 진행하였다 생성자(){ ASC->SetIs.. 2026. 6. 11. 메이플스토리 드랍률 오류 (모듈러 편향) 개요 얼마전 메이플스토리에서 드랍율이 표기와 다르게 적용되어 김창섭 디렉터가 공식방송에서메이플스토리의 확률 구현방법을 설명을 하였다 공식방송을 토대로 메이플스토리의 확률 구현방법을 살펴보고드랍율 오류가 왜 생겼는지 살펴보자 확률의 구현 확률을 구현할 때 대표적으로 두가지의 방법이 있다 실수실수를 이용해서 확률을 구현하는 방법은실수 $ n $을 $ 0.0 \sim 1.0 $ 범위에서 난수를 뽑아$ n $ 이 일정 확률 $ p $ 보다 작으면 당첨이 된다$ n 하지만 컴퓨터에서 실수를 구현할때 부동소수점방식으로 구현을 한다이로인해 실수( $ float $ )로 확률을 구현하면 몇가지 문제점이 있다 부동소수점의 오차$ 0.1_{(10)} = 0.00011001100110011..._{(2)} $십진수의 소수.. 2026. 4. 15. Unreal Engine 캐릭터 무브먼트의 확장(3) 텔레포트 구현 보호되어 있는 글 입니다. 2026. 4. 7. 이전 1 2 3 4 ··· 24 다음