본문 바로가기

Unreal 게임 개발41

Unreal 직렬화 직렬화(Serialization) Object나 연결된 Object의 묶음(Object 그래프)을 바이트 스트림으로 변환하는 과정 복잡한 데이터를 일렬로 세우기 때문에 직렬화라고 한다. Serialization: Object 그래프에서 바이트 스트림 Deserialization: 바이트 스트림에서 Object 그래프 직렬화 장점 프로그램 상태를 저장하고 복원 가능 (게임 저장) 객체의 정보를 클립보드에 복사해 다른 프로그램에 전송 가능 네트워크를 통해 현재 프로그램의 상태를 다른 컴퓨터에 복원 가능 (멀티플레이어 게임) 데이터 압축, 암호화를 통해 데이터를 효율적이고 안전하게 보관 가능 Unreal에서 제공하는 직렬화 시스템 직렬화 시스템을 위해 제공하는 클래스 - FArhhive Shift( 2024. 1. 8.
Unreal 메모리 관리 (GC) GC( GarbageCollection)를 위한 객체 저장소 관리되는 모든 Unreal Object의 정보를 저장하는 전역 변수: GUObjectArray GUObjectArray의 각 요소는 Flag가 설정되어 있다. GC가 참고하는 Flag (물론 다른 Flag도 있다.) Garbage Flag: 다른 Unreal Object로부터 참조가 없어서 회수 예정인 Object RootSet Flag: 다른 Unreal Object로부터 참조가 없어도 회수하지 않는 Object GC는 GUObjectArray에 있는 Flag를 확인해 회수할 Object를 파악 후 메모리에서 제거함. GC의 메모리 회수 방식 GC는 지정된 시간에 따라(설정에서 변경 가능) 주기적으로 메모리 회수( Default = 60s) .. 2024. 1. 3.
Unreal Struct & Map Unreal Struct 관련 프로퍼티를 체계화 및 조작할 수 있는 데이터 구조체이다. 구조체를 통해 커스텀 변수 타입을 생성해서 프로젝트를 체계화할 수 있다. 데이터 저장/전송에 특화된 가벼운 객체이다. Struct는 단순한 데이터 타입에 적합하므로 보다 복잡한 인터렉션을 위혀서는 UObject or AActor 서브클래스가 낫다. 구조체 작성 예시 //UStruct라는 Unreal 특유의 메크로를 선언 BlueprintType이라는 키워드 추가로 해당 구조체를 BP와 호환도는 데이터 성격을 가진다. USTRUCT(BlueprintType) //F로 시작하기에 일반 객체로 취급한다. -> Reflection System에 의해서 관리받지 못한다. //활용이 보통 스택 내 데이터로 사용되기 때문에 관리받.. 2024. 1. 3.
Unreal Delegate 객체지향 결합 강한 결합 (Tight Coupling) 클래스들이 서로 의존성을 가지는 경우를 의미한다. 느슨한 결합 실물에 의존하지 않고 추상적 설계에 의존 (DIP 원칙) 강한 결합은 바로 전 글에서 나왔던 CreateDefaultSubobject()로 오브젝트를 추가하는 것과 비슷하다. 결국 생성자에서 오브젝트를 추가하면 해당 오브젝트는 반드시 그 오브젝트를 갖기 때문이다. 느슨한 결합에서는 Interface를 활용해서 설계가 가능하다. 이건 예시가 필요할거 같은데 강한 결합은 다음과 같다. class Card { public: Card(int InId) : Id(InId) int Id = 0; }; class Person { public: Person(Card InCard) : IdCard(InC.. 2023. 12. 29.