언리얼

· Game/Unreal
URR Defence GAS를 적용한 Defence게임을 만들 예정이다. URR 프로젝트 기간 2024.04.07 프로젝트 인원 1명 UE 버전 UE 5.3 git https://github.com/minhvvan/URR IDE VisualStudio 게임 시스템 URR은 우르르라는 뜻이다. 우르르라는 이름을 지은 이유는 2048게임을 응용하기 때문이다. 2048게임은 1, 2, 4등 2의 제곱수가 적힌 타일을 하나의 방향으로 움직이고, 서로 같은 수가 만나면 합쳐진다. 이러한 원리를 통해 최종적으로 2048을 만들어내는 게임이다. 이런 콘셉트를 이용하여 디펜스게임을 만들면 재밌을 것 같다는 생각을 했다. 하나의 방향으로 모든 타일이 우르르 몰려가기 때문에 URR라고 이름을 지었다. 이 프로젝트의 핵심은..
· Game/Unreal
캐릭터 입력 GAS를 이용하면 원하는 시점에 부여한 Ability를 실행시킬 수 있다. 이를 캐릭터 입력에 적용하는 법을 알아보자. UE5는 기본적으로 EnhancedInput을 이용하여 캐릭터에서 입력을 처리한다. 샘플 프로젝트를 열어보면 캐릭터에 점프까지 구현이 되어 있을 것이다. 이번 예시에서는 GAS를 이용하여 점프나 공격 같은 특수한 행동을 실행하도록 설계할 것이다. 물론 캐릭터에서도 구현할 수 있지만 그렇게 하면 캐릭터 클래스의 코드가 방대해져 관리가 힘들 수 있다. 또한, 특수한 기능이나 효과를 넣고 싶을 때 불필요한 의존성이 발생할 수도 있다. 따라서, GAS를 통해 Ability로 분리하여 관리하는 것이 효과적일 것이라는 생각이 든다. 캐릭터 설계 GAS를 적용하려면 AbilitySyst..
· Game/Unreal
GAS 동작원리 GAS를 적용하기 위해서는 기본적인 규칙을 지켜야 한다. GAS를 적용할 액터에 AbilitySystemInterface의 GetAbilitySystemComponent()를 구현해야 한다. GetAbilitySystemComponent에서는 액터가 소유한 ASC(AbilitySystemComponent)를 return 해줘야 한다. 이렇게 설정된 ASC에 Ability를 부여하고 원하는 타이밍에 Ability를 발동시키면 된다. 간단한 예를 들어보자. 어떤 액터가 게임이 시작함과 동시에 계속하여 반복하는 행위를 한다고 가정해보자. 그렇다면 반복되는 행위를 Ability로 만들고 BeginPlay나 특정한 시점에 Abiltiy를 활성화시키면 된다. 예시 앞에서 말한 대로 예시를 만들어보자..
· Game/Unreal
UserWidget의 Native UserWidget을 상속하여 UMG작업을 하면 Native~~라는 함수를 자주 사용한다. 하지만, UserWidget에는 Native가 없는 함수들도 존재한다. 예를 들면, UserWidget에는 NativeOnMouseButtonDown라는 함수도 존재하고 OnMouseButtonDown라는 함수도 존재한다. 이 두 함수의 차이점을 알고 싶어 자세히 살펴보니 NativeOnMouseButtonDown에서 OnMouseButtonDown를 호출하는 것을 알 수 있었다. 그렇다면 NativeOnMouseButtonDown가 존재하는 이유가 무엇인지 알아보려 글을 쓴다. Native 위에서 언급한 두 함수의 차이는 Native의 여부이다. 따라서, Native에 대해 알아..
· Game/Unreal
Travel Map을 이동하기 위해서는 Travel을 이용해야 한다. Travel은 크게 Seamless 방식과 non-seamless방식으로 나뉜다. Seamless 방식은 Player들의 연결 해제 없이 매끄럽게 Map을 이동한다. 매끄러운 이동을 위해 TransitionMap을 이용하는데, TransitionMap이란 목적이 되는 Map으로 이동하기 전에 거쳐가는 Map이다. 쉽게 생각하면 맵을 이동 하면서 로딩화면을 띄운다고 생각하면 된다. 또한, Seamless 방식으로 Map을 이동하면 몇 개의 액터를 지속시킬 수 있다. 다음은 지속시킬 수 있는 액터들이다. GameMode 액터 (서버만) AGameModeBase::GetSeamlessTravelActorList 를 통해 추가된 액터 유효한 ..