코드를 수정하지 않고 외부 데이터(테이블, 설정 파일)로 동작을 바꿀 수 있는 설계 방식

 

ex)

하드코딩 (Hard Coding)
void Attack() {
    damage = 150;        // 수치 바꾸려면 코드 수정
    cooldown = 2.0f;     // 빌드 다시 해야 함
    range = 300.0f;      // 기획자가 못 건드림
}

데이터 드리븐 (Data-Driven)
void Attack() {
    damage = SkillTable["Slash"].Damage;     // 테이블만 수정
    cooldown = SkillTable["Slash"].Cooldown; // 빌드 불필요
    range = SkillTable["Slash"].Range;       // 기획자가 직접 조정
}

 

Lv1. 상수 분리 : config 파일, ini 로 구성되어있고 가장 단순하다

Lv2. 테이블 기반 : DataTable, CSV로 구성되어있고 행 추가로 콘텐츠 확장

Lv3. 에셋 기반 : DataAsset, ScriptableObject로 구성되어있고 복잡한 구조 표현이 가능하다

Lv4. 런타임 로드 : 서버에서 내려받는 수치로 라이브 서비스, 핫픽스가 가능하다.

 

레벨이 높다고 무조건 좋은게 아니다. 레벨이 높을수록 유연하지만 복잡도가 증가한다. 프로젝트 규모에 맞게 레벨을 선택하는 판단력이 중요하다.

 

관련 용어들

OCP(개방-폐쇄 원칙) : SOLID의 O. 확장에는 열려 있고, 수정에는 닫혀 있어야한다. 데이터 드리븐이 이 원칙을 구조적으로 구현하는 방식이다.

핫픽스/핫리로드 : 서버나 클라이언트 재시작 없이 데이터를 갱신하는 것. 라이브 서비스에서 밸런스 긴급 수정할 때 사용한다.

설정 주도 설계 ( Configuration-Driven ) : 데이터 드리븐의 상위 개념. 수치뿐 아니라 동작 방식 자체를 데이터로 정의하는 것.

+ Recent posts