전체 글 89

260204 언리얼엔진 본캠프 122일차 기상모션과 MotionWarping

기상 모션 작업을 해보자 지난 글을 통해서 우리는 넉백으로 인해 캐릭터가 넘어지는 모션을 구현했었다. 하지만 영상을 보면 알겠지만 캐릭터가 넘어지는 모션이 종료되고 나서 바로 기상하는 것을 볼 수 있다. 자연스러운 기상 애니메이션을 추가해서 캐릭터가 넉백에서 회복되는 한 사이클을 구현해보려고 한다. 그렇기 위해선 이전에 작업했던 넉백 몽타주에 적절한 기상 애니메이션 시퀀스를 찾아서 추가해 준 다음 섹션작업을 해주어야 한다. 일단 Rise 섹션을 추가해서 캐릭터가 일어나는 구간을 지정해주고 새롭게 Lying섹션을 추가해서 캐릭터가 누워있는 걸 지속하는 섹션을 추가해 주었다. 왜 이렇게 했는가? 플레이어의 의도에 따른 기상을 구현하자.일단 캐릭터가 넉백으로 인해 넘어지면 게임마다 여러가지 방식으로 캐릭터를 ..

카테고리 없음 2026.02.04

260202 언리얼엔진 본캠프 120일차 피격 Motion을 구현하자

캐릭터 피격 시 Motion을 재생하게 해 보자캐릭터가 몬스터로부터의 공격에 피격당했을 시 HP를 계산하면서 동시에 적용되어야 하는 것이 시각적인 피드백이다 흔히 화면이 흔들린다던가, HP바가 줄어드는 것으로 인지할 수 있지만 가장 직관적인 피드백은 바로 캐릭터의 피격 모션이 재생되는 것이라고 할 수 있겠다. 최종프로젝트의 기획단계에서 이러한 피격 모션을 크게 3가지로 분류했었다. 움찔, 경직, 넉백으로 이루어진 피격 모션을 적절한 상황에서 재생해서 게임적 경험을 크게 향상해 보려고 한다. 각각의 피격 모션의 조건이 다르다앞서 우리는 움찔, 경직, 넉백의 3가지 유형의 피격 모션을 구분해 두었다고 했다. 여기서 Flinch(움찔)은 캐릭터의 모션을 캔슬하지 않고 재생되어야 한다. 예컨대 캐릭터가 공격 중..

unreal 5기 2026.02.02

260127 언리얼엔진 본캠프 116일차 디테일한 Chooser을 위한 변수 작업

디테일한 변수를 만들자 Chooser테이블은 변수들을 어떻게 설정해서 구성하느냐에 따라서 애니메이션의 선택에 있어서 다양하고 디테일한 부분까지 건들 수 있다. 우리는 지난 글에서 WantsToMove와 같은 변수들을 임시로 캐릭터의 가속도가 0보다 크면 true가 되게끔 해서 변수를 작업했었는데 디테일하게 작업해주고 싶은 마음에 GASP에서는 어떤 변수들을 어떻게 처리하고 있는지 궁금해서 확인해 본 결과 GASP에서는 다음과 같은 변수를 사용하고 있었다. 캐릭터의 현재 속도와 Trajectory를 통해 계산된 미래의 캐릭터의 속도를 비교하여 현재 속도 보다 100이 크다고 판단되는 경우 캐릭터가 움직이기 시작한다고 판단하고 있다. 하단의 Tag를 통해서 Pivot을 원하는 상태인지를 판단하는 로직이 있는..

unreal 5기 2026.01.27

260123 언리얼엔진 본캠프 114일차 공격 애니메이션 구성

Chooser를 이용한 공격 애니메이션 구성 지난 글에서는 PlayerInputState라는 각종 플레이어의 인풋 상태를 변수로 담는 구조체를 생성하고 해당 구조체의 변수를 통해서 Chooser를 구성해서 애니메이션을 구현하는 작업을 진행하였다. 오늘은 Chooser를 이용한 콤보 공격 애니메이션을 구현해보려고 한다. 바로 Chooser를 생성해 주도록 하자 Rolling과 같이 애님 몽타주를 따로 재생하는 로직을 작성할 거기 때문에 결과를 AnimMontage로 설정해 주고 PlayerInputState를 파라미터로 지정해 주고 인풋만 받도록 설정해 준다. 해당 Chooser테이블은 캐릭터의 공격을 모두 담아 클래스가 뭐냐에 따라 다른 몽타주를 재생해 줄 것이기 때문에 Nested Chooser를 통해..

카테고리 없음 2026.01.23

260122 언리얼엔진 본캠프 113일차 GASP(7)

최종 프로젝트 시작드디어 최종 프로젝트가 시작되었다. 사실 어제 시작했는데 프로젝트 발제와 초기 프로젝트 세팅을 하는 데에만 하루가 꼬박 지나가게 되어 사실상 작업은 오늘 시작하게 되었다. 우리의 최종 프로젝트는 다크소울 1과 엘든링과 같은 소울류의 게임을 제작하는 것을 목표로 꽤나 높은 목표를 갖고 시작하게 된 만큼 최선을 다해야 할 것이다. 특히나 이러한 RPG 장르의 핵심이라 할 수 있는 캐릭터 파트를 맡게 되어 그 책임이 막중한 지금 기존까지 공부했던 MotionMatching과 ChooserTable을 이용한 애니메이션을 먼저 구현해두려고 한다. 기본적인 세팅을 해주자기존의 프로젝트가 아닌 새프로젝트로 작업을 시작하는 만큼 기본적인 프로젝트의 플러그인을 활성화해주어야 한다. 활성화해주어야 하는 ..

