[Game] Project Unseen
- 게임 영상 : https://www.youtube.com/watch?v=55C7q-2O0Jg
- github 링크 : https://github.com/futurelabunseen/C-SeunghyeonRyu (Release에서 게임 다운로드 가능합니다!)
Unreal Engine C++과 Gameplay ability system을 사용해서 만든 게임입니다.
게임의 장르
TPS, 소울라이크(보스 사냥)
개발 기간
2024.04 ~ 2024.06 (기획 및 개발 약 한 달 소요)
플레이어의 조작
구현
공격과 회피
Gameplay Ability System
유연한 구조, 효율적인 개발 => 사용하면서 GAS의 잘 구현된 구조를 경험, 학습
- Abilities 사이 우선순위 구현
- Gameplay Tag를 사용한 공격 회피
- Gameplay Effects를 사용한 Attribute 관리
- Target Actor를 사용하여 HitCheck
보스 패턴 구현
Behavior Tree, 나이아가라 시스템 사용
Projectile
- 발사체 사용 및 총구에서 발사 : 현실적인 경험 제공
- 카메라가 보는 방향으로 LineTrace하여 나온 HitResult를 사용하여 Projectile 방향 계산
Projectile 오브젝트 풀링 구현 => 짧은 시간 내 빠른 생성 가능
- 게임 시작 시 일정 수의 총알 스폰 및 Push
- Pool이 빈 상태일 때 Pull 요청 시 Expand
- Projectile이 다른 Actor에 충돌 시 Push
- Projectile 생성 후 일정 시간이 지나면 Push
- Shoot 시 Pool에서 Projectile을 Pull
총기 반동 시스템
두 가지 방식의 반동 구현
-
컨트롤러 Input 강제 입력 => 수직 반동
-
조준선 벌어짐에 따라 사격 범위 넓어짐 (총알 퍼짐) 수평 반동
수평 반동
그림 1
그림 2
A : 크로스헤어 상으로 Recoil 길이 (그림 2 노란 선)
B : 거리에 따라 벌어지는 Recoil 적용 길이 (그림 2 초록 선)
C : UI와 카메라 사이 거리를 구할 수 없기에 경험적 Variable
D : 카메라 LineTrace의 HitResult.Distance
삼각형의 닮음을 사용해서 조준선의 벌어진 정도와 총구에서 날아가는 총알의 수평 범위를 시각적으로 일치시킴. 단순한 수학이지만, 정확한 계산으로 현실적인 경험 제공
약점(치명타) 시스템
스켈레탈 메시 구분을 통한 약점 구현
ApplyPointDamage를 사용하여 충격 지점에 약점 여부에 따른 색상 적용하여 데미지 UI 구현
능력치 강화 시스템
획득한 재화를 사용하여,
- 사격속도 증가
- 반동 감소
- 총알 구매
Leave a comment