초고교급 희망

[13강] 언리얼 직렬화 본문

Game/Unreal

[13강] 언리얼 직렬화

연모링 2024. 2. 8. 00:34
728x90

직렬화

오브젝트나 연결된 오브젝트의 묶음 →바이트 스트림으로 변환

시리얼라이제이션 : 오브젝트 그래프 → 바이트 스트림

디시리얼라이제이션 : 반대

장점

  • 게임의 저장
  • 객체 정보 복사, 다른 프로그램에 전송
  • 네트워크. 현재 정보 다른 컴퓨터에 복원
  • 압축, 암호화. 데이터를 효율적 안전하게 보관

고려할 점

  • 데이터 레이아웃
  • 이식성
  • 버전 관리
  • 성능: (회전처리: 양자화)
  • 보안
  • 에러 처리

언리얼의 직렬화

아카이브 클래스 (FArchive)

<<

  • 메모리 아카이브
  • 파일 아카이브
  • 언리얼 오브젝트 아카이브

JSON 직렬화

JavaScript Object Notation

JSON 장점

  • 데이터 크기가 가볍다
  • 읽기 편하다
  • 웹 통신의 표준

단점

  • 지원하는 타입이 몇 개 안 됨(문자, 숫자, 불리언, 널, 배열, 오브젝트)
  • 텍스트 형식만 사용 가능

언리얼 엔진의 Json, JsonUtilities 라이브러리 활용

언리얼 스마트 포인터 라이브러리 개요

  • 일반 C++ 오브젝트의 포인터 문제를 해결해주는 언리얼 엔진의 라이브러리
  • TUniquePtr(유니크포인터): 지정한 곳에서만 메모리를 관리
    • 특정 오브젝트에게 명확하게 포인터 해지 권한을 주고 싶은 경우
    • delete 구문 없이 함수 실행 후 자동으로 소멸시키고 싶을 때
  • TSharedPtr(공유포인터): 더 이상 사용되지 않으면 자동으로 메모리를 해지하는 포인터
    • 여러 로직에서 할당된 오브젝트가 공유해서 사용되는 경우
    • 다른 함수로부터 할당된 오브젝트를 Out으로 받는 경우
    • Null 일 수 있다.
  • TSharedRef(공유 레퍼런스): 공유 포인터와 동일하지만 유효한 객체를 항상 보장받는 레퍼런스
    • 여러 로직에서 할당된 오브젝트가 공유해서 사용되는 경우
    • Not Null을 보장받으며 오브젝트를 편리하게 사용하고 싶은 경우
728x90