Portfolio

PROJECT CASE STUDY

기물락도 락이다

Unreal Engine 5.7 기반 TFT 모작 프로젝트입니다. 57개 챔피언을 확장 가능한 데이터 중심 구조로 관리하고, 에디터 자동화·Modifier 기반 스탯 시스템·Subsystem 아키텍처·C++ 전투 로직을 구현했습니다.

Unreal Engine 5.7C++Data-Driven DesignEditor Utility WidgetAsset RegistryModifier SystemSubsystem

PROJECT OVERVIEW

조합과 배치로 전투를 완성하는 오토배틀

ChampionLockIsaRock은 TFT 스타일 오토배틀러의 핵심 플레이 루프를 Unreal Engine 5.7로 구현한 팀 프로젝트입니다. 플레이어는 상점에서 챔피언을 구매하고, 유닛을 전략적으로 배치해 전투를 준비합니다. 조합한 시너지와 아이템, 성급에 따라 유닛이 자동으로 전투를 진행하며, 결과에 따른 보상과 성장이 다음 라운드로 이어집니다.

재현한 실제 플레이 영상
재현한 실제 플레이 영상

단순히 개별 기능을 구현하는 데 그치지 않고, 챔피언 선택부터 배치·전투·정산까지 반복되는 오토배틀러의 전체 흐름을 하나의 플레이 경험으로 연결하는 데 초점을 두었습니다.

MY CONTRIBUTION

프로젝트에서 다음과 같은 시스템의 설계와 구현을 담당했습니다.

  • 57개 챔피언을 관리하기 위한 DataTable 기반 데이터 구조 설계
  • 챔피언 데이터와 관련 에셋을 자동으로 연결하는 Editor Utility Widget 제작
  • Asset Registry 기반 Skeletal Mesh, Animation, Montage, Portrait 탐색 시스템 구현
  • Data Modifier 기반 스탯 확장 및 아이템 시스템 구현
  • GameInstance와 Subsystem을 활용한 데이터 및 UI 아키텍처 설계
  • C++ 기반 FSM 유사 행동 흐름과 전투 시스템 구현

DATA-DRIVEN ARCHITECTURE

데이터 기반 설계를 바탕으로

데이터가 코드에 흩어졌을 때

챔피언별 정보와 로직이 코드에 포함되면 새로운 캐릭터를 추가하거나 밸런스를 수정할 때마다 반복 구현과 재컴파일이 필요합니다. 또한 캐릭터마다 구현 방식이 달라져 동작의 일관성을 유지하기 어려웠습니다.

데이터 기반 설계로 얻은 이점

공통 동작과 개별 데이터를 분리해 모든 챔피언이 동일한 초기화 흐름을 사용하도록 구성했습니다. 그 결과 새로운 챔피언 추가와 밸런스 조정을 데이터와 에셋 수정만으로 처리할 수 있었고, 반복 작업과 기존 코드의 변경 범위를 줄일 수 있었습니다.

결과적으로 콘텐츠를 빠르게 추가하고, 일관된 구조 안에서 지속적으로 확장할 수 있는 캐릭터 시스템을 구축했습니다.

Modifier 기반 스탯 및 아이템 시스템

아이템 효과가 늘어날수록 커지는 변경 비용

아이템 효과를 직접 스탯에 반영하면 아이템 종류와 효과가 늘어날수록 장착·해제 로직이 복잡해지고, 작은 변경에도 여러 전투 코드를 수정해야 했습니다.

아이템 장착으로 Modifier가 적용된 전투 화면
아이템 효과가 적용된 전투 화면

스탯 변경 요소를 독립적인 규칙으로 관리

아이템 효과를 독립적으로 관리해 기본 스탯과 현재 적용 결과를 분리했습니다. 그 결과 아이템뿐 아니라 버프와 디버프도 같은 기준으로 확장할 수 있었고, 새로운 효과를 추가할 때 기존 전투 로직의 변경을 최소화할 수 있었습니다.

CHARACTER FSM

상태가 늘어날수록 복잡해지는 캐릭터 로직

캐릭터의 행동을 여러 조건문과 플래그로 처리하면 공격, 스킬, 피격, 사망 같은 상태가 서로 충돌하기 쉽습니다. 상태가 추가될 때마다 기존 로직을 함께 수정해야 해 예외 처리가 늘어나고, 애니메이션과 실제 캐릭터 동작이 어긋날 가능성도 커집니다.

챔피언 선택과 배치 후 전투가 진행되는 실제 플레이 화면
챔피언 선택부터 배치·전투까지의 실제 플레이 화면

전투 흐름을 상태 전환으로 관리

캐릭터의 행동을 각각의 상태로 분리하고, 상태에 따라 수행할 수 있는 동작과 다음 전환 조건을 관리했습니다. 이를 통해 현재 상태에서 허용되지 않는 행동을 제한하고, 상태가 변경될 때 필요한 로직과 연출이 일관된 순서로 실행되도록 구성했습니다.

결과적으로 캐릭터 행동이 복잡해져도 상태 간 책임을 명확하게 유지하고, 새로운 전투 행동을 기존 로직의 변경을 최소화하며 확장할 수 있었습니다.

RESULT & GROWTH

오토배틀러를 구현하며 RPG 시스템의 확장 기준을 익히다

01 / 장르의 콘텐츠 확장

장르의 콘텐츠 확장을 고려

ChampionLockIsaRock은 TFT 모작 프로젝트로, 챔피언과 아이템이 지속적으로 추가되고 밸런스가 반복해서 변경되는 장르의 특성을 고려했습니다. 이를 위해 RPG 개발에서도 활용되는 데이터 기반 설계, Modifier, FSM을 실제 시스템에 적용했습니다.

02 / 플레이 규칙

플레이 규칙을 구조로 해석

원작의 전투 결과만 재현하지 않고, 챔피언 초기화와 아이템 효과, 상태 변화가 어떤 데이터와 규칙으로 연결되는지 분석했습니다. 이를 통해 플레이 경험을 구현 가능한 시스템으로 해석하는 과정을 경험했습니다.

03 / 설계 기준

변화에 대응하는 설계 기준을 확립

캐릭터와 아이템이 늘어나더라도 기존 코드를 반복해서 수정하지 않도록 데이터, 런타임 상태, 변경 규칙을 분리했습니다. 이를 통해 RPG 콘텐츠의 추가와 밸런스 변화까지 고려해 구조를 설계하는 기준을 갖게 되었습니다.

ChampionLockIsaRock을 통해 오토배틀러의 실제 플레이 로직을 재현하며, RPG 장르의 캐릭터·스탯·아이템 시스템확장 가능한 구조로 설계하는 경험을 쌓았습니다.

↑ 맨 위로