패스트캠퍼스 환급챌린지 48일차 : RPG 전투 플레이 프로젝트로 배우는 언리얼 엔진 5 게임 개발 강의 후기
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
오늘은 언리얼 엔진에서 데이터셋(DataTable)을 활용해 몬스터가 죽었을 때 아이템을 드랍하는 시스템을 구현하고, 여기에 이펙트 연출까지 추가하는 작업을 진행했다. 그동안은 게임 내에서 아이템을 단순히 BP 클래스에 하드코딩해서 드랍하는 수준이었지만, 이번에는 시스템적으로 좀 더 확장성 있고 관리가 쉬운 구조를 만드는 데 중점을 뒀다.
먼저 PickupStatcData라는 구조체를 만들어 이름, 이펙트 경로 등을 정의했다. 이 구조체를 기반으로 DataTable을 생성해 각 몬스터 타입에 따라 어떤 아이템이 어떤 확률로 드랍되는지를 설정했다. 이번 작업은 기능적으로 크게 어렵진 않았지만, 데이터 기반 설계의 중요성을 체감할 수 있었다. 특히 하드코딩 없이 DataTable을 활용하니, 아이템을 추가하거나 수정할 때 코드 변경 없이 테이블만 수정하면 되므로 유지보수성이 크게 향상 되었다.
몬스터 BP에서는 사망 시점에 해당 몬스터의 ID를 기준으로 데이터 테이블을 조회하고, 난수를 기반으로 아이템 드랍 여부를 결정하게 구성했다. 이 구조를 활용하니 특정 몬스터에게만 희귀 아이템을 넣거나, 드랍 확률 조절, 새로운 아이템 추가 등이 굉장히 간편해졌다.
이제 강의를 85% 수강하였고 10일 뒤면 모든 강의를 완강하게 된다. combat 구현 파트에서는 전투에 직접적인 로직을 학습하지는 않았지만 연출이나 구성요소, UI나 데이터 등 다양한 시스템을 학습하면서 게임 개발을 할 때 전투에는 단순히 액션씬만 아니라 여러 요소가 필요하다는 사실을 알게 되었다. 또한 개발을 하면 할 수록 1인 개발은 무척이나 어려울 것 같다는 생각이 들었다. UI나 이펙트 등 다양한 기능을 추가할 수 있지만 그게 정말 게임처럼 보이게 하는 것은 아트나 디자인의 도움을 받아야 퀄리티 있는 게임이 완성이 될 것 처럼 보였다. 강의를 들으면서 단순히 언리얼 엔진의 기능을 학습할 뿐만 아니라 다양한 요소를 접하면서 배우는 것이 많아서 좋다.
Abit.ly 다운받기
abit.ly