본문 바로가기
언리얼5 & C++

[언리얼5] Data Table 로더 만들기 *1부* (CSV) with Python / 데이터 작성하기

by 17번 일개미 2024. 1. 24.
728x90
Data Table 로더 란?

 

  • CSV 혹은 JSON 형태로 저장된 게임 데이터를 Unreal Engine 에서 사용 가능한 Data Table Asset 으로 전환한다.
  • 이 글에서는 CSV를 기반으로 제작하였다.
  • CSV 혹은 JSON 을 바로 엔진에 Import 도 가능하지만, 테이블이 많고, 자주 추가될 때 번거로움을 줄이고자 이 과정을 자동화하는 것에 의의가 있다.
  • 기본적으로 데이터를 Import 하기 위해서는 Data Table Asset 을 생성하기 위한 'Structure' 가 필요하다. 이 Structure 는 FTableRowBase 라는 언리얼 엔진 스크립트를 상속받아 작성한 구조체여야 한다. 이 구조체를 테이블이 추가될 때 마다 일일히 작성하기 번거로우므로 충분히 자동화할 가치가 있다.
  • 언리얼 엔진은 Python 스크립트를 통한 에디터 확장을 제공한다. 이를 사용한다.
  • 이 툴은 개인의 생각으로 만든 것이기에 부족함이나 오류가 있을 수 있다.

 

 

 

1. 엑셀을 사용한 데이터 작성


엑셀을 사용하였지만, 엑셀이 아닌 어떤 도구를 사용해도 CSV를 만들 수 만 있다면 상관없다.

먼저 아래와 같은 형태로 데이터를 작성할 것이다.

 

엑셀로 작성한 테스트 데이터

 

 

엑셀 작성 규칙은 다음과 같다.

  • 데이터가 작성되는 첫 행에는 데이터 타입이 들어간다. (int, float ...)
  • 타입이 들어간 다음 행에는 해당 타입을 가질 '열의 이름' 이 들어간다. (Id, Power, Hp, Mp...)
  • Id 열은 고유한 Key 값이므로 중복을 제거한다.
  • 테이블로 사용할 작성된 영역에서는 빈 셀이 존재하면 안된다. 즉, 위 사진에서 102번 Id 를 가진 행에서 Power 가 비어있으면 안된다. 데이터가 무의미하거나 없다면 숫자 '0' 이라도 적어야 한다.
  • 위 사진의 1 ~ 8 행 처럼 빈 공간은 테이블 작성자의 자유로운 메모 영역으로 사용가능하나, 문자열 "Id" 만 있는 셀이 존재해서는 안된다. 'Id' 셀은 항상 고유해야한다.

 

이 규칙은 본인이 정한 규칙이므로,

사용 목적에 맞게 테이블을 작성하는 사람과 협의를 통해 규칙을 정하면 된다.

단, 이 규칙에 따라 Tool 의 코드 또한 규칙에 맞게 수정해야할 것이다.

 

 

데이터가 작성되었다면, 해당 파일을 메모장과 같은 편집기로 열어보면 다음과 같은 형태로 보일 것이다.

메모장으로 읽은 CSV

 

콤마 구분을 사용한 CSV 파일이라 열 구분이 콤마로 출력된다.

혹시, 엑셀을 CSV 로 저장하는 법을 모르겠다면 엑셀에서 [다른 이름으로 저장 - CSV] 를 사용하면 된다.

그래도 모르겠다면 검색을 해보고, 이 글에서는 설명하지 않겠다.

 

여기까지 하면 데이터 준비는 끝났다.

 

 

2024.01.24 - [언리얼5 & C++] - [언리얼5] Data Table 로더 만들기 *2부* (CSV) with Python / C++ 구조체 생성기 작성하기

 

[언리얼5] Data Table 로더 만들기 *2부* (CSV) with Python / C++ 구조체 생성기 작성하기

C++ 테이블 구조체란? 언리얼에서 Data Table Asset 을 만들거나 CSV 혹은 JSON 형태의 데이터를 Import 시키기 위해서는 베이스가 될 구조체를 반드시 고르게 되어 있다. 엔진에서 기본적으로 제공하는

wildgoosechase.tistory.com

 

728x90