UE5

· Game/Unreal
Board URR은 4 x 4의 타일을 통해 숫자(유닛)를 나타내며, 사용자 입력에 의해 해당 숫자들이 합쳐지는 형식이다. 숫자를 나타내는 타일 16개가 따로 존재하면 입력에 의해 합쳐지거나 움직이는 등의 동작이 쉽지 않을 것이다. 따라서, 타일들을 하나의 Pawn으로 묶어 관리하고 해당 클래스에서 사용자 입력을 받아 처리할 예정이다. Tile Tile은 유닛과 해당 유닛의 숫자를 나타내는 액터이다. 해당 액터에서 타일의 유닛의 포인터를 관리하여 Spawn, Destory 등을 처리한다. Board의 BeginPlay에서 총 16개의 Tile을 생성하여 이차원 배열을 통해 관리한다. 이차원 배열을 사용한 이유는 네 방향의 이동이 가능한데, 이 작업에서 간편하게 계산하기 위함이다. 또한, 유닛의 단계(1,..
· Game/Unreal
Level URR은 크게 보면 로비가 존재하고 로비에서 여러 스테이지를 골라 플레이할 수 있는 구조이다. 물론, 스테이지는 순차적으로 진행해야 한다. 로비는 크게 어려운 부분이 없으니 게임 로직부터 구현하기 위해 Stage를 우선적으로 구현할 예정이다. Stage Level Design LandScape를 통해 경사로와 언덕을 만들었고 페인팅을 통해 자연스럽게 연출하였다. 또한, 언덕의 경계선이 어색하지 않게 돌로 막아 놓았다. 주변에는 폴리지를 통해 숲 같은 느낌을 주었다. 유닛으로 사용하는 에셋이 군인들이라 풀, 자연 같은 분위기를 사용하였다. 하얀 타일위에 유닛들이 생성되고 타일에는 각 유닛의 단계(1, 2, 4...,1024)를 나타낼 것이다.
· 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 GAS는 복잡한 기존 시스템을 몇 가지 구성요소로 분리하면서 자유도와 재활용성을 올리는 프레임 워크이다. GAS의 주요 구성요소는 다음과 같다. ASC (AbilitySystemComponent) 액터에 부착해 GAS 시스템을 동작시키는 컴포넌트이다. 컴퓨터로 따지자면 CPU 같은 존재이다. ASC에는 다양한 요소와 함수들이 내장되어 있다. 그중, 자주 사용되는 몇 가지 함수들은 다음과 같다. //ASC의 ActorInfo를 초기화하는 함수 virtual void InitAbilityActorInfo(AActor* InOwnerActor, AActor* InAvatarActor); //등록되어 있는 AttributeSet을 받아오는 함수 template const T*GetSet() const {..
· Game/Unreal
광역 공격 & Cost & Cooldown GAS에 대한 마지막 포스팅이다. 지금까지 언급한 GAS 클래스들을 이용하여 광역 공격 스킬을 구현하고 해당 스킬을 사용하는데 필요한 코스트와 해당 스킬에 쿨다운을 걸 수 있는 방법을 구현할 것이다. 기본적인 흐름은 다음과 같다. 캐릭터가 무기를 획득하면 스킬을 사용할 수 있는 GA를 부여한다. 마우스 우클릭 입력을 추가하고 해당 입력이 들어오면 앞서 부여했던 스킬 GA를 실행한다. GA에서는 스킬 애니메이션을 실행할 AT를 생성한 뒤 실행 요청을 한다. Montage를 통해 애니메이션이 실행되면 Event와 태그를 통해 공격 판정 GA를 실행한다. 공격 판정 GA는 스킬에 적중한 액터를 판별할 AT를 생성한 뒤 실행 요청을 한다. 판정 AT에서는 TA를 만들어..
· Game/Unreal
GameplayCue GameplayCue를 이용하여 VFX를 적용하는 방법에 대해 알아보자. GameplayCue(GC)는 시각 이펙트나 사운드 같은 게임 로직과는 관련이 없는 부가적인 기능을 담당한다. GC에는 두 가지 종류가 있다. 스태틱 게임플레이 큐: 일시적으로 발생하는 특수효과에 사용, Excute 이벤트 발동 액터 게임플레이 큐: 일정 기간동안 발생하는 특수효과에 사용, Add/Remove 이벤트 발동 C++로도 구현할 수 있지만 BP로 구현하는 것이 생산적이다. 또한, GE에서 GC와 연동할 수 있도록 기능을 제공하고 있다. 다른 GAS객체들과는 다르게 GC는 GameplayCueManager가 관리한다. 부가적인 기능이라 그런 것 같다. 또한, GC는 GameplayTag를 통해 간단하게..
· Game/Unreal
UI연동 이전 포스팅에서 GE를 통해 Attribute에 영향을 주는 것까지 구현하였다. 이번 포스팅에서는 Attribute가 GE에 의해 변경되면 UI가 업데이트되도록 구현해 보자. 그러기 위해서는 Helath값을 나타내는 UserWidget을 생성하고 이를 캐릭터에 붙일 수 있게 WidgetComponent를 제작하여 진행할 것이다. UserWidget에서는 ASC로부터 Attribute가 변경될 때 Delegate를 받아 업데이트할 수 있게 구현할 예정이다. UserWidget & WidgetComponent 제작 캐릭터에 HpBar를 붙이기 위해 WidgetComponent가 필요하다. UserWidet에서는 Attribute가 변경될 때마다 업데이트되어야 하기 때문에 캐릭터의 ASC가 있어야 한..
· Game/Unreal
GameplayEffect 이전 포스팅에서는 Ability에서 AttributeSet의 값을 직접 바꿨다. 이번에는 GameplayEffect를 사용하여 Attribute를 변경해 보자. 이전과 동일하게 공격 판정을 통해 공격에 적중한 타깃에게 피해를 주어야 한다. 여기서 GameplayEffect를 적용하여 간편하게 피해를 주는 로직을 구현할 수 있다. GameplayEffect GameplayEffect(GE)란 게임에 영향을 주는 객체이다. 즉, 게임에 필요한 데이터에 영향을 주는 객체를 말한다. 예를 들어, 지금의 경우 공격에 적중한 타깃의 Health값을 깎아주어야 한다. 이때, Health값을 변경하는 역할을 하는 객체가 GE이다. GE는 보통 AttributeSet과 함께 동작하도록 구성되어..
· Game/Unreal
AttributeSet 이전 포스팅에서는 공격 판정에 대한 내용을 다뤘다. 공격 판정이 완료된 후, 결과를 타깃에게 적용해야 한다. 보통 공격에 맞은 대상은 체력이 깎이게 된다. 또한, 얼마나 피해를 줄지에 대한 기준이 되는 정보가 필요하다. 이러한 Stat같은 데이터들을 쉽게 다룰 수 있게 해주는 AttriubuteSet이다. 이번 포스팅에서는 AttributeSet을 통해 공격에 적중된 Actor에게 피해를 입히는 예시를 구현해 보겠다. AttributeSet 설명 AttributeSet은 단일 어트리뷰트 데이인 GameplayAttributeData의 묶음이다. GameplayAttributeData는 두 가지 값으로 구성되어 있다. BaseValue: 기본 값, 영구히 적용되는 값 CurrentV..
· Game/Unreal
공격 판정 이전 포스트에서 구현한 콤보 공격에서 공격 판정을 추가로 구현할 것이다. 여태까지의 공격 기능에 흐름은 다음과 같다. 플레이어의 입력에 의해 캐릭터의 EnhancedInput이 감지되어 해당 함수를 실행 사전에 부여한 Ability 중 InputId에 맞는 Ability를 실행 Ability에서 애니메이션을 동작시키기 위해 AT(Ability Task)를 생성하여 실행 AT의 완료 Callback을 받아 마무리 위의 과정에서 애니메이션을 동작하는 부분이 있다. 이는 AnimMontage를 이용하여 애니메이션을 동작한다. GAS에서의 공격판정은 일반적인 UE프로젝트와 다르지 않게 시작된다. AnimMontage에 Notify를 등록하여 원하는 동작에서 공격을 판정하게 할 수 있다. 공격판정을 위..
hvv_an
'UE5' 태그의 글 목록