데이터 드리븐에 대해서 이해하고
간단한 코드를 구현한다.
데이터-드리븐 설계(또는 데이터 중심 설계)는 “코드는 최대한 일반화하고, 구체적인 게임 밸런스·컨텐츠·규칙은 외부 데이터에서 읽어 와서 결정한다”는 철학이다.
다시 말해 로직과 콘텐츠를 분리해 디자이너·밸런서·라이브 오퍼가 코드 수정 없이 숫자만 바꿔도 게임을 바꿀 수 있도록 하는 구조다. 이 패턴이 널리 쓰이는 이유는 아래와 같다.
이점 | 세부 설명 |
---|---|
빠른 반복 | 스프레드시트에서 값 수정 → CSV 내보내기 → 런타임 리로드 만으로 밸런스 조정이 가능하다. |
리스크 감소 | 코드에 하드코딩된 “매직 넘버”가 사라져 빌드 오류와 버전 충돌을 줄인다. |
라이브 업데이트 용이 | 서버·패치 툴·원격 Config와 연계하면 앱 업데이트 없이 밸런스 핫픽스를 배포할 수 있다. |
멀티 플랫폼 확장 | 동일 로직을 유지하면서 플랫폼별 경제·광고 정책만 데이터로 분기할 수 있다. |
다양한 방식이 있고, Excel to Json이 더 좋은 방법으로 들었지만…
일단 여기서는 엑셀 데이터를 CSV 형식으로 저장하여 Unity에서 사용하는 방법을 소개하겠다.
파이프라인 개요
- 저자 영역: 구글 스프레드시트·Excel에서 데이터를 작성 →
CSV
로 Export- 에셋 영역: 프로젝트의
Assets/StreamingAssets
(런타임 수정 필요 시) 또는Assets/Resources
(빌드 포함만 필요 시)에 저장- 로더 영역: 런타임에
TextAsset
(Resources) 혹은File.ReadAllText
(StreamingAssets)로 로드, 파싱 → 도메인 오브젝트(CardData 등) 생성 → Dictionary/List 캐싱- 게임 로직: CardManager·ItemFactory 같은 시스템이 해당 캐시를 참조하여 동작
아래는 카드 데이터를 CSV로 관리한다고 가정한 간단한 구현이다.
먼저 데이터 클래스를 정의한다.
[Serializable]
public class CardData
{
public string Id; // csv: card_id
public string Name; // csv: name
public string Type; // csv: type
public string Value; // csv: Value
}
그리고 CSV파일을 읽어올 CSV 로더를 구현한다.