Skip to content

jbaem/Last-Requiem

 
 

Repository files navigation

Last Requiem

Title Image

1. 프로젝트 소개

[공모전 수상작]

본 프로젝트는 NC AI가 주관한 제 2회 VARCO Voice 활용 게임제작 공모전에서 우수상을 수상한 프로젝트입니다.

Award Image

분류 내용
개발 기간 2025.12 ~ 2026.01 (약 4주)
개발 인원 4인 (Team. 행운의 토끼발)
엔진 버전 Unreal Engine 5.6
대상 플랫폼 PC(Window)
핵심 기술 NC VARCO Voice AI(TTS)

2. 게임 소개

Last Requiem 은 포스트 아포칼립스 세계관을 배경으로 한 전략 디펜스 게임입니다. 플레이어는 오퍼레이터가 되어 드론을 통해 전장을 내려다보며, 외계 생명체의 침입으로부터 최후의 방어선을 사수해야 합니다. 단순한 유닛 컨트롤을 넘어, 전장의 공포로 인해 통제 불능 상태에 빠지는 병사들의 정신력(Sanity) 을 관리하는 것이 핵심입니다.

Gameplay Image


분류 내용
장르 전략/디펜스
시점 3인칭 백뷰
핵심 컨셉 드론 기반 전장 탐색
유닛 정신력 관리
전략판을 활용한 전략적 유닛 배치

3. 시작하기

설치 및 실행 방법

A. Clone 및 빌드

git clone https://github.com/jbaem/Last-Requiem.git
# .uproject 파일을 우클릭하여 Generate Visual Studio project files 실행
# .sln 파일을 열어 Development Editor 구성으로 빌드 (Win64)

4. 담당 기능

4.3. Voice AI

공모전 취지에 맞는 Varco Voice 를 활용하기 위해, python으로 REST API 호출 ....

Repository: Last-Requiem-Varco-Voice

기능 관련 코드 설명
TTS varco_tts Varco Voice Generate API 를 사용하여 엑셀 파일에 작성한 파라미터에 따라 보이스 에셋을 생성합니다.
성우 리스트 get_voices Varco Voice 에 필요한 파라미터 중 성우 이름/UUID를 목록화하기 위한 코드입니다.

4.2. 게임 플로우

기능 관련 클래스 설명
게임 흐름 관련 ALR_GameMode
AP_GameStateBase
게임의 상태가 변할 때 델리게이트를 발송하여, 액터 및 UI 등 다른 오브젝트에게 알립니다.
스코어 보드 UI UP_ScoreBoard 게임의 결과 레벨로 이동했을 때 유저에게 보여진 UI로 GameInstance에 저장된 점수 정보를 바탕으로 계산하여 출력합니다.

4.3. 적

기능 관련 클래스 설명
적 몸체 AP_EnemyBase 데이터 에셋을 입력 받아 스탯 및 이펙트를 적용할 수 있습니다.
타겟 탐색 Service UP_BTS_SelectTarget 언리얼에서 제공하는 AI 인식(Sight Perception)을 사용하여 공격 대상을 리스트업합니다. 태그와 거리 기준으로 공격할 적을 탐색합니다. 이미 파괴된 적에 대한 추가 검증을 진행합니다.
공격 거리 체크 Service UP_BTS_CheckAttackRange 경계값에서 발생할 수 있는 지터링(Jittering)을 방지하기 위해 공격을 멈추는 거리를 약간 부여했습니다.

4.4. 그 외

기능 관련 클래스 설명
드론 기능 보완
- 기울임 보정
- 넉백 감쇠
AK_Drone [ line:124 ] 내적과 보간을 사용하여 현재 속도 기준으로 기울임을 처리합니다.
[ line:152 ] 충격이 발생했을 경우 일시적으로 감쇠(Damping)을 조정하여 날라가는 거리를 조절하였습니다.

5. 프로젝트 구조 및 컨벤션

5.1. 폴더 구조

빠른 프로토타이핑이 필요한 공모전 특성에 맞춰, 개발자별 이니셜 폴더를 최상위에 배치하요 코드 충돌을 방지하고 독립적인 작업환경을 구축했습니다.
각 폴더 내부에서는 기능별로 계층 구조를 세분화하여 관리했습니다.

Lunar_Realm/
├── Config/             # 프로젝트 설정 파일 (.ini)
├── Source/LunarRealm/  # C++ 소스 코드 (Public / Private)
├── Content/            # 언리얼 에셋 (Blueprint, Material, DT 등)
└── Image/              # README 및 문서용 이미지 에셋
폴더 구조 상세 보기

빠른 프로토타이핑이 필요한 공모전 특성에 맞춰,
개발자별 이니셜 폴더를 최상위에 배치하요 코드 충돌을 방지하고 독립적인 작업환경을 구축했습니다.
각 폴더 내부에서는 기능별로 계층 구조를 세분화하여 관리했습니다.

Source/LunarRealm/Private/
├── PJB/                    # 게임 플로우 / 적
│   ├── AI/                 # AI Controller, Behavior Tree 노드 (Service, Task, Decorator)
│   ├── AnimNotify/         # 애니메이션 이펙트 트리거
│   ├── Component/          # 전투 컴포넌트
│   ├── Copyright/          # 에셋 저작권 표시 UI
│   ├── Data/               # 열거형, 데이터 에셋 정의
│   ├── Enemy/              # 적 Base 클래스, 애니메이션
│   ├── Fortress/           # 아군 기지
│   ├── LevelSelector/      # 맵 이동 관련 UI 로직
│   ├── Obstacle/           # 파괴 목표물
│   ├── Pause/              # 일시정지 및 튜토리얼 앨범
│   ├── ScoreBoard/         # 최종 점수 표시
│   ├── Spawner/            # 스포너
│   ├── System/             # GameState (정비/웨이브 상태 및 점수 상황)
│   └── TimerUI/            # 페이즈 및 타이머 UI
├── BJM/
├── KHS/
└── KWB/


5.2. 에셋 관리 방식

  • 모든 외부 리소스는 Content/Asset/ 하위에서 임포트한 에셋 유형별로 분류하여 관리했습니다.
  • 에셋 네이밍은 언리얼 표준 접두사 규칙(M_ Material, WBP_ Widget Blueprint 등)을 준수하여 리소스 탐색 효율을 보장했습니다.

5.3. 코드 스타일

팀 내 코드 가독성과 협업 효율을 위해 공식 언리얼 엔진 C++ 코딩 표준을 준수했습니다.

클래스 및 파일명에 작업자 이니셜 접두사 를 부여하여 협업 시 발생할 수 있는 소스 코드 충돌을 원천 차단하고 책임 개발 영역을 명확히 했습니다.

5.4. 주요 브랜치

  • main: 최종 패키징을 위한 안정화 브랜치
  • develop: 각 기능들의 통합 및 QA를 진행하는 개발 브랜치
  • feature/: 기능 단위 독립 개발 브랜치 (ex. feature/character, feature/ui)

5.5. 커밋 메시지 규칙

모든 커밋은 프로젝트 변경 내용을 직관적으로 파악할 수 있도록 아래 접두사(Prefix) 규칙을 따릅니다.

타입 설명
feat 새로운 기능 추가
fix 버그 수정
docs 문서 수정
refactor 코드 리팩토링
test 테스트 코드
rename 파일 및 폴더 이름 수정 및 경로 이동
remove 파일 삭제

About

NC AI VARCO 2nd 공모전 프로젝트 레포지토리

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 99.2%
  • Other 0.8%