소울라이크 장르는 특유의 긴장감과 타격감으로 많은 게이머에게 사랑을 받습니다. 게임을 좋아하는 분이라면 한 번쯤 내 손으로 이런 작품을 만들고 싶다는 꿈을 꾸죠. 오늘은 언리얼 엔진을 활용해 소울라이크 액션 RPG를 만드는 과정을 알아보겠습니다. 막막해 보일 수 있지만 하나씩 살펴보면 충분히 도전할 수 있는 영역입니다.
언리얼 엔진과 C++의 만남
언리얼 엔진은 그래픽과 성능 면에서 아주 뛰어난 도구입니다. 하지만 우리가 원하는 정교한 액션을 구현하려면 C++ 언어가 필요합니다. 블루프린트라는 시각적 도구도 있지만 코드를 직접 다루는 편이 더 세밀한 제어가 가능하거든요. 처음에는 낯설 수 있지만 익숙해지면 자유롭게 기능을 만들 수 있습니다.
프로그래머 입장에서 엔진의 깊은 곳까지 건드려보는 경험은 아주 소중합니다. 엔진이 제공하는 기능을 그대로 쓰는 것을 넘어 나만의 로직을 심을 수 있으니까요. C++을 활용하면 캐릭터의 움직임부터 데이터 처리까지 훨씬 효율적으로 관리할 수 있습니다. 이것이 바로 실전 게임 개발의 첫걸음입니다.

소울라이크의 꽃 전투 시스템 구현하기
이 장르에서 가장 중요한 요소는 단연 전투 시스템입니다. 공격과 방어 그리고 회피가 물 흐르듯 이어져야 플레이어가 몰입할 수 있습니다. 이때 캐릭터의 상태를 관리하는 것이 무엇보다 중요합니다. 공격 중에는 이동을 막거나 구르기 중에는 무적 판정을 넣는 식의 규칙을 정해야 하죠.
무기가 적에게 닿았는지 판단하는 충돌 처리도 아주 중요합니다. 이것을 콜리전이라고 부르는데 이 영역을 정교하게 설정해야 타격감이 살아납니다. 또한 적을 고정해서 바라보는 타겟팅 시스템도 구현해야 합니다. 이런 기능들이 모여야 비로소 소울라이크다운 긴장감이 만들어집니다.
지능적인 적을 만드는 AI 기술
플레이어 혼자 허공에 칼질을 한다면 게임이 아니겠죠. 플레이어와 맞서 싸울 적에게 지능을 부여하는 과정이 필요합니다. 이때 비헤이비어 트리라는 기술을 주로 사용합니다. 이것은 적이 상황에 따라 어떤 행동을 할지 결정하는 나무 모양의 설계도라고 보시면 됩니다.
적이 평소에는 순찰을 돌다가 플레이어를 발견하면 쫓아오게 만들어야 합니다. 공격 범위 안에 들어오면 무기를 휘두르는 판단도 필요하죠. 보스 몬스터의 경우 체력에 따라 패턴을 바꾸기도 합니다. 이런 다양한 행동 패턴을 논리적으로 연결하면 살아있는 듯한 적을 완성할 수 있습니다.
움직임을 완성하는 애니메이션 연동
코드가 아무리 완벽해도 화면 속 캐릭터가 뻣뻣하게 움직이면 안 됩니다. 걷다가 뛰고 칼을 휘두르는 동작이 자연스럽게 이어져야 합니다. 언리얼 엔진의 애니메이션 블루프린트가 이 역할을 담당합니다. C++ 코드에서 보내는 신호를 받아 적절한 애니메이션을 화면에 그려주는 것이죠.
특히 소울라이크 게임은 동작 하나하나의 타이밍이 아주 중요합니다. 공격 애니메이션의 특정 시점에 타격 판정을 넣는 작업이 필요합니다. 애니메이션과 코드가 정확하게 맞물려 돌아가야 우리가 원하는 묵직한 액션이 나옵니다. 이 과정을 통해 게임의 완성도가 크게 올라갑니다.
개발을 시작하기 전 준비사항
이런 프로젝트는 난이도가 조금 있는 편이라 기초 지식이 필요합니다. 언리얼 엔진의 기본적인 인터페이스와 조작법은 미리 익혀두는 것이 좋습니다. 또한 C++의 기초 문법을 알고 있어야 코드를 작성할 때 당황하지 않습니다. 기초가 탄탄하면 응용 기술을 배울 때 훨씬 빠르게 흡수할 수 있습니다.
혼자서 모든 것을 맨땅에 헤딩하며 배우기는 쉽지 않습니다. 실무에서 쓰이는 노하우와 전체적인 흐름을 알려주는 좋은 가이드가 있다면 큰 도움이 됩니다. 다크소울이나 엘든링 같은 게임을 동경만 하지 말고 직접 그 세계를 창조해 보세요. 끈기를 가지고 도전하면 여러분만의 멋진 게임을 완성할 수 있을 겁니다.
강의 링크
아래 링크에서 강의 정보를 확인하실 수 있어요.
이 링크를 통해 구매하시면 제가 소정의 수익을 받을 수 있습니다.
(실전! 언리얼 소울라이크 개발: A to Z| Spector – 인프런 강의)