전우치

작성자 박성령
학과 또는 소속(회사명) 소프트웨어융합학과
조회수 9
평가(좋아요)수 1
댓글수 0
✅ [게임 개요]
이름 : 전우치
장르: AAA 액션 RPG 게임
플랫폼: PC
출시: Steam
개발 도구: Unreal Engine 5, Blender
예상 플레이 타임: 1시간 이상

✅ [스팀 출시]
https://store.steampowered.com/app/4162490/Jeon_Woochi_Demo/

✅ [트레일러 영상]
https://youtu.be/rogS9KkeieA?si=A8ODspEBgd8wCaU1

✅ [튜토리얼 플레이 영상]
https://youtu.be/v3M3RAz9DIQ?si=WjB6WQpIlw2rnlyF

✅ [개발 동기]
전세계적으로 전통적 AAA게임을 제작하여 각 나라의 고유 문화를 널리 알리는 회사들이 많아지는 추세입니다.

중국이나 일본 유럽 같은 경우 각 나라의 전통 문화를 배경으로 하는 유명한 게임이 있지만 한국의 경우 한국 전통 문화를 배경으로 하는 AAA게임이 아직 없는 상황입니다.

때문에 한국의 전통적인 문화를 널리 알릴 수 있는 게임을 제작하고자 하였습니다.


✅ [세계관]
1. 조선 후기 서양화가 유행
2. 서양화엔 괴물이 숨어 있었고 괴물들이 깨어나 마을을 습격
3. 사건의 흑막은 청나라에서 온 사술사 유야흑군
4. 전우치가 맞서 싸우지만, 유야흑군에게 패배 후 그림 세계에 갇힘
5. 전우치는 그림 세계를 탈출 후 유야흑군과 최종 결전을 치룸 



✅ [주요 특징]
1️⃣ 2D ↔ 3D 전환
▪️전우치는 그림 속을 넘나들며 2D 전투와 3D 전투를 즐길 수 있습니다.
▪️게임을 진행하기 위해서 2D 그림 속 미로를 해쳐나가야 합니다.
▪️영화같은 연출을 통해 전우치가 실제로그림 속에 들어가는 듯한 느낌을 주었습니다.

2️⃣ 다양한 도술
▪️적에게 환술을 걸어 적끼리 서로 전투를 할 수 있게 했습니다.
▪️전우치와 똑같은 분신을 소환하여 전투를 돕습니다.
▪️축지법을 사용하여, 적을 교란하고 처치합니다.

3️⃣ 패드를 이용한 액션 쾌감 극대화
▪️AAA급 액션 게임이 기본적으로 갖추고 있는 패링과 회피를 구현하되, 컨트롤러의 진동과 슬로우모션 , VFX를 통해 액션 쾌감을 느끼도록 하였습니다.
▪️컷 신 재생 중 컨트롤러의 진동을 통해 실제 현장에 있는 듯한 몰입감을 주었습니다.



✅ [구현 방법]
1️⃣ 2D
▪️언리얼은 기본적으로 2D를 정식으로 지원하지 않기도 하고 언리얼로 2D 액션을 구현한 사례가 거의 없었기 때문에 바닥부터 구현해야 했습니다.
▪️스테이트 머신을 구현하여 한프레임씩 재생되는 플립북을 상태에 따라 재생되도록 하였습니다.
▪️또한 상태 패턴으로 점프는 사이드 점프나 기본 점프가 재생되는 등 상태에 따라 다른 로직이 작동하도록 하였습니다
▪️이후 2D 벡터를 캐릭터의 3D 벡터로 변환하여 3D 공간에서 평면 상의 움직임으로 보이도록 하였습니다.


2️⃣ 2D ↔ 3D 전환
▪️2D, 3D 전환 방법 또한 기존에 시도한 게임이 닌텐도의 마리오밖에 없었기 때문에 관련 레퍼런스를 찾지 못했습니다. 때문에 생성형 AI등을 통한 도움을 받는 것이 거의 불가능했으며, 저희 스스로 바닥부터 만들어 구현했습니다.
▪️전환 방법을 간단히 설명드리자면, 먼저 플레이어가 그림에 닿게 되면 플레이어의 위치에 2D 캐릭터를 스폰하고 2D 캐릭터가 그림 표면에 제대로 정렬되도록, 그림의 트랜스폼과 플레이어의 트랜스폼을 동적으로 계산해서 그림에 붙어있도록 구현했습니다.
▪️이후 카메라를 3D 캐릭터에서 2D 캐릭터로 변경한 이후 플레이어가 조종하던 대상을 2D 캐릭터로 변경하였고, 변경 도중엔 이펙트나 사운드를 적절히 추가해서 플레이어가 실제로 그림속에 뛰어드는 것 같은 효과를 만들었습니다. 이후 3D로 복귀할 때도 동일한 로직을 사용하게 됩니다.


