+ 이 글은 작성자가 직접 공부하고 복습하며 작성한 글입니다. 만약 직접 작성하지 않았다면, 꼭 출처를 밝히겠습니다!

 + 이 글은 개인적인 공부를 바탕으로 작성되었기에, 틀린 부분이 있을 수 있으며, 틀린 부분이 있다면 알려주시면 감사하겠습니다!

 + 이 글을 다른 곳으로 가져가신다면, 꼭 출처를 남겨주세요~

 + '참고사이트'는 공부하기 위해 참고한 사이트들을 모아 둔 것입니다.

 + 혹시라도 문제가 된다면 바로 조취를 취할테니, 말해주시면 감사하겠습니다!



Unreal 공부를 하면서 FArchiveFVariant에 대해서 알게되었는데, 이 부분에 관한 지식을 찾기위해 구글링을 해 본 결과, 제대로된 지식을 아직 못 얻었다...


뭔가 대충 느낌을 알거같긴한데...


그래서 그냥 개인 메모 형식으로 남겨둔다.


FArchive

Base class for archives that can be used for loading, saving, and garbage collecting in a byte order neutral way.


byte 순서 중립적인 방법(??? 무슨뜻인지 몰라서 직역하긴 했는데... 그냥 byte배열로 사용할 수 있는 건가??)으로 로딩, 저장, GC에 사용할 수 있는 기본 클래스.



FVariant

Implements an extensible union of multiple types.

Variant types can be used to store a range of different built-in types, as well as user defined types. The values are internally serialized into a byte array, which means that only FArchive serializable types are supported at this time.


다양한 타입의 확장 가능한 결합을 구현한다.

Variant타입은 다른 built-in type이나 유저가 정의한 타입 등 다양한 타입을 저장할 때 사용된다.

일반적으로 byte배열로 직렬화되는데, 사용할 수 있는 타입은 FArchive에서 직렬화할 수 있는 타입만 현재 가능하다.


FArchive의 상속 형태 (일부)

FArchive -> FMemoryArchive -> FMemoryWriter, FMemoryReader, FMemoryObject -> ...

... -> FMemoryWriter -> FBufferArchive(TArray를 상속)


FArchive -> FBufferReaderBase -> FBufferReader -> ...

FArchive -> FBufferWriter -> ...

FArchive -> FMemoryArchive -> ...





 + Unreal에서 Binary data를 표현할 때, 기본적으로 uint8의 동적 배열을 사용한다.

각 클래스의 멤버함수 데이터 형을 보면 대부분 uint8 / TArray<uint8>로 되어있는 것을 보면 알 수 있다.



 + FVariant를 사용하는 엔진 코드를 좀 보면, 여러 형태의 데이터를 직렬화해서 함수등으로 전달할 때 사용하고 있다.



 + 여러 자료를 찾아보거나 엔진 코드의 일부분을 봤을 때, 내가 느낀 사용법은,

FVariant FArchive둘 다 직렬화에 사용되는 Class인 것 같고,

FVariant데이터를 주고 받기 위해서 사용한다면,

FArchive데이터 저장, Hard Disk와 주고받기 위해 사용되는 개념인 듯 하다



어우... 진짜 파악하기 힘드네. 대체 어떻게 찾아 공부해야하는거야...? Unreal Docs에 예제 좀 넣어주면 어디 덧나나;;;;; 진짜 불편;;;


 + Unreal Wiki에 Rama라는 사람이 올린 Game Data Save/Load관련 글이 있는데... 이걸 보면 좀 느낌이 더 올지도!

근데 아직 실력이 부족해서 잘 못알아보겠다... 실력을 키우자 ㅠㅠ

 -> https://wiki.unrealengine.com/Save_System,_Read_%26_Write_Any_Data_to_Compressed_Binary_Files



아직 공부가 너무 부족하다... 다른 엔진 코드를 확인하던지해서 공부하자 ㅠㅠ


혹시 잘 아시는 분이 있다면... 알려주시면 감사하겠습니다 ㅠㅠ






Copyright © -강정이좋아- 무단 전재 및 재배포는 하지 말아주세요.

+ Recent posts