엔진이 필드를 추적해야 GC, 에디터 노출, SaveGame 플래그가 의도대로 작동합니다.
직렬화는 UPROPERTY로 보이는 값만 안정적으로 믿습니다
언리얼의 저장, 복제, GC는 리플렉션 정보를 바탕으로 움직이므로 C++ 멤버가 엔진에 보이는지 먼저 확인해야 합니다.
저장할 값은 UPROPERTY로 표시하고, UObject 참조는 직접 저장보다 Soft Reference나 안정적인 ID로 바꾸는 쪽이 안전합니다.
커스텀 바이너리 저장은 버전과 순서가 중요하므로 읽기와 쓰기 구조를 함께 관리합니다.
런타임 객체 포인터는 세션마다 달라질 수 있어 이름, 경로, GUID 같은 복원 키로 바꿉니다.
필드가 바뀌면 이전 저장 데이터를 읽을 변환 경로를 남겨 플레이어 데이터를 보호합니다.
- Raw pointer 저장 금지
- 안정적인 복원 키 사용
- 구버전 로드 테스트