3️⃣ 락온
▪️플레이어의 전방 방향으로 라인트레이스를 쏴서 적에게 hit 되었는지 검사합니다.
▪️적에게 맞았으면, 플레이어의 카메라가 적을 향하도록 매 틱마다 카메라 위치와 회전을 보정하게 됩니다.
▪️화면을 크게 돌려 기준 각도를 넘기면, 타깃이 자연스럽게 다음 적으로 전환됩니다.


4️⃣ 패링/처형
▪️패링은 적의 공격을 타이밍에 맞게 튕겨내는 반격기입니다.
▪️몇 번 성공하면, 적이 기절을 하게되고 적에게 큰 데미지를 입힐 수 있습니다.
▪️적을 처형할 때, 카메라가 멋지게 움직이는데 이는 적 처형 시점에 플레이어의 위치를 계산해서 동적으로 무비 카메라를 스폰하고 뷰 블렌딩을 통해 자연스럽게 카메라 시점을 옮깁니다. 이후 카메라 애니메이션을 재생한 뒤, 다시 뷰 블렌딩을 통해 원래 카메라로 되돌아오게 됩니다.


5️⃣ 회피/축지
▪️적의 공격을 정확한 타이밍에 회피하면, 잔상이 남게되고 플레이어의 ‘기’라는 게이지가 차게 됩니다. 이 ‘기’는 이후 소개할 분신술이나 환술 등의 도술을 사용하는데 소모되며, 앞서 언급한 패링을 성공할 시에도 ‘기’가 차게됩니다.
▪️또한 축지는 적의 하얗게 빛나는 공격에 적절히 대응했을 때, 전우치가 순간적으로 사라졌다 적의 바로 앞에 나타나 번개처럼 공격하는 도술입니다.


6️⃣ 환술
▪️환술은 적의 정신을 교란시켜 적들끼리 서로 싸우게 만드는 도술입니다.
▪️먼저 플레이어가 환술을 사용하면, 전방으로 라인트레이스를 쏘고 환술을 지정할 수 있는 대상은 테두리가 파랗게 빛나게 됩니다. 이 상태에서 적에게 환술을 걸 수 있습니다.
▪️환술을 구현한 방법은 플레이어 포함 모든 캐릭터에게 Team ID라는 것을 부여하여, 서로 다른 팀이면, 적으로 간주하여 공격하도록 구현했습니다. 여기서 환술에 걸린 대상은 플레이어와 동일한 Team ID가 되어 다른 적을 공격하게 됩니다.


7️⃣ 분신술
▪️분신술은 플레이어와 동일한 분신을 소환하여 같이 전투를 하는 도술입니다.
▪️이를 구현한 방법은 게임을 시작한 뒤, 동적으로 플레이어의 외형을 완전히 동일하게 복사한 캐릭터를 미리 만들어 Pool에 둡니다.
▪️이때 플레이어가 분신을 사용하면, Pool에 있던 분신들이 소환되어 가까운 적을 탐색하고 전투를 시작합니다.
▪️게임을 진행하면서 플레이어는 분신을 자주 소환하므로 이를 Object Pooling이라는 게임 최적화 기술을 이용하여 구현해서 성능을 향상 시켰습니다.


8️⃣ Save system
▪️이 게임의 Save 구조는, 먼저 플레이어의 체력이나 위치 또는 진행사항처럼 저장해야 할 변수를 미리 지정하고 이 지정한 변수의 값을 직렬화하여, Byte Array로 보관합니다.
▪️이후 저장 사항을 불러올 땐, Byte Array를 역직렬화해서 체력, 위치, 진행도 같은 상태를 한 번에 복원합니다.
▪️이렇게 직렬화/역직렬화를 통한 세이브 시스템을 구현한 이유는 Byte Array로 보관시 저장 공간 상의 이점이 있으며, 일일이 저장할 변수를 따로 보관했다 다시 대입하려면, 굉장히 복잡한데 이 방법은 단순히 무엇을 저장할지 한 줄만 작성하면 되므로 확장성이 좋다는 장점이 있었기 때문입니다.

전우치

조회수 9
평가(좋아요)수 1
댓글수 0
게시 : 2025년 11월 10일
박성령 소프트웨어융합학과

전우치

조회수 9
평가(좋아요)수 1
댓글수 0
게시 : 2025-11-10

Member

박성령, 박예서, 김도현

Keyword

게임,언리얼엔진5,액션

수상여부

  • 게임