게임 개발 메모장
[ UE5 ] 직렬화 역직렬화 본문
직렬화(Serialization)이란?
컴퓨터 과학의 데이터 스토리지 문맥에서 데이터 구조나
오브젝트 상태를 동일하거나
다른 컴퓨터 환경에 저장(이를테면 파일이나 메모리 버퍼에서,
또는 네트워크 연결 링크 간 전송)하고 나중에 재구성할 수 있는
포맷으로 변환하는 과정이다.
오브젝트를 직렬화하는 과정은 오브젝트를 마샬링한다고도 한다.
반대로 일련의 바이트로부터 데이터 구조를 추출하는 일은
역직렬화(Deserialization)이라고 한다.
<위키백과 - 직렬화>
위키백과의 내용을 이해하기 쉽게 한 줄로 요약하면 아래와 같다.
직렬화는 객체를 파일의 형태 등으로 저장하거나,
통신하기 쉬운 포맷으로 변환하는 과정을 의미한다.
Serialization의 'Serial' 은 연쇄. 연속해서 이어지는 어떤 것을 의미한다.
이런 'Serial' 이라는 단어는 한국어로 직렬이라고 한다.
직렬화의 대상인 Object는 메모리에 있고 형태가 추상적이다.
그래서 이런 Object를 string 혹은 바이트(bytes) 형태로 직렬화를 해준다.
이렇게 직렬화를 거쳐 일련의 형태를 가진 데이터를 파일로 저장하거나
클라이언트에게 전송할 수 있다.
역직렬화(Deserialization)란?
말그대로 직렬화 되어있는 데이터를 역으로 직렬화 하는 것을 의미한다.
직렬화를 하는 과정에서 Json 형식으로 직렬화 할 지
아니면 Bytes 형식으로 할 지 정했다.
반대로 역직렬화를 할 때는 일련의 형식을 가진 데이터를 읽거나
메모리에 쓸 수 있도록 변환하는 것이다.
이런 직렬화 포맷에는 아래와 같은 형식들이 대표적이다.
Json
XML
CSV
Byte
여기서 Json, XML, CSV는 사람이 읽을 수 있는 형태이다.
하지만 string 형태로 저장이 되기 때문에 저장 공간의 효율성이 떨어지고,
비교적 파싱하는 시간이 오래 걸린다고 한다.
반대로 Binary 직렬화는 사람이 읽기 힘든 형태이다.
하지만 저장 공간을 효율적으로 사용할 수 있고,
비교적 파싱하는 시간이 빠르다고 한다.
직렬화를 하는 이유
디스크에 저장되어 있는 데이터는 직렬화를 거치면서
파싱이 가능한 유의미한 데이터가 된다.
이런 직렬화된 데이터를 특정 대상의 컴퓨터에 전송하면,
해당 포맷에 맞게 파싱을 해서 읽거나 쓰기가 가능하다.
이런 직렬화 포맷은 특정의 포맷이 성능상 더 좋아서 사용 하는 것이 아닌,
각 산업 분야에 맞춰서 사용하고 있다.
예를 들면 실시간 데이터 전송의 성능이 중요한
멀티플레이 RPG 게임은 바이너리 직렬화를 사용한다.
하지만 웹 개발에서는 대부분 Json 포맷을 사용하고 있다.
'언리얼 엔진 > 정보' 카테고리의 다른 글
[ UE5 ] FPS 게임에 대해서 (1) | 2024.01.02 |
---|---|
[ UE5 ] 언리얼에서 절대 Raw Pointer를 사용하지마라 (0) | 2024.01.01 |
[ UE5 ] Visual Studio 용법 (0) | 2024.01.01 |
[ UE5 ] 언리얼 엔진 Visual Studio 세팅 (0) | 2023.12.31 |
[ UE5 ] FPS 게임에서 '프레임'의 중요성 (1) | 2023.12.23 |