[Unreal Engine] Data-Driven Design

이매·2026년 3월 5일

Unreal Data Driven Design

목록 보기
1/12
post-thumbnail

Data-Driven Design의 필요성

1. 전통적인 코드 중심 설계의 한계

일반적인 객체지향 기반 게임 개발에서는 기능과 데이터를 함께 가지는 클래스 구조를 만든다.
예를 들어, 객체지향에 친숙한 개발자가 플레이어 캐릭터의 직업(Class) 시스템을 만든다면 다음과 같은 상속 구조가 자연스럽게 등장한다.

APlayerCharacterBase
 ├─ AWarrior
 ├─ AMage
 ├─ AArcher
 └─ APaladin

혹은 직업의 특성에 따라 별도의 클래스를 계속 파생시키기도 한다.

AMage
 ├─ AFireMage
 └─ AIceMage

이렇게 프로그래머들이 객체지향 방식으로 게임 개발을 시작하는 이유는 직관성과 익숙함 때문이다.

객체지향 프로그래밍은

  • 게임 요소를 클래스라는 단위로 표현할 수 있어 이해하기 쉽다.
  • 캐릭터, 몬스터, 아이템 같은 개념을 현실 구조처럼 모델링할 수 있다.
  • 상속을 통해 공통 기능을 부모 클래스에 묶어 코드 중복을 줄일 수 있다.

또한 클래스 상속 기반의 구조는 기본적으로 흔하고 널리 사용하기 때문에 접근성이 높다는 이유도 있다.

이 방식은 초기 구현이 직관적이지만, 아이템의 값이나 속성을 클래스 내부에 직접 작성하게 되는 경우가 많다.
물론 작은 규모의 프로젝트에서는 충분히 효과적이고 빠르게 개발 가능한 방식이다.



2. 클래스 중심 구조가 확장성에 취약한 이유

하지만 이러한 방식은 프로젝트가 커질수록 확장성이 떨어질 수 있다.
만약 새로운 캐릭터를 추가해야하는 상황이 발생한다면

  • 프로그래머가 시스템 구조를 깊이 이해하고 직접 파생 클래스를 코드로 제작해야 하며,
  • 기획자나 아티스트가 데이터에 대한 변경은 할 수 있어도 직접 데이터를 추가하거나 삭제하는 등의 수정하기 어려워진다.

→ 결국 캐릭터 수가 많아질수록 클래스 구조는 복잡해지고 구조 변경에 대한 부담이 증가할 수 있다.

또한 상속 기반 설계는 계층이 깊어질수록 새로운 기능을 추가하기 위해 기존 캐릭터 클래스를 수정해야 하는 상황이 발생할 가능성이 있다. 이는 결국 시스템의 유연성을 낮추고 유지보수 비용을 높이는 요인이 될 수 있다.

이러한 문제점은 결국 데이터가 객체에 종속되어 있기 때문에 발생한다.



3. Data-Driven Design이란 무엇인가

Data-Driven Design은 데이터와 로직을 분리하는 설계 방식이다.

핵심 아이디어는 다음과 같다.

  • 로직은 일반적인 클래스가 담당한다
  • 데이터는 별도의 컨테이너에 저장한다
  • 클래스는 데이터를 해석하여 동작한다

예를 들어 캐릭터 시스템은 다음과 같이 구성할 수 있다.

ACharacter (동작 담당)

UCharacterDefinition (데이터)
 ├─ Warrior
 ├─ Mage
 └─ Archer

이 구조에서는 다음과 같은 특징이 생긴다.

  • 새로운 캐릭터를 추가할 때 클래스를 새로 만들 필요가 없다.
  • 캐릭터의 속성, 능력치, 스킬 등은 데이터로 관리할 수 있다
  • 기획자나 아티스트도 에디터에서 직접 캐릭터 데이터를 생성하고 수정할 수 있다.

즉, 코드 구조를 변경하지 않고도 콘텐츠를 확장할 수 있는 설계가 가능해진다.



4. Unreal Engine에서 Data-Driven 접근 방식

Unreal Engine은 이러한 설계를 위해 여러 데이터 중심 시스템을 제공한다.
대표적으로 사용되는 것들은 다음과 같다.

  • Data Table
  • Data Asset
  • Primary Asset / Asset Manager

이 시스템들은 공통적으로 게임 로직과 데이터를 분리하여 관리할 수 있도록 설계되어 있다.



참고 자료
Asset Management in Unreal Engine

profile
언리얼 엔진 주니어(신입) 개발자 | 소설 쓰는 취준 개발자

0개의 댓글