2022 SW Festival Joseon DarkSoul 3D Action Game
b. 게임의 테마
한국판 조선풍 다크소울류 3D 액션 게임
c. 게임 장르
3D Action
d. 게임 의도 및 목적
한국 조선의 다양한 컨텐츠를 반영한 한국풍 다크소율 게임 제작
e. 대상
3D 액션 및 전투에 흥미를 가지는 사람들
f. 플랫폼
PC
Unreal Engine 5.0
Blender
Perforce
.exe
파일 실행
- 공격키 -
Left Mouse Button
- 방어,반격 -
Right Mouse Button
- 대시 -
Left Shift
- 앉아서 걷기 -
Left Ctrl
- 점프 -
F
- 회피(구르기) -
Space Bar
- 스킬 -
1,2,3,4,5,6
- 인벤토리 -
Tab
- 상호작용 -
G
- 시점고정(LockOn) -
Q
- 시점고정해제(LockOff) -
Z
1️⃣ 공격 시스템
- 마우스 좌클릭을 통해 공격이 이루어지도록 구현함
- 콤보 공격을 적용하여 한 공격이 끝나고 다음 공격까지 적절한 타이밍에 공격 키를 누르면 다음 콤보 공격이 이루어지도록 함
- 달리기 공격이나 점프 공격과 같은 플레이어의 움직임과 연동되는 공격을 적용
- 타격감을 위해 공격 및 방어/반격에 성공할 경우 이펙트와 카메라 셰이킹을 적용
- 플레이어가 타격 후 다른 키를 누르면 공격 후 모션이 캔슬되도록 하여 더 역동적으로 진행되도록 함
- 공격 시 가장 가까운 위치에 존재하는 적 방향으로 플레이어 방향을 고정하여 공격할 수 있는 기능을 넣어 쉽게 공격할 수 있도록 함
2️⃣ 방어/반격 시스템
- 마우스 우클릭을 눌렀을 때 방어 또는 반격 로직이 실행되도록 구현함
- 적이 공격하는 타이밍에 맞춰 적절하게 키를 누르면 반격이, 그렇지 않다면 방어가 실행되도록 함
3️⃣ 피격 시스템
- 플레이어에게 타격을 준 오브젝트가 플레이어를 기준으로 앞, 뒤, 오른쪽, 왼쪽 중 어느 위치에 있는지 계산하여 그에 맞는 애니메이션을 적용
- 일정 수 이상 타격을 받으면 플레이어가 넘어져 무방비 상태가 되도록 함
- 플레이어가 넘어지는 것도 피격 애니메이션과 같이 방향을 계산하여 그에 맞는 애니메이션이 적용되도록 함
- 보스 몬스터와 같이 특정 패턴이 존재하는 몬스터의 경우 패턴에 적절하게 피격 모션을 재생하여 캐릭터, 몬스터의 상호작용이 실감나게 이루어지도록 함
ex) 보스가Howling
공격을 하면 플레이어가 날아가도록, 플레이어를 잡고 타격하는 공격을 하면 플레이어가 누워서 연속으로 피격받는 애니메이션이 재생되도록 함
4️⃣ 회피 시스템
- 스페이스바와 방향키를 클릭하여 앞, 뒤, 오른쪽, 왼쪽으로 굴러서 공격을 회피하도록 구현함
- 회피 로직 실행시에는 적의 공격을 받지 않도록 구현
- 회피 후 방향키를 눌렀을 때 회피 후 동작이 캔슬되도록 하여 딜레이로 인한 피해를 방지함
5️⃣ 스킬 시스템
- 무기 크기 변형 스킬 : 무기 변형(돌진/환술/축소) 기능 구현
- 돌진 스킬의 경우 크기가 커진 무기가 앞으로 돌진하는
돌격기
기술 - 환술 스킬의 경우 크기가 커진 무기를 휘두르는
광역기
기술 - 축소 스킬의 경우 크기가 커진 무기를 내리치는
극딜
기술 - 축지법 스킬
- 시간의 흐름을 제어하여, 플레이어의 시간은 그대로이지만 주위 적들의 공격이 천천히 움직이도록 구현
- 순간이동 스킬
- 지붕 위의 다소 떨어진 거리를 순간 이동할 수 있도록 구현
Trigger Box
를 설치하여 자신과Overlapped
된 액터 제외한 Trigger를 찾아 거리를 계산하여 해당 지점으로 순간이동한다.
6️⃣ 부적 시스템
- 스킬 부적 아이템 사용 시스템
- 스킬의 경우 Progress ui를 사용하지 않고, 부적 아이템을 사용해 도술을 부리는 것이므로 사용한 부적의 종류에 따라 적절한 스킬을 사용하도록 구현
- 스킬 쿨타임 시스템 구현
7️⃣ 이동 및 애니메이션 시스템
-
로코모션 시스템
-
루트 모션을 적용한 애니메이션을 통해 자연스러운 움직임을 구현하고,
일반 모드
와공격 모드
모션을 나누어 구현함 -
달리기를 시작하고 멈출 때 적절한 애니메이션을 적용하고, 달릴 때 공격 키를 누르면 대쉬 연계 공격이 이루어지도록 구현함
-
Foot IK
를 적용하여 경사진 표면 위에 플레이어가 위치할 때 붕 떠있지 않고 자연스럽게 서 있도록 구현 -
점프
-
정지 시 점프, 걸을 때 점프, 달릴 때 점프로 나누어 구현
-
점프 시 공격을 하면 점프 공격이 실행되도록 구현
몬스터 | 주무기 | 성격 | 기본 공격 | 특수 공격 | 특징 |
---|---|---|---|---|---|
몬스터1 | 삼지창 | 호전적 | 찌르기 | 연속 찌르기 | 없음 |
몬스터2 | 삽 | 호전적 | 내려찍기 | 없음 | 체력이 많음 |
몬스터3 | 호미 | 겁이 많음 | 찍기 | 없음 | 도망가서 적들을 불러옴 |
몬스터4 | 돌맹이(원거리 공격) | 까불거림 | 돌 던지기 | 돌 세게 던짐 | 플레이어가 가까이 가면 도망감 |
할아버지 | 손 | 과묵함 | 할퀴기 | 없음 | NPC처럼 가만히 있다면 갑자기 공격함 |
승려 | 주술 | 까칠함 | 불 관련 주술 | 승려 셋이 모이면 마법 캐스팅 | 제단에서 등장 |
몬스터 | 주무기 | 성격 | 기본 공격 | 특수 공격 | 특징 |
---|---|---|---|---|---|
도적 | 주먹,발 | 음산함 | 주먹,발차기 | 없음 | 숨어있음 |
궁수 | 활(원거리 공격) | 신중함 | 활 쏘기 | 뒤로 물러나서 활쏘기(백어택) | 원거리 |
포졸(대장) | 검 | 난폭함 | 검 베기 | 참격 | 강함 |
포졸(부하) | 횃불 | 충성심 | 횃불로 지지기 | 없음 | 강함 |
승려 | 주술 | 차가움 | 얼음 관련 주술 | 승려 셋이 모이면 마법 캐스팅 | 공격에 시간이 좀 걸림,제단에서 등장 |
✔ 주 무기는 쌍 도끼, 성격은 난폭함.
✔ 기본 공격
- 도끼로 세번 때리기(왼쪽 오른쪽 아래)
- 양손 도끼로 앞으로가며 공격
- 도끼를 던짐(앞으로 던졌다가 돌아와서 다시 받음)
✔ 특수 공격
- 기모아서 내려찍기(전방으로 화염 공격)
- 돌면서 내려찍기(전방에 땅이 솟아오름 - 지형 생성0)
- 점프 내려찍기(전방에 땅이 솟아오름 - 지형 생성x)
✔ 특징 : 지형 파괴(보스로 인해 생성된 지형에 플레이어는 막히지만 보스는 부심), 보스가 광폭하면 이속이 빨라지면서 공격력도 세지고 주변 구조물을 다 부셔버림
➖ 주 무기: 손, 입, 발으로 성격은 난폭함.
➖ 기본 공격
- 손으로 세번 때리기(왼쪽 오른쪽 아래)
- 점프 공격(점프 공격에 맞으면 물어 뜯김)
- 점프 공격(물어 뜯기지 않는 공격)
- 콤보 공격
- 땅을 한번 쓸면서 공격
- 사거리에 닿으면 2개의 공격중 하나 랜덤
- 1은 돌면서 공격
- 2는 돌면서 발로 내려찍음
➖ 특수 공격
- 도약후 내려 찍기(하늘 위로 솟구치고 몇초뒤 플레이어에게 낙하)
- 하울링(울부짖음 - 충격파)
- 얼음공격(얼음 칼날 세개를 연속으로 발사 - 유도x)
- 얼음토네이도(맵에 일정시간 돌아다니며 플레이어를 쫓는 얼음토네이도 생성 - 유도 o)
1️⃣ 인벤토리/상점/상호작용 시스템
-
DataTable
를 사용해 아이템 구조체를 관리하고, 각각을 actor로 생성해 개별적으로 필요한 기능을 구현함 - 인벤토리 컴포넌트에는 AddItem, DropItem, UseItem 등 이벤트 호출 및 처리하도록 구현
- 인벤토리에는 기본 인벤토리 Slot과 Quick Slot, 돈과 관련된 Slot이 존재함
- AddItem,DropItem - 상점을 통한 구매나 드랍 아이템의 상호작용을 통해 아이템을 인벤토리에 추가, 삭제 가능하도록 구현함.
- UseItem
- UseItem은 회복 소모 아이템이나 스킬 사용을 위한 아이템인 부적을 사용하기 위한 이벤트 구현.
- 사용하려는 슬롯에 해당하는 아이템에 따라 회복 소모이벤트가 발생하도록 로직 및 UI 구현
- 상호작용은 상점/Checkpoint/아이템 각 액터들을 Scene으로부터 얻어와 적절한지 판단하여 구현
- 위젯 설계
- 인벤토리의 위젯은
W_Item
,W_Slot
,W_InventorySlots
,W_QuickSlots
,W_ItemInfo
W_InventoryHUD
,W_PlayerHUD
, 마지막으로W_HUD
으로 구현하여 가장 상위에서부터Update
를 계층적으로 호출하는 방식으로 구현됨. - Update 호출하는 시기는 각 인벤토리에서 이벤트를 발생시킬 때
W_HUD
업데이트를 호출하면 순차적으로 호출할 수 있도록 처리함.
2️⃣ 상태 시스템
-
Parameter
관련 컴포넌트에서는 각 액터마다 UseItem 이벤트 등을 실행했을 때, 플레이어에게 효과를 줄 수 있도록 관련 값들을 관리하고 처리하는 기능을 담당함. - Health, Stamina 등 현재 상태의 값을 Progress UI에서도 Update 될 수 있도록 위젯 설계 및 구현
3️⃣ 미니맵/지도 시스템
-
Top view
로 해당 map의 texture를 얻어 이를 미니맵을 구성하는 material에material parameter collection
의 scalar parameter로 전달함. - 플레이어의 위치를 전달받아 미니맵에 아이콘으로 플레이어의 위치를 표시하도록 구현
4️⃣ 메뉴 및 저장 시스템
- 각 Level에 사용되는 GameMode (Pawn mode, HUD, Player Controller 등) Setting
- 각 스테이지 별 시작 지점에 CheckPoint 존재하여 현재 인벤토리의 값, 체력 회복 등 저장 시스템 구현
- 시작 화면, 로딩 화면, 옵션, 메뉴 화면 구현
제작모델 | 사진 | Face Count | 제작모델 | 사진 | Face Count |
---|---|---|---|---|---|
엽전 | 344 | 포션 | 674 | ||
장승3종 | 65024 | 솟대 | 10054 | ||
깃발 | 1600/1879 | 다리 | 452/272/282 | ||
제단 | 146,558 | 창2종 | 204/436 |