unreal 5기 2026.01.22

260120 언리얼엔진 본캠프 111일차 GASP(6) ChooserTable-2

Dodge(Roll)을 구현해 보자지난 글에서는 MotionMatching과 ChooserTable을 활용해서 기본적인 Locomotion을 구현하는 데 성공했었다. ChooserTable에 사용한 변수들의 가짓수가 적고 세세하게 분류하지 않아서 아직 엉성한 블랜딩을 보여주지만 이는 차후에 다듬는 걸로 하고 오늘은 구르기(Roll, Dodge)를 한번 구현해보려고 한다. 사실 지난 주말과 월요일에는 기존에 작성했던 CHT_PoseSearchDatabase에 PSD_Dodge를 구성하여 WantsToDodge 변수가 true일 때 선택되도록 하여 구현을 해 보았으나 애니메이션이 재생 중에 해당 변수가 false가 되면서 다른 애니메이션이 재생되는 문제가 생겨 해당 방법으로 구현은 내 얕은 지식으로는 사실상..

unreal 5기 2026.01.20

260116 언리얼엔진 본캠프 109일차 GASP(5) ChooserTable-1

ChooserTable지난 글에서는 PSD하나에 모든 애니메이션 시퀀스를 때려 박고 Pose Search와 Motion Matching을 통해서 적절한 애니메이션을 찾게끔 해보았다. 하지만 영상에서도 보이지만 애니메이션이 너무 많고 그 와중에서 적절한 모션을 찾기는 많이 어려워 중간중간 애니메이션이 밀리거나 이상한 애니메이션이 재생되는 것을 볼 수 있었다. 그렇기에 GASP에서도 PSD와 PSS를 경우에 따라서 나누어 각 경우별로 어떠한 PoseSearchDatabase를 어떠한 가중치(PoseSearchSchema)에 따라 선택할지를 고르게끔 구현되어 있는데 이것이 바로 Chooser Table이다. 일단 PSD(PoseSearchDatabase)를 경우마다 나누어 보자속편하게 하기 위해서는 GASP의..

unreal 5기 2026.01.16

260115 언리얼엔진 본캠프 109일차 GASP(4) MotionMatching

MotionMatching과 PoseSearch지난 시간에는 GASP의 애셋을 활용하여 Aim의 여부에 따라서 이동 애니메이션이 다르게 적용되게끔 하였다. 이는 플레이어의 입력의도를 파악하고 ChooserTable을 통해서 상황에 적합한 PoseSerachDatabase을 선택해 애니메이션을 재생하기 때문에 가능한 것이다. 이는 앞서 프로젝트를 생성하는 단계에서 활성화한 플러그인인 PoseSearch와 Chooser에 의해서 가능한 작업인데 오늘은 PoseSearch에 대해서 공부해 보았다. PoseSearch를 직접 이용해 보자이번에는 GASP의 에셋이 아닌 Blank템플릿으로 새로 생성한 C++프로젝트에서 간단하게 캐릭터 애니메이션을 PoseSearch플러그인을 활용해서 구현해보려고 한다. 간단하게 ..

unreal 5기 2026.01.15

260114 언리얼엔진 본캠프 108일차 GASP(3)

GASP를 개조해 보자지난 글에서는 GASP의 블르프린트인 SandboxCharacter_CMC 에셋이 GCharacterBase를 상속받도록 하고 이 SandboxCharacter_CMC의 이름을 BP_GASP_Base로 변경한 후 이를 상속받는 BP_Paradin을 만들었다. 테스트한 결과 GASP의 기본 애니메이션이 잘 적용됨을 알 수 있다.기본적인 움직임 애니메이션이 잘 적용되고 있다. 하지만 이대로 최종 프로젝트를 진행하기에는 어려움이 있다. 우리의 최종 프로젝트는 엘든링을 벤치마크한 소울류 게임을 만들 예정인데 캐릭터의 평상시의 움직임은 기존의 백뷰 시점으로 플레이어의 카메라가 바라보는 방향이 정면이 되어 방향키를 입력 시 캐릭터가 그 방향으로 회전 후 이동하는 방식을 이용하지만 현재 GASP..

unreal 5기 2026.01.14

260113 언리얼엔진 본캠프 107일차 GASP(2)

언리얼엔진 5.7로 GASP를 적용해 보자지난 글에서는 언리얼엔진의 샘플 프로젝트인 GASP가 어떠한 방식으로 구현되어 있는지 파악해 보았다. GASP는 기존에 트리를 기반으로 작성하던 애님 그래프에서 벗어나 예측을 기반으로 플레이어 캐릭터의 이동 경로를 계산하고 그 계산 값을 토대로 적절한 애니메이션을 현재 캐릭터의 모션을 기반하여 적절한 프레임에서 재생하게끔 되어있어 부드러운 애니메이션 전환이 가능하고 우리는 그중에서 캐릭터의 이동 경로를 계산하는 컴포넌트인 Trajectory Component를 직접 구현해 보았다. 사실 이를 직접 캐릭터 블루프린트에 적용해서 애니메이션까지 적용되게 애니메이션 데이터 에셋과 스키마를 만들었으나 MotionMatching노드가 엔진에 기본적으로 장착된 Trjector..

unreal 5기 2026.01.13