image.png

게임 명 젤다의 전설: 야생의 숨결 모작
게임 장르 액션 어드벤처
플랫폼 PC (Windows)
개발 인원 1인
사용 엔진 Unreal Engine 5.6.1
프로젝트 기간 2026.03.24 ~ 2026.04.06 (14일)
배포
깃허브 링크

게임 소개

<aside> 💡 **원티드 포텐업**에서 진행하는 **게임 개발자 양성과정 4th**프로그램에서 제작한 게임입니다. Unreal Engine 5와 Blueprint 학습을 목적으로 Nintendo의 젤다의 전설: 야생의 숨결을 모작했습니다.

</aside>

게임 영상

https://youtu.be/dqtvNOARaIw?si=t8cEoZ4hr2J77aRP

개발 내용

  1. 플레이어 활 조준 애니메이션 - IK 움직임, 상/하체 분리
  2. 적 총구 조준 애니메이션 - Bone Modify
  3. 카툰 스타일 렌더링 - 셀 셰이딩, 림 라이트
  4. 머리카락, 천 시뮬레이션 - 클로딩
  5. 시네마틱 연출 - 레벨 시퀀스
  6. 보스 AI 작업 - BehaviorTree, FSM

<aside> 1️⃣

플레이어 활 조준 애니메이션 - IK 움직임, 상/하체 분리

구현 목적: 기존의 활 조준 애니메이션은 캐릭터 기준 정면만 조준하고 있는데, 플레이어가 카메라를 움직임에 따라서 활+손이 따라갈 수 있도록 IK 움직임을 적용했습니다. 추가적으로 상체는 활 조준 모션을 표현하면서 하체는 걷는 모션을 병행할 수 있도록 상/하체 분리 움직임을 작업했습니다.

정면만 바라보는 기존의 애니메이션

정면만 바라보는 기존의 애니메이션

구현 내용:

  1. Player View Point에서 Forward Vector * Distance 만큼을 더해서 Aim Point를 구했습니다.

    image.png

  2. 화살이 출발하는 지점인 왼쪽 손(Bone)의 World 위치를 Aim Point에서 빼고, 정규화해서 Aim Dir를 구했습니다.

  3. Aim Point의 변화에 따라 양 손의 위치를 IK로 조정해주기 위해서 앞서 구한 Aim Dir를 양 손의 위치에 더한 값을 ABP에 넘겨주었습니다.

    image.png

  4. ABP에서 값을 받아와서 FABRIK로 조준 방향으로 움직임을 더해주었습니다.

    image.png

  5. 추가로 상체와 하체 부분의 상태를 분리해서 캐시로 담아두고, 캐릭터가 활 시위를 당기는 상태에만 Spine Bone을 기준으로 전신(하체) 캐시와 상체 캐시를 Blend해서 재생하도록 작업했습니다.

    위에는 전신(하체) 캐시, 아래는 상체 캐시

    위에는 전신(하체) 캐시, 아래는 상체 캐시

    MainStateMachine: 전신 상태 (Blend 시에는 하체)

    MainStateMachine: 전신 상태 (Blend 시에는 하체)

    UpperStateMachine: 상체 상태

    UpperStateMachine: 상체 상태

    전신(하체) 캐시와 상체 캐시를 Blend하는 부분

    전신(하체) 캐시와 상체 캐시를 Blend하는 부분

구현 결과:

정면만 바라보는 기존의 애니메이션

정면만 바라보는 기존의 애니메이션

카메라 따라 움직이는 수정된 애니메이션

카메라 따라 움직이는 수정된 애니메이션

조준하면서 걷는 상/하체 분리

조준하면서 걷는 상/하체 분리

</aside>

<aside> 2️⃣

적 총구 조준 애니메이션 - Bone Modify

구현 목적: 적 포대는 애니메이션이 없고, 보스의 총 쏘는 애니메이션은 총구가 고정된 방향(정면)을 향하고 있어서, 적 포대와 보스의 총구가 타깃을 향해서 회전할 수 있도록 ABP에서 Bone Modify를 사용해서 움직임을 구현했습니다.

애니메이션이 없는 적 포대

애니메이션이 없는 적 포대

정면만 향하는 보스의 총구 애니메이션

정면만 향하는 보스의 총구 애니메이션

구현 내용:

  1. 포대의 포구부터 타깃까지 이어지는 방향 벡터를 구했습니다.

    image.png

  2. 해당 방향 벡터를 Rotator로 변환해서 ABP에 넘겨주었습니다.

    image.png

  3. ABP에서 Bone Modify 함수를 사용해서 포대의 Neck, Head Bone에 앞서 구한 Rotator 값만큼 회전을 추가했습니다.

    포대의 Neck, Head에 회전을 주었습니다.

    포대의 Neck, Head에 회전을 주었습니다.

    보스의 총 쏘는 애니메이션에서 양쪽 Arm에 회전을 주었습니다.

    보스의 총 쏘는 애니메이션에서 양쪽 Arm에 회전을 주었습니다.

구현 결과:

타깃의 위치에 따라 움직이는 포구

타깃의 위치에 따라 움직이는 포구

타깃의 위치에 따라 움직이는 총구

타깃의 위치에 따라 움직이는 총구

</aside>