Project GV
끊임없이 몰려오는 몬스터를 처치하고 다양한 기물을 수집·조합하며 최대한 높은 점수를 달성하는 3D 생존 액션 게임
프로젝트 소개
게임의 기본 목표
ProjectGV의 핵심 목표는 제한된 전투 상황에서 최대한 오래 생존하며 높은 점수를 기록하는 것이다. 몬스터는 시간이 지날수록 더 자주 등장하고 능력치도 점차 강해진다. 플레이어는 몬스터를 처치하여 점수와 경험치를 획득하며, 레벨업을 통해 새로운 기물을 얻거나 기존 기물을 강화할 수 있다.
단순히 오래 살아남는 것만으로 높은 점수를 유지할 수는 없다. 전투 시작 후 3분마다 맵에 배치된 제단에서 보스가 등장하며, 보스를 처치하지 않으면 점수가 서서히 감소한다. 따라서 플레이어는 일반 몬스터를 상대하면서도 보스를 빠르게 찾아 처치해야 한다.
핵심 게임 진행 구조
플레이어는 게임 시작 시 무작위로 제시되는 공격형 기물 중 하나를 선택한다. 시작 선택에서는 이동속도 증가나 보호막처럼 직접 공격하지 않는 패시브 기물이 등장하지 않는다. 전투가 시작되면 맵 주변에서 몬스터가 계속 생성되어 플레이어를 추적한다. 처치된 몬스터는 죽은 위치에 경험치 구슬을 떨어뜨리며, 플레이어가 경험치 구슬을 일정량 획득하면 레벨이 상승한다. 레벨업 시 무작위 기물 선택지가 제시된다. 플레이어는 새로운 기물을 획득하거나 기존 기물의 레벨을 올리면서 자신만의 전투 구성을 만들어간다.
전체적인 진행 순서는 다음과 같다. 1. 공격형 기물 하나를 선택하고 전투 시작 2. 계속 생성되는 몬스터 처치 3. 경험치 구슬과 점수 획득 4. 레벨업 후 새로운 기물 선택 또는 기존 기물 강화 5. 기물 조합 조건을 완성하여 강력한 조합 기물 획득 6. 3분마다 제단에서 등장하는 보스 처치 7. 점점 강해지는 적을 상대하며 최고 점수에 도전
전투 시스템
ProjectGV의 기물 공격은 대부분 일정한 발동 주기를 가진다. 플레이어가 공격 버튼을 반복해서 누르는 방식보다는 이동과 위치 선정, 회피 타이밍, 기물 조합 판단에 집중하도록 구성했다. 각 기물은 서로 다른 범위와 공격 방식을 사용한다. 전방을 베는 부채꼴 공격, 주변 적을 밀어내는 지진, 하늘에서 떨어지는 폭격, 적 사이를 이동하는 연쇄 공격, 원거리 적을 추적하는 요격기 등 다양한 공격이 자동으로 발동한다. 기물의 다음 발동까지 남은 시간은 화면 오른쪽 보유 기물 UI에서 확인할 수 있다. 이를 통해 플레이어는 곧 발동할 공격을 예상하고 적절한 위치로 이동할 수 있다.
회피와 정밀 회피
플레이어는 마나를 소모하여 적의 공격을 회피할 수 있다. 회피는 단순한 이동 기술이 아니라 적의 공격 타이밍을 읽고 사용하는 핵심 방어 수단이다. 몬스터의 공격이 적중하기 직전에 회피하면 정밀 회피가 발동한다. 정밀 회피에 성공하면 캐릭터 주변에서 밝은 빛이 발생하고 순간적인 슬로우 모션이 적용되어 성공 여부를 직관적으로 확인할 수 있다. 일부 패시브 기물을 획득하면 회피 직후 일정 시간 동안 이동속도가 증가한다. 대신 회피에 필요한 마나 소비량도 함께 증가하기 때문에 빠른 이동과 자원 관리 사이의 선택이 필요하다.
기물 시스템
기물은 플레이어의 공격 방식과 기본 능력을 결정하는 핵심 성장 요소다. 기물 등급은 노말과 레어 두 단계로 구성된다. 기물은 역할에 따라 세 종류로 나뉜다. 액티브 기물 액티브 기물은 일정한 발동 주기마다 직접 공격하거나 전투 효과를 발생시킨다. 노말 액티브 기물은 10종, 레어 액티브 기물은 5종을 목표로 구성했다. 각 기물은 공격 범위, 피해량, 발동 시간과 특수 효과가 다르다. 대표적인 예시는 다음과 같다. - 상어탄: 가까운 적을 향해 투사체 발사 - 두더지 지진: 지면에서 가시를 솟게 하여 적에게 피해를 주고 밀어냄 - 부엉이 달빛 심판: 주변 적에게 범위 피해와 감속 적용 - 호랑이 발톱: 전방을 부채꼴 모양으로 베어 피해를 줌 - 도토리 폭격: 적이 있는 지면으로 도토리를 떨어뜨려 폭발시킴 - 잠자리 요격기: 적을 추적하며 공격하고 플레이어에게 복귀 - 코뿔소 돌진: 전방으로 돌진하여 적을 밀어냄 패시브 기물 패시브 기물은 직접 공격하지 않고 플레이어의 기본 능력이나 편의성을 강화한다. 패시브 기물은 총 6종이며 모두 노말 등급으로 구성한다. 대표적인 효과는 다음과 같다. - 이동속도 증가 - 일정 주기마다 보호막 획득 - 주변 경험치 구슬과 아이템을 플레이어 쪽으로 끌어당김 - 회피 후 일시적인 이동속도 증가 - 체력이나 마나와 관련된 기본 능력 강화 보호막은 별도의 체력 막대로 분리하지 않고 현재 체력 UI에 함께 표시하여 전투 중 정보를 빠르게 파악할 수 있도록 구성했다. 조합 기물 특정 기물들을 함께 획득하고 필요한 조건을 만족하면 강력한 조합 기물로 발전시킬 수 있다. 조합 기물은 총 7종을 목표로 하며, 하나의 조합에 두 개 또는 세 개의 기물이 사용될 수 있다. 모든 기본 기물이 최소 하나 이상의 조합에 사용되도록 구성하여 불필요하게 버려지는 기물이 없도록 설계했다. 조합이 완성되면 캐릭터 주변에서 금빛 효과가 발생하며, 새로운 조합 기물이 만들어졌다는 것을 시각적으로 알려준다. 대표적인 조합 기물인 까마귀 폭풍은 주변 몬스터에게 지속적인 피해를 주면서 폭풍 중심으로 조금씩 끌어당기는 효과를 가진다.
몬스터 구성
일반 전투에 등장하는 몬스터는 역할에 따라 세 종류로 구분된다. 근접 일반 몬스터 Slime 외형을 사용하는 기본 몬스터다. 플레이어에게 접근한 뒤 공격 모션을 재생하고 근접 공격을 한다. 가장 기본적인 적이지만 수가 많아지면 플레이어의 이동 경로를 제한하며 다른 몬스터의 공격을 피하기 어렵게 만든다. 자폭 몬스터 Beholder 외형을 사용하는 몬스터다. 플레이어에게 빠르게 접근하며, 가까운 거리까지 도달하면 폭발하여 피해를 준다. 플레이어가 무리의 중앙에 갇히지 않도록 계속 이동하게 만드는 역할을 한다. 원거리 몬스터 Cactus 외형을 사용하는 몬스터다. 플레이어와 일정한 거리를 유지하면서 눈에 잘 보이는 대형 투사체를 발사한다. 근접 몬스터를 피하는 동안 원거리 공격까지 확인해야 하므로 전투의 긴장감을 높이는 역할을 한다. 각 몬스터는 대기, 이동, 공격, 피격과 죽음 상태에 맞는 애니메이션을 사용한다. 몬스터의 역할과 외형은 블루프린트에서 교체할 수 있도록 분리되어 있다.
보스와 제단 시스템
보스는 맵에 미리 생성된 제단에서 3분마다 등장한다. 현재 프로토타입에서는 골람 보스 한 종류의 완성을 목표로 하고 있으며, 최종적으로 현재 맵에 최대 세 종류의 보스를 추가할 계획이다. 보스가 살아 있는 동안에는 플레이어의 점수가 서서히 감소한다. 따라서 일반 몬스터만 처치해서는 최고 점수를 유지할 수 없으며, 보스의 위치로 이동해 빠르게 처치해야 한다. 골람 보스는 다음과 같은 여섯 가지 공격 패턴을 사용한다. - 일반 공격 - 지면 강타 - 돌 투사체 - 돌진 - 화염 기둥 - 파괴 광선 각 공격은 즉시 피해를 주지 않고 공격 예고 후 실제 공격이 발동한다. 플레이어는 공격 범위와 타이밍을 확인한 뒤 회피할 수 있다. 패턴별 피해량, 사거리, 사용 조건, 쿨다운, 체력 조건과 등장 연출은 데이터 에셋과 블루프린트에서 조절할 수 있다.
맵과 환경
전투 맵에는 나무, 돌과 다양한 환경 구조물이 배치된다. 환경물은 매번 동일한 위치에만 나타나지 않도록 무작위 배치 방식을 사용한다. 플레이어 시작 지점, 몬스터 생성 위치와 보스 제단 주변에는 배치 금지 영역을 설정하여 구조물끼리 겹치거나 캐릭터가 오브젝트 안에 생성되는 문제를 방지한다. 맵 중심부에는 더 많은 환경물이 배치되도록 밀도를 조절했으며, 보스 제단 주변에는 전투에 필요한 공간이 확보되도록 별도의 안전 반경을 사용한다. 플레이어에게서 지나치게 멀어진 몬스터는 자동으로 제거된다. 이를 통해 사용되지 않는 몬스터가 계속 쌓이는 문제를 줄이고 장시간 플레이에서도 성능을 유지하도록 했다.
블루프린트 확장 구조
ProjectGV는 C++로 핵심 시스템을 구현하고, 블루프린트에서 콘텐츠를 빠르게 추가하거나 수정할 수 있도록 설계했다. 새로운 캐릭터를 추가할 때는 캐릭터 정의 에셋에서 이름, 초상화, 기본 체력, 이동속도, 마나와 시작 기물을 설정할 수 있다. 새로운 기물은 공통 기물 클래스를 기반으로 공격 주기, 피해량, 범위, 아이콘, 등급과 레벨별 수치를 설정하여 추가할 수 있다. 전용 시각 효과가 준비되지 않은 경우 기본 도형을 사용하여 공격 범위와 작동 여부를 먼저 확인할 수 있다. 몬스터는 역할, 외형, 이동속도, 공격 패턴과 애니메이션을 분리했다. 기존 몬스터 블루프린트를 복제하고 필요한 데이터만 변경하는 방식으로 새로운 몬스터를 만들 수 있다. 구조물도 메시, 재질, 크기, 회전, 지면 정렬과 충돌 규칙을 블루프린트에서 설정할 수 있다. 이러한 구조를 통해 C++ 코드를 직접 수정하지 않아도 블루프린트에서 몇 가지 항목만 설정하여 새로운 콘텐츠를 빠르게 시험할 수 있다.