← 모든 글

새로운 언리얼 팀프로젝트의 시작

개인 학습을 마치고 팀장을 맡아 조원들과 협업을 시작하며, 총을 사용하는 타임어택 액션 게임 컨셉과 기본·심화 기능의 개발 범위를 정리했습니다.

Unreal Engine 5 C++Unreal Engine 5Team ProjectGameModeCharacterBossInventoryCraftingSocket SystemTime Attack

새로운 언리얼 팀프로젝트의 시작

이제 개인 학습의 시간은 끝났다. 지금부터는 조를 만들고, 같은 조원과 협업을 통해 하나의 게임을 개발할 시간이다.

그동안은 언리얼 C++의 기능을 하나씩 익히는 데 집중했다. 캐릭터를 움직이고, 액터를 배치하고, 웨이브를 만들고, 아이템과 버프를 데이터로 연결하는 식으로 기능 단위의 학습을 해왔다. 이번 팀 프로젝트에서는 그동안 배운 내용을 하나의 게임 흐름 안에 묶어 실제 플레이 가능한 형태로 만드는 것이 목표다.

이번 프로젝트에서는 경력자인 내가 팀장을 맡게 되었다. 첫날은 조원들과 함께 튜터가 제시한 기능들을 확인하고, 그 기능들을 포함하려면 어떤 컨셉의 게임을 만들면 좋을지 의견을 나눴다.

제시된 기능들을 자연스럽게 보여주기에 가장 어울리는 모습은 총을 쏘는 액션이라고 생각했다. 캐릭터 움직임, 몬스터 등장, 스킬, 보스전, 아이템과 무기 커스터마이징이 모두 전투 흐름 안에서 설명될 수 있기 때문이다.

게임 컨셉

이번 프로젝트의 컨셉은 성직자가 마을에 출몰한 몬스터들을 총과 스킬로 제거하고, 마지막에는 보스까지 쓰러뜨리는 게임이다.

플레이어는 성직자 캐릭터를 조작한다. 마을이나 전투 구역에 등장하는 몬스터들을 상대하고, 전투를 진행하면서 필요한 아이템을 얻거나 제작한다. 최종적으로는 보스 몬스터를 처치하는 것을 게임의 큰 목표로 삼는다.

게임 방식은 타임어택으로 잡았다. 게임이 시작되면 경과 시간을 체크하고, 플레이어가 보스를 처치해 클리어하면 최종 시간을 보여주는 방식이다. 단순히 클리어 여부만 보여주는 것보다 시간이 남으면 기록을 줄이고 싶다는 목표가 생기기 때문에, 짧은 팀 프로젝트에서도 플레이 동기를 만들기 좋다고 판단했다.

아직 기획이 완전히 고정된 단계는 아니지만, 기본 방향은 명확하다. 플레이어가 캐릭터를 조작하고, 몬스터를 상대하고, 아이템을 활용하며, 마지막 보스전까지 이어지는 구조를 만들고, 그 결과를 클리어 시간으로 확인할 수 있게 하는 것이다.

주요 개발 사항

이번 프로젝트에서는 먼저 게임이 성립하기 위한 기본 기능을 구현하고, 이후 게임의 완성도를 높이는 심화 기능을 추가할 계획이다.

기본 기능은 다음과 같다.

게임모드는 프로젝트의 전체 규칙을 담당한다. 게임 시작, 진행, 클리어, 실패 같은 큰 흐름과 함께 타임어택의 경과 시간도 관리하게 될 것이다. 캐릭터 움직임은 플레이어가 게임을 직접 조작하는 가장 기본적인 부분이므로 초반에 안정적으로 구현해야 한다.

종료 조건도 중요하다. 단순히 몬스터를 배치하는 것에서 끝나는 것이 아니라, 어떤 조건에서 게임이 끝나는지 명확하게 정해야 플레이 흐름이 만들어진다. 예를 들어 모든 몬스터를 처치하거나, 보스를 쓰러뜨리거나, 플레이어가 사망했을 때 게임이 종료되는 식의 규칙이 필요하다. 클리어했을 때는 경과 시간을 화면에 보여줘 타임어택 결과를 확인할 수 있게 할 계획이다.

몬스터 등장은 전투 경험의 시작점이다. 정해진 위치에 몬스터를 배치할 수도 있고, 일정 조건에 따라 생성되도록 만들 수도 있다. 여기에 간단한 스킬 하나를 더해 플레이어가 단순 이동과 공격만 하는 것이 아니라, 직접 판단해서 사용할 수 있는 기능을 갖추게 할 예정이다.

심화 기능

기본 기능을 구현한 뒤에는 프로젝트의 재미와 확장성을 높이는 심화 기능을 구현할 계획이다.

심화 기능은 다음과 같다.

보스는 게임의 최종 목표가 되는 대상이다. 일반 몬스터보다 더 큰 체력, 다른 공격 패턴, 별도의 등장 조건을 가질 수 있다. 보스전을 통해 플레이어가 그동안 얻은 아이템이나 스킬을 활용하도록 만드는 것이 중요하다.

아이템 제작 시스템과 아이템 인벤토리는 플레이어의 성장과 선택지를 담당한다. 단순히 아이템을 줍는 것에서 끝나지 않고, 재료를 모아 필요한 아이템을 만들거나 상황에 맞게 사용하는 구조를 생각하고 있다.

소켓 시스템은 무기 커스터마이징과 연결된다. 무기에 특정 부품이나 능력치를 붙일 수 있다면, 플레이어는 같은 무기라도 다른 방식으로 사용할 수 있다. 이 기능은 구현 난이도가 있을 수 있지만, 완성되면 프로젝트의 개성을 보여줄 수 있는 좋은 시스템이 될 것 같다.

개발 순서

개발은 기본 기능을 먼저 구현하고, 그 다음 심화 기능으로 넘어가는 순서로 진행할 것이다.

초반부터 모든 기능을 한꺼번에 만들려고 하면 프로젝트가 쉽게 복잡해질 수 있다. 그래서 먼저 게임모드, 캐릭터 움직임, 몬스터 등장, 종료 조건처럼 게임의 뼈대가 되는 부분을 완성한다. 이 단계에서 플레이어가 움직이고, 몬스터가 등장하고, 게임이 시작과 끝을 가질 수 있어야 한다.

그 다음에는 스킬, 보스, 아이템 제작, 인벤토리, 소켓 시스템 같은 요소를 차례대로 붙여나갈 예정이다. 기능을 하나씩 추가하면서 게임 흐름이 깨지지 않는지 확인하고, 조원들과 역할을 나눠 협업하는 방식도 같이 익혀야 한다.

팀 프로젝트에서 기대하는 것

이번 프로젝트는 단순히 기능을 많이 구현하는 것만이 목표는 아니다. 같은 조원과 협업하면서 코드를 나누고, 작업 범위를 정하고, 서로의 기능을 합치는 경험이 중요하다.

개인 학습에서는 내가 만든 코드만 이해하면 됐다. 하지만 팀 프로젝트에서는 다른 사람이 만든 코드도 읽어야 하고, 내가 만든 코드도 다른 사람이 사용할 수 있어야 한다. 그래서 기능 구현뿐 아니라 구조를 어떻게 나눌지, 변수와 함수 이름을 어떻게 정할지, 데이터를 어떻게 공유할지도 신경 써야 한다.

이번 프로젝트를 통해 언리얼 C++ 기능을 더 익히는 것은 물론이고, 협업 과정에서 실제 게임 프로젝트가 어떻게 만들어지는지도 경험해보고 싶다.