개요

데이터 드리븐에 대해서 이해하고

간단한 코드를 구현한다.

데이터 드리븐이란?

데이터-드리븐 설계(또는 데이터 중심 설계)는 “코드는 최대한 일반화하고, 구체적인 게임 밸런스·컨텐츠·규칙은 외부 데이터에서 읽어 와서 결정한다”는 철학이다.

다시 말해 로직콘텐츠를 분리해 디자이너·밸런서·라이브 오퍼가 코드 수정 없이 숫자만 바꿔도 게임을 바꿀 수 있도록 하는 구조다. 이 패턴이 널리 쓰이는 이유는 아래와 같다.

이점 세부 설명
빠른 반복 스프레드시트에서 값 수정 → CSV 내보내기 → 런타임 리로드 만으로 밸런스 조정이 가능하다.
리스크 감소 코드에 하드코딩된 “매직 넘버”가 사라져 빌드 오류와 버전 충돌을 줄인다.
라이브 업데이트 용이 서버·패치 툴·원격 Config와 연계하면 앱 업데이트 없이 밸런스 핫픽스를 배포할 수 있다.
멀티 플랫폼 확장 동일 로직을 유지하면서 플랫폼별 경제·광고 정책만 데이터로 분기할 수 있다.

다양한 방식이 있고, Excel to Json이 더 좋은 방법으로 들었지만…

일단 여기서는 엑셀 데이터를 CSV 형식으로 저장하여 Unity에서 사용하는 방법을 소개하겠다.

Unity에서 CSV → 객체 변환 파이프라인 설계

파이프라인 개요

  1. 저자 영역: 구글 스프레드시트·Excel에서 데이터를 작성 → CSV로 Export
  2. 에셋 영역: 프로젝트의 Assets/StreamingAssets(런타임 수정 필요 시) 또는 Assets/Resources(빌드 포함만 필요 시)에 저장
  3. 로더 영역: 런타임에 TextAsset(Resources) 혹은 File.ReadAllText(StreamingAssets)로 로드, 파싱 → 도메인 오브젝트(CardData 등) 생성 → Dictionary/List 캐싱
  4. 게임 로직: 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 로더를 구현한다.