게임 데이터 미들웨어 df_game_data는 스키마에 맞춰 데이터를 바이너리 파일로 만들고, 이를 불러오는 C 또는 C++ 헤더를 생성한다. 제작자는 MIT 라이선스로 저장소를 공개했으며, 가변 길이 데이터가 중첩돼도 배열 항목에 상수 시간(O(1))으로 접근하도록 설계했다고 설명한다.
문자열과 가변 길이 배열은 객체 안에 데이터 자체를 넣는 대신 파일의 다른 위치에 저장하고, 객체에는 위치 오프셋을 기록한다. 배열에는 항목 수도 저장한다. 이 방식으로 객체의 크기를 고정해 인덱스로 항목을 찾을 수 있다. 가변 데이터가 중첩되는 경우에는 데이터 벡터를 스택처럼 여러 층으로 두고, 각 층의 오프셋을 기록한 뒤 전체 데이터 작성이 끝나면 실제 위치를 계산해 채운다. 오프셋 0은 널 포인터로 처리해 선택적 필드도 표현한다.
사용자는 .def 파일에 구조체·유니온·열거형으로 스키마를 정의하고, 루트 데이터 형식의 레코드를 편집한 뒤 컴파일해 .bin 파일과 로더 헤더를 만든다. 필드에는 정수·실수·문자열·링크 등이 올 수 있으며, 각 필드는 고정 길이나 가변 길이 배열로 선언할 수 있다. 이름으로 레코드를 찾는 기능, 핫 리로딩, 난독화는 컴파일 설정으로 선택한다. 핫 리로딩은 레코드 이름 조회가 필요하며, C++에서는 레코드 객체에 이름 등을 저장하므로 객체가 더 무거워진다.
제작자는 이 도구가 모든 게임 데이터 요구를 해결하지는 않으며, 게임 엔진에 통합된 시스템과 달리 독립형 도구라고 밝혔다. 난독화는 파일의 데이터를 난수 생성기와 XOR하는 방식으로, 디스크에 저장된 데이터를 읽거나 수정하기 어렵게 할 뿐 메모리에서의 접근을 막지는 않는다. 파일 변조 검증 기능도 현재 없으며, 역호환성·순방향 호환성은 추가하면 유용할 기능으로 언급됐다. 기술 설계와 구현 설명에서 파일 형식과 로딩 방식도 확인할 수 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요